diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-27 01:37:43 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-27 01:37:43 +0000 |
commit | a523022b5384d7a0901beea7a5f36ee9c09ba339 (patch) | |
tree | 32093f3879b65f4fb8eddf0cc4d1c80942c4af51 /clang/test | |
parent | c9ee4de6ca41023b9231c234917d284ee8e87da9 (diff) | |
download | bcm5719-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.h | 4 | ||||
-rw-r--r-- | clang/test/Modules/submodules-merge-defs.cpp | 5 |
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; |