1- // RUN: %clang_cc1 -std=c++20 %s -verify=cxx20
2- // RUN: %clang_cc1 -std=c++23 %s -verify=cxx23
3- // RUN: %clang_cc1 -std=c++23 -Wpre-c++23-compat %s -verify=precxx23
4- // RUN: %clang_cc1 -std=c++23 -pedantic %s -verify=cxx23
5-
6- // cxx23-no-diagnostics
1+ // RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++20 %s -verify=cxx20
2+ // RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++23 %s -verify=cxx23
3+ // RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++23 -Wpre-c++23-compat %s -verify=precxx23
4+ // RUN: %clang_cc1 -triple aarch64-unknown-linux-gnu -target-feature +sme -std=c++23 -pedantic %s -verify=cxx23
75
86auto L1 = [] constexpr {};
97// cxx20-warning@-1 {{lambda without a parameter clause is a C++23 extension}}
@@ -14,3 +12,25 @@ auto L3 = [] static {};
1412// cxx20-warning@-1 {{lambda without a parameter clause is a C++23 extension}}
1513// cxx20-warning@-2 {{static lambdas are a C++23 extension}}
1614// precxx23-warning@-3 {{static lambdas are incompatible with C++ standards before C++23}}
15+
16+ namespace GH161070 {
17+ void 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+
27+ void 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+ }
0 commit comments