[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Modules / merge-enumerators.cpp
blob10e1914bd7b847b98dede73e1b034e3535ef9bf3
1 // RUN: rm -rf %t
2 // RUN: mkdir %t
3 // RUN: echo 'namespace N { enum E { A }; }' > %t/a.h
4 // RUN: echo '#include "a.h"' > %t/b.h
5 // RUN: touch %t/x.h
6 // RUN: echo 'module B { module b { header "b.h" } module x { header "x.h" } }' > %t/b.modulemap
7 // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x c++ -fmodule-map-file=%t/b.modulemap %s -I%t -verify -fmodules-local-submodule-visibility
8 // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x c++ -fmodule-map-file=%t/b.modulemap %s -I%t -verify -fmodules-local-submodule-visibility -DMERGE_LATE
10 #ifndef MERGE_LATE
11 // expected-no-diagnostics
12 #include "a.h"
13 #endif
15 #include "x.h"
17 #ifdef MERGE_LATE
18 namespace N {
19 enum { A } a; // expected-note {{candidate}}
20 // expected-note@a.h:1 {{candidate}} (from module B.b)
22 #include "a.h"
23 #endif
25 N::E e = N::A;
26 #ifdef MERGE_LATE
27 // expected-error@-2 {{ambiguous}}
28 #endif