diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-06-25 21:42:33 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-06-25 21:42:33 +0000 |
| commit | 1e02a5aac82a41db5092998349f2fc4de459da19 (patch) | |
| tree | ede4840ab374ce2ca5c8d7c76ea60f520dade7cb /clang/test/Modules/merge-class-definition-visibility.cpp | |
| parent | e4aedb55d696ef9f02b1d511ca48c66a4c48f9d5 (diff) | |
| download | bcm5719-llvm-1e02a5aac82a41db5092998349f2fc4de459da19.tar.gz bcm5719-llvm-1e02a5aac82a41db5092998349f2fc4de459da19.zip | |
[modules] Properly merge visibility of class definitions that got merged while
parsing then merged again when the module was loaded.
llvm-svn: 240700
Diffstat (limited to 'clang/test/Modules/merge-class-definition-visibility.cpp')
| -rw-r--r-- | clang/test/Modules/merge-class-definition-visibility.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/clang/test/Modules/merge-class-definition-visibility.cpp b/clang/test/Modules/merge-class-definition-visibility.cpp index e8602c0d548..ac4c9515844 100644 --- a/clang/test/Modules/merge-class-definition-visibility.cpp +++ b/clang/test/Modules/merge-class-definition-visibility.cpp @@ -1,15 +1,23 @@ // RUN: rm -rf %t // RUN: %clang_cc1 -fmodules -fmodule-map-file=%S/Inputs/merge-class-definition-visibility/modmap \ // RUN: -I%S/Inputs/merge-class-definition-visibility \ -// RUN: -fmodules-cache-path=%t %s -verify +// RUN: -fmodules-cache-path=%t %s -verify \ +// RUN: -fmodules-local-submodule-visibility // expected-no-diagnostics #include "c.h" template<typename T> struct X { T t; }; typedef X<A> XA; +struct B; -#include "d.h" -// Ensure that this triggers the import of the second definition from d.h, +#include "e.h" +// Ensure that this triggers the import of the second definition from e.h, // which is necessary to make the definition of A visible in the template // instantiation. XA xa; + +// Ensure that we make the definition of B visible. We made the parse-merged +// definition from e.h visible, which makes the definition from d.h visible, +// and that definition was merged into the canonical definition from b.h, +// so that becomes visible, and we have a visible definition. +B b; |

