diff options
author | Aleksei Sidorin <a.sidorin@samsung.com> | 2018-01-09 14:25:05 +0000 |
---|---|---|
committer | Aleksei Sidorin <a.sidorin@samsung.com> | 2018-01-09 14:25:05 +0000 |
commit | f4716937d35eace985f93feccd8fc9447242c7fa (patch) | |
tree | 00e1b1384e8bf894d26ad3dd40d9c06bc88e49f2 /clang | |
parent | 0583641ed96c07f83a06229f9606700592df32a8 (diff) |
[ASTImporter] Fix missing SourceLoc import for ObjCMethodDecl selectors
Patch by Nico Rieck, test case by Sean Callanan!
Differential Revision: https://reviews.llvm.org/D6550
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/AST/ASTImporter.cpp | 6 | ||||
-rw-r--r-- | clang/test/ASTMerge/interface/Inputs/interface1.m | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index cca43eed3e6..11d31156b8e 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -2857,9 +2857,13 @@ Decl *ASTNodeImporter::VisitObjCMethodDecl(ObjCMethodDecl *D) { ToParams[I]->setOwningFunction(ToMethod); ToMethod->addDeclInternal(ToParams[I]); } + SmallVector<SourceLocation, 12> 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/clang/test/ASTMerge/interface/Inputs/interface1.m b/clang/test/ASTMerge/interface/Inputs/interface1.m index 5865c0eff07..6192150089f 100644 --- a/clang/test/ASTMerge/interface/Inputs/interface1.m +++ b/clang/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 |