[clang] [Clang] Fix assertion failure in getASTRecordLayout for invalid declarations (PR #208153)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 15 06:16:09 PDT 2026
================
@@ -3384,9 +3384,30 @@ ASTContext::getASTRecordLayout(const RecordDecl *D) const {
// not a complete definition (which is what isCompleteDefinition() tests)
// until we *finish* parsing the definition.
D = D->getDefinition();
- assert(D && "Cannot get layout of forward declarations!");
- assert(!D->isInvalidDecl() && "Cannot get layout of invalid decl!");
- assert(D->isCompleteDefinition() && "Cannot layout type before complete!");
+
+ // Handle invalid declarations gracefully during error recovery
+ // This can happen when there are template specialization errors
----------------
AaronBallman wrote:
Why is the correct fix not to stop asking for the record layout of an invalid object in that case?
(We might still want these changes anyway because now we have things like clang-repl, but it seems odd to me that template specialization errors would warrant a change.)
https://github.com/llvm/llvm-project/pull/208153
More information about the cfe-commits
mailing list