]> granicus.if.org Git - clang/commitdiff
Fix for PR4794 (instantiating friend class decl); this version shouldn't
authorEli Friedman <eli.friedman@gmail.com>
Thu, 27 Aug 2009 19:11:42 +0000 (19:11 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Thu, 27 Aug 2009 19:11:42 +0000 (19:11 +0000)
cause any regressions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80277 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaTemplateInstantiateDecl.cpp
test/SemaTemplate/instantiate-friend-class.cpp

index a79742b5b1775e061e0d8781479a5b5fc66d1bfe..a0353e3c539ebeaa52015eb82f919db653da4ae8 100644 (file)
@@ -416,7 +416,11 @@ Decl *TemplateDeclInstantiator::VisitCXXRecordDecl(CXXRecordDecl *D) {
                             D->getLocation(), D->getIdentifier(),
                             D->getTagKeywordLoc(), PrevDecl);
   Record->setImplicit(D->isImplicit());
-  Record->setAccess(D->getAccess());
+  // FIXME: Check against AS_none is an ugly hack to work around the issue that
+  // the tag decls introduced by friend class declarations don't have an access
+  // specifier. Remove once this area of the code gets sorted out.
+  if (D->getAccess() != AS_none)
+    Record->setAccess(D->getAccess());
   if (!D->isInjectedClassName())
     Record->setInstantiationOfMemberClass(D);
 
index 424419d390ffdcf191edc26ab5affb633080ef96..9a4a73cc8a5270b48f362ff45a460f1152ddacb1 100644 (file)
@@ -1,5 +1,4 @@
 // RUN: clang-cc -fsyntax-only -verify %s
-// XFAIL
 // PR4794
 
 template <class T> class X