p4.cpp revision 54042f1bd78f1f1ea86be7d4af541462e127d2ed
1// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify 2 3void missing_lambda_declarator() { 4 [](){}(); 5} 6 7template<typename T> T get(); 8 9void infer_void_return_type(int i) { 10 if (i > 17) 11 return []() { }(); 12 13 if (i > 11) 14 return []() { return; }(); 15 16 return [](int x) { 17 switch (x) { 18 case 0: return get<void>(); 19 case 1: return; 20 } 21 }(7); 22} 23 24struct X { }; 25 26X infer_X_return_type(X x) { 27 return [&x](int y) { // expected-warning{{omitted result type}} 28 if (y > 0) 29 return X(); 30 else 31 return x; 32 }(5); 33} 34 35X infer_X_return_type_fail(X x) { 36 return [x](int y) { // expected-warning{{omitted result type}} 37 if (y > 0) 38 return X(); 39 else // FIXME: shouldn't mention blocks 40 return x; // expected-error{{return type 'const X' must match previous return type 'X' when block literal has unspecified explicit return type}} 41 }(5); 42} 43