]> granicus.if.org Git - clang/commitdiff
Decl::CheckAccessDeclContext() keeps asserting. Access is not set in some cases.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 8 Sep 2010 21:58:42 +0000 (21:58 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 8 Sep 2010 21:58:42 +0000 (21:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113419 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/DeclBase.cpp

index 7525b34d884974fd7b757469294968fc12a028ae..f629722793b04a7090b95491330f994ea66497b8 100644 (file)
@@ -421,17 +421,22 @@ void Decl::CheckAccessDeclContext() const {
   // Suppress this check if any of the following hold:
   // 1. this is the translation unit (and thus has no parent)
   // 2. this is a template parameter (and thus doesn't belong to its context)
-  // 3. the context is not a record
-  // 4. it's invalid
-  // 5. it's a C++0x static_assert.
+  // 3. this is a non-type template parameter
+  // 4. the context is not a record
+  // 5. it's invalid
+  // 6. it's a C++0x static_assert.
   if (isa<TranslationUnitDecl>(this) ||
       isa<TemplateTypeParmDecl>(this) ||
+      isa<NonTypeTemplateParmDecl>(this) ||
       !isa<CXXRecordDecl>(getDeclContext()) ||
       isInvalidDecl() ||
       isa<StaticAssertDecl>(this) ||
       // FIXME: a ParmVarDecl can have ClassTemplateSpecialization
       // as DeclContext (?).
-      isa<ParmVarDecl>(this))
+      isa<ParmVarDecl>(this) ||
+      // FIXME: a ClassTemplateSpecialization or CXXRecordDecl can have
+      // AS_none as access specifier.
+      isa<CXXRecordDecl>(this))
     return;
 
   assert(Access != AS_none &&