summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-03-26 01:24:28 +0000
committerAnders Carlsson <andersca@mac.com>2009-03-26 01:24:28 +0000
commit137108da15574b56300e0da84c9e5a190e65fd3b (patch)
treee3dd3ab9e0576f11baed5baab2af9b7943182eb9 /clang
parent5558ca1d4f61b655ec1676a7061e478ea97a97d2 (diff)
downloadbcm5719-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.cpp3
-rw-r--r--clang/test/SemaCXX/access.cpp12
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}}
+};
OpenPOWER on IntegriCloud