95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
| // 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; };
 | |
|   }
 | |
| };
 |