diff options
Diffstat (limited to 'test/Modules/macros.c')
-rw-r--r-- | test/Modules/macros.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/test/Modules/macros.c b/test/Modules/macros.c index 92ea88a..538d4a8 100644 --- a/test/Modules/macros.c +++ b/test/Modules/macros.c @@ -1,9 +1,7 @@ // RUN: rm -rf %t -// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros_top %S/Inputs/module.map -// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros_left %S/Inputs/module.map -// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros_right %S/Inputs/module.map -// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros %S/Inputs/module.map // RUN: %clang_cc1 -fmodules -x objective-c -verify -fmodules-cache-path=%t -I %S/Inputs %s +// RUN: %clang_cc1 -fmodules -x objective-c -verify -fmodules-cache-path=%t -I %S/Inputs %s -detailed-preprocessing-record +// RUN: %clang_cc1 -fmodules -DLOCAL_VISIBILITY -fmodules-local-submodule-visibility -x objective-c++ -verify -fmodules-cache-path=%t -I %S/Inputs %s // RUN: not %clang_cc1 -E -fmodules -x objective-c -fmodules-cache-path=%t -I %S/Inputs %s | FileCheck -check-prefix CHECK-PREPROCESSED %s // FIXME: When we have a syntax for modules in C, use that. // These notes come from headers in modules, and are bogus. @@ -13,6 +11,7 @@ // expected-note@Inputs/macros_right.h:12{{expanding this definition of 'LEFT_RIGHT_DIFFERENT'}} // expected-note@Inputs/macros_right.h:13{{expanding this definition of 'LEFT_RIGHT_DIFFERENT2'}} // expected-note@Inputs/macros_left.h:14{{other definition of 'LEFT_RIGHT_DIFFERENT'}} +// expected-note@Inputs/macros_left.h:11{{other definition of 'LEFT_RIGHT_DIFFERENT2'}} @import macros; @@ -28,6 +27,10 @@ # error MODULE macro should not be visible #endif +#ifndef INDIRECTLY_IN_MACROS +# error INDIRECTLY_IN_MACROS should be visible +#endif + // CHECK-PREPROCESSED: double d double d; DOUBLE *dp = &d; @@ -138,11 +141,20 @@ TOP_DEF_RIGHT_UNDEF *TDRUf() { return TDRUp; } int TOP_DEF_RIGHT_UNDEF; // ok, no longer defined -// FIXME: When macros_right.undef is built, macros_top is visible because -// the state from building macros_right leaks through, so macros_right.undef -// undefines macros_top's macro. -#ifdef TOP_RIGHT_UNDEF -# error TOP_RIGHT_UNDEF should not be defined +#ifdef LOCAL_VISIBILITY +// TOP_RIGHT_UNDEF should not be undefined, because macros_right.undef does +// not undefine macros_right's macro. +# ifndef TOP_RIGHT_UNDEF +# error TOP_RIGHT_UNDEF should still be defined +# endif +#else +// When macros_right.undef is built and local submodule visibility is not +// enabled, macros_top is visible because the state from building +// macros_right leaks through, so macros_right.undef undefines macros_top's +// macro. +# ifdef TOP_RIGHT_UNDEF +# error TOP_RIGHT_UNDEF should not be defined +# endif #endif @import macros_other; |