xref: /llvm-project/clang/test/SemaCXX/cxx23-static-callop-lambda-expression.cpp (revision f34a5205aa481a6d9a15054bcc5f7b9875906a17)
15bdd5d06Sfaisal vali // RUN: %clang_cc1 -std=c++23 -fsyntax-only -verify %s
2*0b34d7e9STimm Bäder // RUN: %clang_cc1 -std=c++23 -fsyntax-only -verify %s -fexperimental-new-constant-interpreter
35bdd5d06Sfaisal vali 
45bdd5d06Sfaisal vali namespace ns1 {
__anone46ebcbe0102() 55bdd5d06Sfaisal vali   auto lstatic = []() static { return 3; };
65bdd5d06Sfaisal vali   int (*f2)(void) = lstatic;
75bdd5d06Sfaisal vali 
85bdd5d06Sfaisal vali }
95bdd5d06Sfaisal vali 
105bdd5d06Sfaisal vali namespace ns1_1 {
115bdd5d06Sfaisal vali 
125bdd5d06Sfaisal vali   auto lstatic = []() static consteval  //expected-error{{cannot take address of consteval call}} \
135bdd5d06Sfaisal vali                                           expected-note {{declared here}}
__anone46ebcbe0202() 145bdd5d06Sfaisal vali   { return 3; };
155bdd5d06Sfaisal vali 
165bdd5d06Sfaisal vali   // FIXME: the above error should indicate that it was triggered below.
175bdd5d06Sfaisal vali   int (*f2)(void) = lstatic;
185bdd5d06Sfaisal vali 
195bdd5d06Sfaisal vali }
205bdd5d06Sfaisal vali 
215bdd5d06Sfaisal vali 
225bdd5d06Sfaisal vali namespace ns2 {
__anone46ebcbe0302() 235bdd5d06Sfaisal vali   auto lstatic = []() static { return 3; };
245bdd5d06Sfaisal vali   constexpr int (*f2)(void) = lstatic;
255bdd5d06Sfaisal vali   static_assert(lstatic() == f2());
265bdd5d06Sfaisal vali }
275bdd5d06Sfaisal vali 
285bdd5d06Sfaisal vali namespace ns3 {
main()295bdd5d06Sfaisal vali   void main() {
305bdd5d06Sfaisal vali     static int x = 10;
315bdd5d06Sfaisal vali     auto L = []() static { return x; };
325bdd5d06Sfaisal vali   }
335bdd5d06Sfaisal vali }
34