Home | History | Annotate | Download | only in Modules
      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
      9 
     10 #ifndef MERGE_LATE
     11 // expected-no-diagnostics
     12 #include "a.h"
     13 #endif
     14 
     15 #include "x.h"
     16 
     17 #ifdef MERGE_LATE
     18 namespace N {
     19   enum { A } a; // expected-note {{candidate}}
     20   // expected-note (at) a.h:1 {{candidate}} (from module B.b)
     21 }
     22 #include "a.h"
     23 #endif
     24 
     25 N::E e = N::A;
     26 #ifdef MERGE_LATE
     27 // expected-error@-2 {{ambiguous}}
     28 #endif
     29