summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-03-27 01:37:43 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-03-27 01:37:43 +0000
commita523022b5384d7a0901beea7a5f36ee9c09ba339 (patch)
tree32093f3879b65f4fb8eddf0cc4d1c80942c4af51 /clang/test
parentc9ee4de6ca41023b9231c234917d284ee8e87da9 (diff)
downloadbcm5719-llvm-a523022b5384d7a0901beea7a5f36ee9c09ba339.tar.gz
bcm5719-llvm-a523022b5384d7a0901beea7a5f36ee9c09ba339.zip
[modules] Handle defining a tag with a typedef name for linkage purposes on top of an existing imported-but-not-visible definition.
llvm-svn: 233345
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/Inputs/submodules-merge-defs/defs.h4
-rw-r--r--clang/test/Modules/submodules-merge-defs.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
index dfb58adcbcd..16f71840d0a 100644
--- a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
+++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
@@ -14,3 +14,7 @@ template<int N> struct C_Base { struct D { constexpr operator int() const { retu
const int C_Const = 0;
struct C1 : C_Base<C_Base<0>::D{}> {} extern c1;
struct C2 : C_Base<C_Const<0>::D{} extern c2;
+
+typedef struct { int a; void f(); struct X; } D;
+struct D::X { int dx; } extern dx;
+namespace { inline int use_dx(D::X dx) { return dx.dx; } }
diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp
index 9b5b13d63fc..cdda48ea652 100644
--- a/clang/test/Modules/submodules-merge-defs.cpp
+++ b/clang/test/Modules/submodules-merge-defs.cpp
@@ -18,6 +18,10 @@ C1 pre_c1; // expected-error +{{must be imported}} expected-error {{must use 'st
C2 pre_c2; // expected-error +{{must be imported}} expected-error {{must use 'struct'}}
// expected-note@defs.h:16 +{{here}}
+D::X pre_dx; // expected-error +{{must be imported}}
+// expected-note@defs.h:18 +{{here}}
+// expected-note@defs.h:19 +{{here}}
+
// Make definitions from second module visible.
#include "import-and-redefine.h"
@@ -26,3 +30,4 @@ B::Inner2 post_bi;
C_Base<1> post_cb1;
C1 c1;
C2 c2;
+D::X post_dx;
OpenPOWER on IntegriCloud