Improve our semantic error recovery.
When an error made a record member invalid, the record would stay as "isBeingDefined" and not "completeDefinition". Even easily recoverable errors ended up propagating records in such "beingDefined" state, for example: struct A { ~A() const; // expected-error {{'const' qualifier is not allowed on a destructor}} }; struct B : A {}; // A & B would stay as "not complete definition" and "being defined". This weird state was impending lookups in the records and hitting assertion in the ASTWriter. Part of rdar://11007039 llvm-svn: 152432
Showing
- clang/lib/Sema/SemaDecl.cpp 30 additions, 6 deletionsclang/lib/Sema/SemaDecl.cpp
- clang/lib/Sema/SemaLookup.cpp 0 additions, 4 deletionsclang/lib/Sema/SemaLookup.cpp
- clang/test/Index/pch-with-errors.c 14 additions, 2 deletionsclang/test/Index/pch-with-errors.c
- clang/test/SemaCXX/PR9460.cpp 3 additions, 3 deletionsclang/test/SemaCXX/PR9460.cpp
Loading
Please register or sign in to comment