From a73e14275375d8a4ec28fe432fc6b52739b03abe Mon Sep 17 00:00:00 2001 From: Aleksei Sidorin Date: Tue, 9 Jan 2018 14:25:05 +0000 Subject: [PATCH] [ASTImporter] Fix missing SourceLoc import for ObjCMethodDecl selectors Patch by Nico Rieck, test case by Sean Callanan! Differential Revision: https://reviews.llvm.org/D6550 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322079 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/ASTImporter.cpp | 6 +++++- test/ASTMerge/interface/Inputs/interface1.m | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index cca43eed3e..11d31156b8 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -2857,9 +2857,13 @@ Decl *ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) { ToParams[I]->setOwningFunction(ToMethod); ToMethod->addDeclInternal(ToParams[I]); } + SmallVector SelLocs; D->getSelectorLocs(SelLocs); - ToMethod->setMethodParams(Importer.getToContext(), ToParams, SelLocs); + for (SourceLocation &Loc : SelLocs) + Loc = Importer.Import(Loc); + + ToMethod->setMethodParams(Importer.getToContext(), ToParams, SelLocs); ToMethod->setLexicalDeclContext(LexicalDC); Importer.Imported(D, ToMethod); diff --git a/test/ASTMerge/interface/Inputs/interface1.m b/test/ASTMerge/interface/Inputs/interface1.m index 5865c0eff0..6192150089 100644 --- a/test/ASTMerge/interface/Inputs/interface1.m +++ b/test/ASTMerge/interface/Inputs/interface1.m @@ -100,4 +100,6 @@ @implementation I15 : I12 @end - +@interface ImportSelectorSLoc { } +-(int)addInt:(int)a toInt:(int)b moduloInt:(int)c; // don't crash here +@end -- 2.40.0