brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 2509c61 Raw
125 lines · cpp
1// RUN: %clang_cc1 -std=c++20 -Wunsafe-buffer-usage -fdiagnostics-parseable-fixits -fsafe-buffer-usage-suggestions %s 2>&1 | FileCheck %s2 3void foo1a() {4  int *r = new int[7];5  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:6  int *p = new int[4];7  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:8  p = r;9  int tmp = p[9];10  int *q;11  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:12  q = r;  // FIXME: we do not fix `q = r` here as the `.data()` fix-it is not generally correct13}14 15void foo1b() {16  int *r = new int[7];17  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "18  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"19  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 7}"20  int *p = new int[4];21  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "22  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"23  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 4}"24  p = r;25  int tmp = p[9];26  int *q = new int[4];27  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "28  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"29  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 4}"30  q = r;31  tmp = q[9];32}33 34void foo1c() {35  int *r = new int[7];36  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:37  int *p = new int[4];38  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:39  p = r;  // FIXME: we do not fix `p = r` here as the `.data()` fix-it is not generally correct40  int tmp = r[9];41  int *q;42  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:43  q = r;44  tmp = q[9];45}46 47void foo2a() {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  int *p = new int[5];53  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "54  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"55  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 5}"56  int *q = new int[4];57  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "58  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"59  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 4}"60  p = q;61  int tmp = p[8];62  q = r;63}64 65void foo2b() {66  int *r = new int[7];67  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:68  int *p = new int[5];69  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:70  int *q = new int[4];71  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:72  p = q;  // FIXME: we do not fix `p = q` here as the `.data()` fix-it is not generally correct73  int tmp = q[8];74  q = r;75}76 77void foo2c() {78  int *r = new int[7];79  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "80  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"81  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 7}"82  int *p = new int[5];83  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "84  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"85  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 5}"86  int *q = new int[4];87  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "88  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"89  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:22-[[@LINE-3]]:22}:", 4}"90  p = q;91  int tmp = p[8];92  q = r;93  tmp = q[8];94}95 96void foo3a() {97  int *r = new int[7];98  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:99  int *p = new int[5];100  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:101  int *q = new int[4];102  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:103  q = p;  // FIXME: we do not fix `q = p` here as the `.data()` fix-it is not generally correct104  int tmp = p[8];105  q = r;106}107 108void foo3b() {109  int *r = new int[10];110  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "111  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"112  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:23-[[@LINE-3]]:23}:", 10}"113  int *p = new int[10];114  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "115  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"116  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:23-[[@LINE-3]]:23}:", 10}"117  int *q = new int[10];118  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int> "119  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:12-[[@LINE-2]]:12}:"{"120  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:23-[[@LINE-3]]:23}:", 10}"121  q = p;122  int tmp = q[8];123  q = r;124}125