95 lines · cpp
1// RUN: cp %s %t2// RUN: %clang_cc1 -x c++ -Wunused-lambda-capture -Wno-unused-value -std=c++1z -fixit %t3// RUN: grep -v CHECK %t | FileCheck %s4 5void 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() i52 #define I_REF_MACRO() &i53 [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 71class 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