diff options
author | John McCall <rjmccall@apple.com> | 2010-03-17 00:38:33 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-03-17 00:38:33 +0000 |
commit | db7bb4a4e7d9744cbc994c90932e6f056228e1ff (patch) | |
tree | 589a856734356eea69c640b850113437cbb7f183 /lib/Sema/SemaDecl.cpp | |
parent | 19b43e1ba9324cb08b730fa38d9be865e63771a2 (diff) |
Clean up after ourselves when there's an error parsing the base clause.
Fixes the crash-on-invalid in PR6629.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98698 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 5db817192f..f4b9cf4cde 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -5118,6 +5118,18 @@ void Sema::ActOnTagFinishDefinition(Scope *S, DeclPtrTy TagD, Consumer.HandleTagDeclDefinition(Tag); } +void Sema::ActOnTagDefinitionError(Scope *S, DeclPtrTy TagD) { + AdjustDeclIfTemplate(TagD); + TagDecl *Tag = cast<TagDecl>(TagD.getAs<Decl>()); + + Tag->setInvalidDecl(); + + if (isa<CXXRecordDecl>(Tag)) + FieldCollector->FinishClass(); + + PopDeclContext(); +} + // Note that FieldName may be null for anonymous bitfields. bool Sema::VerifyBitField(SourceLocation FieldLoc, IdentifierInfo *FieldName, QualType FieldTy, const Expr *BitWidth, |