brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 58a95c9 Raw
101 lines · cpp
1// RUN: %clang_cc1 -std=c++20 -Wunsafe-buffer-usage \2// RUN:            -fsafe-buffer-usage-suggestions \3// RUN:            -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s4 5void bar(int * param) {}6 7void foo1a() {8  int *r = new int[7];9  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:10  int *p = new int[4];11  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:12  p = r;13  int tmp = p[9];14  int *q;15  q = r; // FIXME: we do not fix `q = r` here as the `.data()` fix-it is not generally correct16}17 18void uuc_if_body() {19  int *r = new int[7];20  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "21  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"22  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 7}"23  int *p = new int[4];24  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "25  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"26  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 4}"27  if (true)28    p = r;29  p[5] = 4;30}31 32void uuc_if_body1(bool flag) {33  int *r = new int[7];34  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "35  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"36  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 7}"37  int *p = new int[4];38  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "39  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"40  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 4}"41  if (flag) {42    p = r;43  }44  p[5] = 4;45}46 47void uuc_if_body2_ptr_init(bool flag) {48  int *r = new int[7];49  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "50  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"51  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 7}"52  if (flag) {53  } else {54    int* p = r;55    // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:5-[[@LINE-1]]:9}:"std::span<int>"56    // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:14-[[@LINE-2]]:14}:"{"57    // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:15-[[@LINE-3]]:15}:", <# placeholder #>}"58    p[5] = 4;59  }60}61 62void uuc_if_cond_no_unsafe_op() {63  int *r = new int[7];64  int *p = new int[4];65  if ((p = r)) {66    int x = 0;67  }68}69 70void uuc_if_cond_unsafe_op() {71  int *r = new int[7];72  int *p = new int[4];73  if ((p = r)) {74    p[3] = 2;75  }76}77 78void uuc_if_cond_unsafe_op1() {79  int *r = new int[7];80  int *p = new int[4];81  if ((p = r)) {82    r[3] = 2;83  }84}85 86void uuc_if_cond_unsafe_op2() {87  int *r = new int[7];88  int *p = new int[4];89  if ((p = r)) {90    r[3] = 2;91  }92  p[4] = 6;93}94 95void uuc_call1() {96  int *w = new int[4];97  int *y = new int[4];98  bar(w = y);99  w[5] = 0;100}101