diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-09-09 19:05:14 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-09-09 19:05:14 +0000 |
commit | 2820e6923a3feae50f16218f25518c65444db346 (patch) | |
tree | 7cd99b4fd4d524656823213882ee4903dcebc52d /clang/test/Modules/module-private.cpp | |
parent | d22a1c6c95c1983da00f218937253bde5c89c390 (diff) | |
download | llvm-2820e6923a3feae50f16218f25518c65444db346.zip llvm-2820e6923a3feae50f16218f25518c65444db346.tar.gz llvm-2820e6923a3feae50f16218f25518c65444db346.tar.bz2 |
__module_private__ is inherited by redeclarations of an entity, and
must also be present of the first declaration of that entity.
llvm-svn: 139384
Diffstat (limited to 'clang/test/Modules/module-private.cpp')
-rw-r--r-- | clang/test/Modules/module-private.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/Modules/module-private.cpp b/clang/test/Modules/module-private.cpp index 689abd7..3ee59c8 100644 --- a/clang/test/Modules/module-private.cpp +++ b/clang/test/Modules/module-private.cpp @@ -63,4 +63,30 @@ int test_broken() { return hidden_var; // expected-error{{use of undeclared identifier 'hidden_var'}} } +// Check for private redeclarations of public entities. +template<typename T> +class public_class_template; // expected-note{{previous declaration is here}} + +template<typename T> +__module_private__ class public_class_template; // expected-error{{__module_private__ declaration of 'public_class_template' follows public declaration}} + + +typedef int public_typedef; // expected-note{{previous declaration is here}} +typedef __module_private__ int public_typedef; // expected-error{{__module_private__ declaration of 'public_typedef' follows public declaration}} + +extern int public_var; // expected-note{{previous declaration is here}} +extern __module_private__ int public_var; // expected-error{{__module_private__ declaration of 'public_var' follows public declaration}} + +void public_func(); // expected-note{{previous declaration is here}} +__module_private__ void public_func(); // expected-error{{__module_private__ declaration of 'public_func' follows public declaration}} + +template<typename T> +void public_func_template(); // expected-note{{previous declaration is here}} +template<typename T> +__module_private__ void public_func_template(); // expected-error{{__module_private__ declaration of 'public_func_template' follows public declaration}} + +struct public_struct; // expected-note{{previous declaration is here}} +__module_private__ struct public_struct; // expected-error{{__module_private__ declaration of 'public_struct' follows public declaration}} + + #endif |