xref: /aosp_15_r20/external/clang/test/Modules/no-linkage.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: rm -rf %t
2*67e74705SXin Li // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fmodules-local-submodule-visibility -I%S/Inputs/no-linkage -fmodule-map-file=%S/Inputs/no-linkage/module.modulemap %s -verify
3*67e74705SXin Li 
4*67e74705SXin Li #include "empty.h"
5*67e74705SXin Li 
6*67e74705SXin Li namespace NS { int n; } // expected-note {{candidate}}
7*67e74705SXin Li struct Typedef { int n; }; // expected-note {{candidate}}
8*67e74705SXin Li int AliasDecl; // expected-note {{candidate}}
9*67e74705SXin Li int UsingDecl; // expected-note {{candidate}}
10*67e74705SXin Li namespace RealNS = NS; // expected-note {{candidate}}
11*67e74705SXin Li typedef int Struct; // expected-note {{candidate}}
12*67e74705SXin Li enum { Variable }; // expected-note {{candidate}}
13*67e74705SXin Li const int AnotherNS = 0; // expected-note {{candidate}}
14*67e74705SXin Li const int Enumerator = 0; // expected-note {{candidate}}
15*67e74705SXin Li static int Overloads; // expected-note {{candidate}}
16*67e74705SXin Li 
17*67e74705SXin Li // [email protected]:1 {{candidate}}
18*67e74705SXin Li // [email protected]:2 {{candidate}}
19*67e74705SXin Li // [email protected]:3 {{candidate}}
20*67e74705SXin Li // [email protected]:4 {{candidate}}
21*67e74705SXin Li // [email protected]:5 {{candidate}}
22*67e74705SXin Li // [email protected]:6 {{candidate}}
23*67e74705SXin Li // [email protected]:7 {{candidate}}
24*67e74705SXin Li // [email protected]:8 {{candidate}}
25*67e74705SXin Li // [email protected]:9 {{candidate}}
26*67e74705SXin Li // [email protected]:10 {{candidate}}
27*67e74705SXin Li // [email protected]:11 {{candidate}}
28*67e74705SXin Li 
29*67e74705SXin Li void use(int);
use_things()30*67e74705SXin Li void use_things() {
31*67e74705SXin Li   use(Typedef().n);
32*67e74705SXin Li   use(NS::n);
33*67e74705SXin Li   use(AliasDecl);
34*67e74705SXin Li   use(UsingDecl);
35*67e74705SXin Li   use(RealNS::n);
36*67e74705SXin Li   use(Struct(0));
37*67e74705SXin Li   use(Variable);
38*67e74705SXin Li   use(AnotherNS);
39*67e74705SXin Li   use(Enumerator);
40*67e74705SXin Li   use(Overloads);
41*67e74705SXin Li }
42*67e74705SXin Li 
43*67e74705SXin Li #include "decls.h"
44*67e74705SXin Li 
use_things_again()45*67e74705SXin Li void use_things_again() {
46*67e74705SXin Li   use(Typedef().n); // expected-error {{ambiguous}}
47*67e74705SXin Li   use(NS::n); // expected-error {{ambiguous}}
48*67e74705SXin Li   use(AliasDecl); // expected-error {{ambiguous}}
49*67e74705SXin Li   use(UsingDecl); // expected-error {{ambiguous}}
50*67e74705SXin Li   use(RealNS::n); // expected-error {{ambiguous}}
51*67e74705SXin Li   use(Struct(0)); // expected-error {{ambiguous}}
52*67e74705SXin Li   use(Variable); // expected-error {{ambiguous}}
53*67e74705SXin Li   use(AnotherNS); // expected-error {{ambiguous}}
54*67e74705SXin Li   use(Enumerator); // expected-error {{ambiguous}}
55*67e74705SXin Li   use(Overloads); // expected-error {{ambiguous}}
56*67e74705SXin Li }
57