// RUN: cp %s %t // RUN: %clang_cc1 -x c++ -fsyntax-only -Wunused-lambda-capture -Wno-unused-value -std=c++1z -fixit %t // RUN: grep -v CHECK %t | FileCheck %s void test() { int i = 0; int j = 0; int k = 0; int c = 10; int a[c]; [i,j] { return i; }; // CHECK: [i] { return i; }; [i,j] { return j; }; // CHECK: [j] { return j; }; [&i,j] { return j; }; // CHECK: [j] { return j; }; [j,&i] { return j; }; // CHECK: [j] { return j; }; [i,j,k] {}; // CHECK: [] {}; [i,j,k] { return i + j; }; // CHECK: [i,j] { return i + j; }; [i,j,k] { return j + k; }; // CHECK: [j,k] { return j + k; }; [i,j,k] { return i + k; }; // CHECK: [i,k] { return i + k; }; [i,j,k] { return i + j + k; }; // CHECK: [i,j,k] { return i + j + k; }; [&,i] { return k; }; // CHECK: [&] { return k; }; [=,&i] { return k; }; // CHECK: [=] { return k; }; [=,&i,&j] { return j; }; // CHECK: [=,&j] { return j; }; [=,&i,&j] { return i; }; // CHECK: [=,&i] { return i; }; [z = i] {}; // CHECK: [] {}; [i,z = i] { return z; }; // CHECK: [z = i] { return z; }; [z = i,i] { return z; }; // CHECK: [z = i] { return z; }; [&a] {}; // CHECK: [] {}; [i,&a] { return i; }; // CHECK: [i] { return i; }; [&a,i] { return i; }; // CHECK: [i] { return i; }; #define I_MACRO() i #define I_REF_MACRO() &i [I_MACRO()] {}; // CHECK: [] {}; [I_MACRO(),j] { return j; }; // CHECK: [j] { return j; }; [j,I_MACRO()] { return j; }; // CHECK: [j] { return j; }; [I_REF_MACRO(),j] { return j; }; // CHECK: [j] { return j; }; [j,I_REF_MACRO()] { return j; }; // CHECK: [j] { return j; }; int n = 0; [z = (n = i),j] {}; // CHECK: [z = (n = i)] {}; [j,z = (n = i)] {}; // CHECK: [z = (n = i)] {}; } class ThisTest { void test() { int i = 0; [this] {}; // CHECK: [] {}; [i,this] { return i; }; // CHECK: [i] { return i; }; [this,i] { return i; }; // CHECK: [i] { return i; }; [*this] {}; // CHECK: [] {}; [*this,i] { return i; }; // CHECK: [i] { return i; }; [i,*this] { return i; }; // CHECK: [i] { return i; }; [*this] { return this; }; // CHECK: [*this] { return this; }; [*this,i] { return this; }; // CHECK: [*this] { return this; }; [i,*this] { return this; }; // CHECK: [*this] { return this; }; } };