1 // RUN: cp %s %t 2 // RUN: %clang_cc1 -x c++ -fsyntax-only -Wunused-lambda-capture -Wno-unused-value -std=c++1z -fixit %t 3 // RUN: grep -v CHECK %t | FileCheck %s 4 5 void test() { 6 int i = 0; 7 int j = 0; 8 int k = 0; 9 int c = 10; 10 int a[c]; 11 12 [i,j] { return i; }; 13 // CHECK: [i] { return i; }; 14 [i,j] { return j; }; 15 // CHECK: [j] { return j; }; 16 [&i,j] { return j; }; 17 // CHECK: [j] { return j; }; 18 [j,&i] { return j; }; 19 // CHECK: [j] { return j; }; 20 [i,j,k] {}; 21 // CHECK: [] {}; 22 [i,j,k] { return i + j; }; 23 // CHECK: [i,j] { return i + j; }; 24 [i,j,k] { return j + k; }; 25 // CHECK: [j,k] { return j + k; }; 26 [i,j,k] { return i + k; }; 27 // CHECK: [i,k] { return i + k; }; 28 [i,j,k] { return i + j + k; }; 29 // CHECK: [i,j,k] { return i + j + k; }; 30 [&,i] { return k; }; 31 // CHECK: [&] { return k; }; 32 [=,&i] { return k; }; 33 // CHECK: [=] { return k; }; 34 [=,&i,&j] { return j; }; 35 // CHECK: [=,&j] { return j; }; 36 [=,&i,&j] { return i; }; 37 // CHECK: [=,&i] { return i; }; 38 [z = i] {}; 39 // CHECK: [] {}; 40 [i,z = i] { return z; }; 41 // CHECK: [z = i] { return z; }; 42 [z = i,i] { return z; }; 43 // CHECK: [z = i] { return z; }; 44 [&a] {}; 45 // CHECK: [] {}; 46 [i,&a] { return i; }; 47 // CHECK: [i] { return i; }; 48 [&a,i] { return i; }; 49 // CHECK: [i] { return i; }; 50 51 #define I_MACRO() i 52 #define I_REF_MACRO() &i 53 [I_MACRO()] {}; 54 // CHECK: [] {}; 55 [I_MACRO(),j] { return j; }; 56 // CHECK: [j] { return j; }; 57 [j,I_MACRO()] { return j; }; 58 // CHECK: [j] { return j; }; 59 [I_REF_MACRO(),j] { return j; }; 60 // CHECK: [j] { return j; }; 61 [j,I_REF_MACRO()] { return j; }; 62 // CHECK: [j] { return j; }; 63 64 int n = 0; 65 [z = (n = i),j] {}; 66 // CHECK: [z = (n = i)] {}; 67 [j,z = (n = i)] {}; 68 // CHECK: [z = (n = i)] {}; 69 } 70 71 class ThisTest { 72 void test() { 73 int i = 0; 74 75 [this] {}; 76 // CHECK: [] {}; 77 [i,this] { return i; }; 78 // CHECK: [i] { return i; }; 79 [this,i] { return i; }; 80 // CHECK: [i] { return i; }; 81 [*this] {}; 82 // CHECK: [] {}; 83 [*this,i] { return i; }; 84 // CHECK: [i] { return i; }; 85 [i,*this] { return i; }; 86 // CHECK: [i] { return i; }; 87 [*this] { return this; }; 88 // CHECK: [*this] { return this; }; 89 [*this,i] { return this; }; 90 // CHECK: [*this] { return this; }; 91 [i,*this] { return this; }; 92 // CHECK: [*this] { return this; }; 93 } 94 }; 95