Index: lib/AST/ASTImporter.cpp =================================================================== --- lib/AST/ASTImporter.cpp +++ lib/AST/ASTImporter.cpp @@ -8358,18 +8358,16 @@ } Error ASTImporter::ImportDefinition(Decl *From) { - ExpectedDecl ToOrErr = Import(From); - if (!ToOrErr) - return ToOrErr.takeError(); - Decl *To = *ToOrErr; + Decl *To; + if (Error Err = importInto(To, From)) + return Err; - auto *FromDC = cast(From); ASTNodeImporter Importer(*this); if (auto *ToRecord = dyn_cast(To)) { if (!ToRecord->getDefinition()) { return Importer.ImportDefinition( - cast(FromDC), ToRecord, + cast(From), ToRecord, ASTNodeImporter::IDK_Everything); } } @@ -8377,14 +8375,14 @@ if (auto *ToEnum = dyn_cast(To)) { if (!ToEnum->getDefinition()) { return Importer.ImportDefinition( - cast(FromDC), ToEnum, ASTNodeImporter::IDK_Everything); + cast(From), ToEnum, ASTNodeImporter::IDK_Everything); } } if (auto *ToIFace = dyn_cast(To)) { if (!ToIFace->getDefinition()) { return Importer.ImportDefinition( - cast(FromDC), ToIFace, + cast(From), ToIFace, ASTNodeImporter::IDK_Everything); } } @@ -8392,12 +8390,15 @@ if (auto *ToProto = dyn_cast(To)) { if (!ToProto->getDefinition()) { return Importer.ImportDefinition( - cast(FromDC), ToProto, + cast(From), ToProto, ASTNodeImporter::IDK_Everything); } } - return Importer.ImportDeclContext(FromDC, true); + if (auto *FromDC = dyn_cast(From)) + return Importer.ImportDeclContext(FromDC, true); + + return Error::success(); } Expected ASTImporter::Import(DeclarationName FromName) {