balazske updated this revision to Diff 200901. balazske added a comment. Rebase to current master.
Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D60465/new/ https://reviews.llvm.org/D60465 Files: lib/AST/ASTImporter.cpp 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<DeclContext>(From); ASTNodeImporter Importer(*this); if (auto *ToRecord = dyn_cast<RecordDecl>(To)) { if (!ToRecord->getDefinition()) { return Importer.ImportDefinition( - cast<RecordDecl>(FromDC), ToRecord, + cast<RecordDecl>(From), ToRecord, ASTNodeImporter::IDK_Everything); } } @@ -8377,14 +8375,14 @@ if (auto *ToEnum = dyn_cast<EnumDecl>(To)) { if (!ToEnum->getDefinition()) { return Importer.ImportDefinition( - cast<EnumDecl>(FromDC), ToEnum, ASTNodeImporter::IDK_Everything); + cast<EnumDecl>(From), ToEnum, ASTNodeImporter::IDK_Everything); } } if (auto *ToIFace = dyn_cast<ObjCInterfaceDecl>(To)) { if (!ToIFace->getDefinition()) { return Importer.ImportDefinition( - cast<ObjCInterfaceDecl>(FromDC), ToIFace, + cast<ObjCInterfaceDecl>(From), ToIFace, ASTNodeImporter::IDK_Everything); } } @@ -8392,12 +8390,15 @@ if (auto *ToProto = dyn_cast<ObjCProtocolDecl>(To)) { if (!ToProto->getDefinition()) { return Importer.ImportDefinition( - cast<ObjCProtocolDecl>(FromDC), ToProto, + cast<ObjCProtocolDecl>(From), ToProto, ASTNodeImporter::IDK_Everything); } } - return Importer.ImportDeclContext(FromDC, true); + if (auto *FromDC = dyn_cast<DeclContext>(From)) + return Importer.ImportDeclContext(FromDC, true); + + return Error::success(); } Expected<DeclarationName> ASTImporter::Import(DeclarationName FromName) {
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<DeclContext>(From); ASTNodeImporter Importer(*this); if (auto *ToRecord = dyn_cast<RecordDecl>(To)) { if (!ToRecord->getDefinition()) { return Importer.ImportDefinition( - cast<RecordDecl>(FromDC), ToRecord, + cast<RecordDecl>(From), ToRecord, ASTNodeImporter::IDK_Everything); } } @@ -8377,14 +8375,14 @@ if (auto *ToEnum = dyn_cast<EnumDecl>(To)) { if (!ToEnum->getDefinition()) { return Importer.ImportDefinition( - cast<EnumDecl>(FromDC), ToEnum, ASTNodeImporter::IDK_Everything); + cast<EnumDecl>(From), ToEnum, ASTNodeImporter::IDK_Everything); } } if (auto *ToIFace = dyn_cast<ObjCInterfaceDecl>(To)) { if (!ToIFace->getDefinition()) { return Importer.ImportDefinition( - cast<ObjCInterfaceDecl>(FromDC), ToIFace, + cast<ObjCInterfaceDecl>(From), ToIFace, ASTNodeImporter::IDK_Everything); } } @@ -8392,12 +8390,15 @@ if (auto *ToProto = dyn_cast<ObjCProtocolDecl>(To)) { if (!ToProto->getDefinition()) { return Importer.ImportDefinition( - cast<ObjCProtocolDecl>(FromDC), ToProto, + cast<ObjCProtocolDecl>(From), ToProto, ASTNodeImporter::IDK_Everything); } } - return Importer.ImportDeclContext(FromDC, true); + if (auto *FromDC = dyn_cast<DeclContext>(From)) + return Importer.ImportDeclContext(FromDC, true); + + return Error::success(); } Expected<DeclarationName> ASTImporter::Import(DeclarationName FromName) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits