diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-11-17 03:02:41 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-11-17 03:02:41 +0000 |
commit | 10568d8c1c81a513b50db5990b8cd770db60ed61 (patch) | |
tree | bf42376911892941bab8a7d9c8dd3cc132b1fd74 /clang/test | |
parent | 4efa3952a9feb1ba7cbcf37745c282f90f77cb29 (diff) | |
download | bcm5719-llvm-10568d8c1c81a513b50db5990b8cd770db60ed61.tar.gz bcm5719-llvm-10568d8c1c81a513b50db5990b8cd770db60ed61.zip |
[modules] Fix some more cases where we used to reject a conflict between two
declarations that are not simultaneously visible, and where at least one of
them has internal/no linkage.
llvm-svn: 253283
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Modules/Inputs/no-linkage/decls.h | 6 | ||||
-rw-r--r-- | clang/test/Modules/no-linkage.cpp | 25 |
2 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/no-linkage/decls.h b/clang/test/Modules/Inputs/no-linkage/decls.h index 9e18e10ce99..c8d6de55f74 100644 --- a/clang/test/Modules/Inputs/no-linkage/decls.h +++ b/clang/test/Modules/Inputs/no-linkage/decls.h @@ -3,3 +3,9 @@ namespace NS = RealNS; typedef int Typedef; using AliasDecl = int; using RealNS::UsingDecl; +struct Struct {}; +extern int Variable; +namespace AnotherNS {} +enum X { Enumerator }; +void Overloads(); +void Overloads(int); diff --git a/clang/test/Modules/no-linkage.cpp b/clang/test/Modules/no-linkage.cpp index d4a9eaba403..1ec8f4075e4 100644 --- a/clang/test/Modules/no-linkage.cpp +++ b/clang/test/Modules/no-linkage.cpp @@ -7,11 +7,24 @@ namespace NS { int n; } // expected-note {{candidate}} struct Typedef { int n; }; // expected-note {{candidate}} int AliasDecl; // expected-note {{candidate}} int UsingDecl; // expected-note {{candidate}} +namespace RealNS = NS; // expected-note {{candidate}} +typedef int Struct; // expected-note {{candidate}} +enum { Variable }; // expected-note {{candidate}} +const int AnotherNS = 0; // expected-note {{candidate}} +const int Enumerator = 0; // expected-note {{candidate}} +static int Overloads; // expected-note {{candidate}} +// expected-note@decls.h:1 {{candidate}} // expected-note@decls.h:2 {{candidate}} // expected-note@decls.h:3 {{candidate}} // expected-note@decls.h:4 {{candidate}} // expected-note@decls.h:5 {{candidate}} +// expected-note@decls.h:6 {{candidate}} +// expected-note@decls.h:7 {{candidate}} +// expected-note@decls.h:8 {{candidate}} +// expected-note@decls.h:9 {{candidate}} +// expected-note@decls.h:10 {{candidate}} +// expected-note@decls.h:11 {{candidate}} void use(int); void use_things() { @@ -19,6 +32,12 @@ void use_things() { use(NS::n); use(AliasDecl); use(UsingDecl); + use(RealNS::n); + use(Struct(0)); + use(Variable); + use(AnotherNS); + use(Enumerator); + use(Overloads); } #include "decls.h" @@ -28,4 +47,10 @@ void use_things_again() { use(NS::n); // expected-error {{ambiguous}} use(AliasDecl); // expected-error {{ambiguous}} use(UsingDecl); // expected-error {{ambiguous}} + use(RealNS::n); // expected-error {{ambiguous}} + use(Struct(0)); // expected-error {{ambiguous}} + use(Variable); // expected-error {{ambiguous}} + use(AnotherNS); // expected-error {{ambiguous}} + use(Enumerator); // expected-error {{ambiguous}} + use(Overloads); // expected-error {{ambiguous}} } |