summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-11-17 03:02:41 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-11-17 03:02:41 +0000
commit10568d8c1c81a513b50db5990b8cd770db60ed61 (patch)
treebf42376911892941bab8a7d9c8dd3cc132b1fd74 /clang/test
parent4efa3952a9feb1ba7cbcf37745c282f90f77cb29 (diff)
downloadbcm5719-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.h6
-rw-r--r--clang/test/Modules/no-linkage.cpp25
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}}
}
OpenPOWER on IntegriCloud