brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 4c7b5df Raw
104 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 5int ptr(unsigned idx) {6  int * ptr = new int[1];7// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int>"8  int a;9  a = ptr[idx];10  return a;11}12 13int ptr_to_const(unsigned idx) {14  const int * ptr = new int[1];15// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:14}:"std::span<int const>"16  int a;17  a = ptr[idx];18  return a;19}20 21int const_ptr(unsigned idx) {22  int * const ptr = new int[1];23  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int>"24  int a;25  a = ptr[idx];26  return a;27}28 29int const_ptr_to_const(unsigned idx) {30  const int * const ptr = new int[1];31  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:14}:"std::span<int const>"32  int a;33  a = ptr[idx];34  return a;35}36 37int ptr_to_const_volatile(unsigned idx) {38  const volatile int * ptr = new int[1];39// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:23}:"std::span<int const volatile>"40  int a;41  a = ptr[idx];42  return a;43}44 45int const_volatile_ptr(unsigned idx) {46  int * const volatile ptr = new int[1];47  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:8}:"std::span<int>"48  int a;49  a = ptr[idx];50  return a;51}52 53int const_volatile_ptr_to_const_volatile(unsigned idx) {54  const volatile int * const volatile ptr = new int[1];55  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:23}:"std::span<int const volatile>"56  int a;57  a = ptr[idx];58  return a;59}60 61typedef const int * my_const_int_star;62int typedef_ptr_to_const(unsigned idx) {63  my_const_int_star ptr = new int[1];64  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:65  int a;66  a = ptr[idx];67  return a;68}69 70typedef int * const my_int_star_const;71int typedef_const_ptr(unsigned idx) {72  my_int_star_const ptr = new int[1];73  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:74  int a;75  a = ptr[idx];76  return a;77}78 79typedef const int * const my_const_int_star_const;80int typedef_const_ptr_to_const(unsigned idx) {81  my_const_int_star_const ptr = new int[1];82  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:83  int a;84  a = ptr[idx];85  return a;86}87 88int ptr_to_decltype(unsigned idx) {89  int a;90  decltype(a) * ptr = new int[1];91// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:16}:"std::span<decltype(a)>"92  a = ptr[idx];93  return a;94}95 96int decltype_ptr(unsigned idx) {97  int * p;98  decltype(p) ptr = new int[1];99// CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:100  int a;101  a = ptr[idx];102  return a;103}104