Index: lib/AST/ASTImporter.cpp =================================================================== --- lib/AST/ASTImporter.cpp +++ lib/AST/ASTImporter.cpp @@ -2746,13 +2746,13 @@ } // Create the imported function. + SourceLocation StartLoc = Importer.Import(D->getInnerLocStart()); TypeSourceInfo *TInfo = Importer.Import(D->getTypeSourceInfo()); FunctionDecl *ToFunction = nullptr; if (CXXConstructorDecl *FromConstructor = dyn_cast(D)) { ToFunction = CXXConstructorDecl::Create(Importer.getToContext(), cast(DC), - D->getInnerLocStart(), - NameInfo, T, TInfo, + StartLoc, NameInfo, T, TInfo, FromConstructor->isExplicit(), D->isInlineSpecified(), D->isImplicit(), @@ -2760,16 +2760,14 @@ } else if (isa(D)) { ToFunction = CXXDestructorDecl::Create(Importer.getToContext(), cast(DC), - D->getInnerLocStart(), - NameInfo, T, TInfo, + StartLoc, NameInfo, T, TInfo, D->isInlineSpecified(), D->isImplicit()); } else if (CXXConversionDecl *FromConversion = dyn_cast(D)) { ToFunction = CXXConversionDecl::Create(Importer.getToContext(), cast(DC), - D->getInnerLocStart(), - NameInfo, T, TInfo, + StartLoc, NameInfo, T, TInfo, D->isInlineSpecified(), FromConversion->isExplicit(), D->isConstexpr(), @@ -2777,16 +2775,15 @@ } else if (CXXMethodDecl *Method = dyn_cast(D)) { ToFunction = CXXMethodDecl::Create(Importer.getToContext(), cast(DC), - D->getInnerLocStart(), - NameInfo, T, TInfo, + StartLoc, NameInfo, T, TInfo, Method->getStorageClass(), Method->isInlineSpecified(), D->isConstexpr(), Importer.Import(D->getLocEnd())); } else { ToFunction = FunctionDecl::Create(Importer.getToContext(), DC, - D->getInnerLocStart(), - NameInfo, T, TInfo, D->getStorageClass(), + StartLoc, NameInfo, T, TInfo, + D->getStorageClass(), D->isInlineSpecified(), D->hasWrittenPrototype(), D->isConstexpr()); @@ -3310,6 +3307,8 @@ } SmallVector SelLocs; D->getSelectorLocs(SelLocs); + for (SourceLocation &Loc : SelLocs) + Loc = Importer.Import(Loc); ToMethod->setMethodParams(Importer.getToContext(), ToParams, SelLocs); ToMethod->setLexicalDeclContext(LexicalDC); @@ -4610,8 +4609,8 @@ if (T.isNull()) return nullptr; - return ToContext.getTrivialTypeSourceInfo(T, - FromTSI->getTypeLoc().getLocStart()); + return ToContext.getTrivialTypeSourceInfo( + T, Import(FromTSI->getTypeLoc().getLocStart())); } Decl *ASTImporter::Import(Decl *FromD) {