elsteveogrande created this revision. elsteveogrande added a reviewer: rsmith. Herald added a subscriber: cfe-commits.
For `TagDecl`s, complete or incomplete, allow `setInvalidDecl` calls. Other `assert`s are interfering but we'll deal with them separately. https://bugs.llvm.org/show_bug.cgi?id=38531 Repository: rC Clang https://reviews.llvm.org/D50943 Files: lib/AST/DeclBase.cpp Index: lib/AST/DeclBase.cpp =================================================================== --- lib/AST/DeclBase.cpp +++ lib/AST/DeclBase.cpp @@ -131,11 +131,12 @@ void Decl::setInvalidDecl(bool Invalid) { InvalidDecl = Invalid; - assert(!isa<TagDecl>(this) || !cast<TagDecl>(this)->isCompleteDefinition()); if (!Invalid) { return; } + assert(!isa<TagDecl>(this) || !cast<TagDecl>(this)->isCompleteDefinition()); + if (!isa<ParmVarDecl>(this)) { // Defensive maneuver for ill-formed code: we're likely not to make it to // a point where we set the access specifier, so default it to "public"
Index: lib/AST/DeclBase.cpp =================================================================== --- lib/AST/DeclBase.cpp +++ lib/AST/DeclBase.cpp @@ -131,11 +131,12 @@ void Decl::setInvalidDecl(bool Invalid) { InvalidDecl = Invalid; - assert(!isa<TagDecl>(this) || !cast<TagDecl>(this)->isCompleteDefinition()); if (!Invalid) { return; } + assert(!isa<TagDecl>(this) || !cast<TagDecl>(this)->isCompleteDefinition()); + if (!isa<ParmVarDecl>(this)) { // Defensive maneuver for ill-formed code: we're likely not to make it to // a point where we set the access specifier, so default it to "public"
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits