diff options
Diffstat (limited to 'test/Modules')
| -rw-r--r-- | test/Modules/odr_hash.cpp | 34 | ||||
| -rw-r--r-- | test/Modules/preprocess-module.cpp | 10 | ||||
| -rw-r--r-- | test/Modules/preprocess-nested.cpp | 2 | ||||
| -rw-r--r-- | test/Modules/preprocess-unavailable.cpp | 2 |
4 files changed, 42 insertions, 6 deletions
diff --git a/test/Modules/odr_hash.cpp b/test/Modules/odr_hash.cpp index 947583bcfd216..a6a0b74743aaa 100644 --- a/test/Modules/odr_hash.cpp +++ b/test/Modules/odr_hash.cpp @@ -866,6 +866,40 @@ S9 s9; #endif } +namespace TemplateSpecializationType { +#if defined(FIRST) +template <class T1> struct U1 {}; +struct S1 { + U1<int> u; +}; +#elif defined(SECOND) +template <class T1, class T2> struct U1 {}; +struct S1 { + U1<int, int> u; +}; +#else +S1 s1; +// expected-error@first.h:* {{'TemplateSpecializationType::S1::u' from module 'FirstModule' is not present in definition of 'TemplateSpecializationType::S1' in module 'SecondModule'}} +// expected-note@second.h:* {{declaration of 'u' does not match}} +#endif + +#if defined(FIRST) +template <class T1> struct U2 {}; +struct S2 { + U2<int> u; +}; +#elif defined(SECOND) +template <class T1> struct V1 {}; +struct S2 { + V1<int> u; +}; +#else +S2 s2; +// expected-error@first.h:* {{'TemplateSpecializationType::S2::u' from module 'FirstModule' is not present in definition of 'TemplateSpecializationType::S2' in module 'SecondModule'}} +// expected-note@second.h:* {{declaration of 'u' does not match}} +#endif +} + // Interesting cases that should not cause errors. struct S should not error // while struct T should error at the access specifier mismatch at the end. namespace AllDecls { diff --git a/test/Modules/preprocess-module.cpp b/test/Modules/preprocess-module.cpp index eaab3136938f9..9d1a2bb6801f7 100644 --- a/test/Modules/preprocess-module.cpp +++ b/test/Modules/preprocess-module.cpp @@ -14,8 +14,6 @@ // RUN: FileCheck %s --input-file %t/rewrite.ii --check-prefix=CHECK --check-prefix=REWRITE // Check that we can build a module from the preprocessed output. -// FIXME: For now, we need the headers to exist. -// RUN: touch %t/file.h %t/file2.h // RUN: %clang_cc1 -fmodules -fmodule-name=file -fmodule-file=%t/fwd.pcm -x c++-module-map-cpp-output %t/no-rewrite.ii -emit-module -o %t/no-rewrite.pcm // RUN: %clang_cc1 -fmodules -fmodule-name=file -fmodule-file=%t/fwd.pcm -x c++-module-map-cpp-output %t/rewrite.ii -emit-module -o %t/rewrite.pcm @@ -27,6 +25,8 @@ // Check the module we built works. // RUN: %clang_cc1 -fmodules -fmodule-file=%t/no-rewrite.pcm %s -I%t -verify -fno-modules-error-recovery // RUN: %clang_cc1 -fmodules -fmodule-file=%t/rewrite.pcm %s -I%t -verify -fno-modules-error-recovery -DREWRITE +// RUN: %clang_cc1 -fmodules -fmodule-file=%t/no-rewrite.pcm %s -I%t -verify -fno-modules-error-recovery -DINCLUDE -I%S/Inputs/preprocess +// RUN: %clang_cc1 -fmodules -fmodule-file=%t/rewrite.pcm %s -I%t -verify -fno-modules-error-recovery -DREWRITE -DINCLUDE -I%S/Inputs/preprocess // == module map @@ -102,7 +102,11 @@ __FILE *a; // expected-error {{declaration of '__FILE' must be imported}} // expected-note@no-rewrite.ii:1 {{here}} #endif +#ifdef INCLUDE +#include "file.h" +#else #pragma clang module import file +#endif FILE *b; -int x = file2; +int x = file2; // ok, found in file2.h, even under -DINCLUDE diff --git a/test/Modules/preprocess-nested.cpp b/test/Modules/preprocess-nested.cpp index 8fccf137e94f1..f26b65507ecef 100644 --- a/test/Modules/preprocess-nested.cpp +++ b/test/Modules/preprocess-nested.cpp @@ -8,8 +8,6 @@ // RUN: FileCheck %s --input-file %t/rewrite.ii --check-prefix=CHECK --check-prefix=REWRITE // Check that we can build a module from the preprocessed output. -// FIXME: For now, the files need to exist. -// RUN: touch %t/a.h %t/b.h %t/c.h // RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fmodule-name=nested -x c++-module-map-cpp-output %t/no-rewrite.ii -emit-module -o %t/no-rewrite.pcm // RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -fmodule-name=nested -x c++-module-map-cpp-output %t/rewrite.ii -emit-module -o %t/rewrite.pcm diff --git a/test/Modules/preprocess-unavailable.cpp b/test/Modules/preprocess-unavailable.cpp index e568cd7b5251a..cfd18253daf73 100644 --- a/test/Modules/preprocess-unavailable.cpp +++ b/test/Modules/preprocess-unavailable.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -x c++-module-map %s -fmodule-name=a -verify +// RUN: %clang_cc1 -x c++-module-map %s -fmodule-name=a -verify -std=c++98 module a { module b { requires cplusplus11 |
