37 lines · cpp
1// RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++20 %s -verify=cxx202// RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++23 %s -verify=cxx233// RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++23 -Wpre-c++23-compat %s -verify=precxx234// RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++23 -pedantic %s -verify=cxx235 6auto L1 = [] constexpr {};7// cxx20-warning@-1 {{lambda without a parameter clause is a C++23 extension}}8auto L2 = []() static {};9// cxx20-warning@-1 {{static lambdas are a C++23 extension}}10// precxx23-warning@-2 {{static lambdas are incompatible with C++ standards before C++23}}11auto L3 = [] static {};12// cxx20-warning@-1 {{lambda without a parameter clause is a C++23 extension}}13// cxx20-warning@-2 {{static lambdas are a C++23 extension}}14// precxx23-warning@-3 {{static lambdas are incompatible with C++ standards before C++23}}15 16namespace GH161070 {17void t1() { int a = [] __arm_streaming; }18// precxx23-error@-1 {{'__arm_streaming' cannot be applied to a declaration}}19// precxx23-error@-2 {{expected body of lambda expression}}20// cxx23-error@-3 {{'__arm_streaming' cannot be applied to a declaration}}21// cxx23-error@-4 {{expected body of lambda expression}}22// cxx20-error@-5 {{'__arm_streaming' cannot be applied to a declaration}}23// cxx20-error@-6 {{expected body of lambda expression}}24// cxx20-warning@-7 {{'__arm_streaming' in this position is a C++23 extension}}25// precxx23-warning@-8 {{'__arm_streaming' in this position is incompatible with C++ standards before C++23}}26 27void t2() { int a = [] [[assume(true)]]; }28// precxx23-error@-1 {{'assume' attribute cannot be applied to a declaration}}29// precxx23-error@-2 {{expected body of lambda expression}}30// cxx23-error@-3 {{'assume' attribute cannot be applied to a declaration}}31// cxx23-error@-4 {{expected body of lambda expression}}32// cxx20-error@-5 {{'assume' attribute cannot be applied to a declaration}}33// cxx20-error@-6 {{expected body of lambda expression}}34// cxx20-warning@-7 {{an attribute specifier sequence in this position is a C++23 extension}}35// precxx23-warning@-8 {{an attribute specifier sequence in this position is incompatible with C++ standards before C++23}}36}37