diff options
author | Anders Carlsson <andersca@mac.com> | 2009-03-26 01:24:28 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-03-26 01:24:28 +0000 |
commit | 137108da15574b56300e0da84c9e5a190e65fd3b (patch) | |
tree | e3dd3ab9e0576f11baed5baab2af9b7943182eb9 /clang | |
parent | 5558ca1d4f61b655ec1676a7061e478ea97a97d2 (diff) | |
download | bcm5719-llvm-137108da15574b56300e0da84c9e5a190e65fd3b.tar.gz bcm5719-llvm-137108da15574b56300e0da84c9e5a190e65fd3b.zip |
Set the access specifier for templates inside classes.
llvm-svn: 67726
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 3 | ||||
-rw-r--r-- | clang/test/SemaCXX/access.cpp | 12 |
2 files changed, 13 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index b8b1f3a5bb5..697582c82c3 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -503,6 +503,9 @@ Sema::ActOnClassTemplate(Scope *S, unsigned TagSpec, TagKind TK, NewClass, PrevClassTemplate); NewClass->setDescribedClassTemplate(NewTemplate); + // Set the access specifier. + SetMemberAccessSpecifier(NewTemplate, PrevClassTemplate, AS); + // Set the lexical context of these templates NewClass->setLexicalDeclContext(CurContext); NewTemplate->setLexicalDeclContext(CurContext); diff --git a/clang/test/SemaCXX/access.cpp b/clang/test/SemaCXX/access.cpp index d95781c1b76..cfbc9c80692 100644 --- a/clang/test/SemaCXX/access.cpp +++ b/clang/test/SemaCXX/access.cpp @@ -2,8 +2,8 @@ class C { struct S; // expected-note {{previously declared 'private' here}} - public: + struct S {}; // expected-error {{'S' redeclared with 'public' access}} }; @@ -12,4 +12,12 @@ struct S { private: class C { }; // expected-error {{'C' redeclared with 'private' access}} -};
\ No newline at end of file +}; + +class T { +protected: + template<typename T> struct A; // expected-note {{previously declared 'protected' here}} + +private: + template<typename T> struct A {}; // expected-error {{'A' redeclared with 'private' access}} +}; |