summaryrefslogtreecommitdiffstats
path: root/clang/lib/ARCMigrate/ObjCMT.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/ARCMigrate/ObjCMT.cpp')
-rw-r--r--clang/lib/ARCMigrate/ObjCMT.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp
index 5d538300228..bd6e97c781b 100644
--- a/clang/lib/ARCMigrate/ObjCMT.cpp
+++ b/clang/lib/ARCMigrate/ObjCMT.cpp
@@ -585,11 +585,19 @@ void ObjCMigrateASTConsumer::migrateMethodInstanceType(ASTContext &Ctx,
!IDecl->lookupInheritedClass(&Ctx.Idents.get("NSDictionary")))
return;
- TypeSourceInfo *TSInfo = OM->getResultTypeSourceInfo();
- TypeLoc TL = TSInfo->getTypeLoc();
- SourceRange R = SourceRange(TL.getBeginLoc(), TL.getEndLoc());
+ SourceRange R;
+ std::string ClassString;
+ if (TypeSourceInfo *TSInfo = OM->getResultTypeSourceInfo()) {
+ TypeLoc TL = TSInfo->getTypeLoc();
+ R = SourceRange(TL.getBeginLoc(), TL.getEndLoc());
+ ClassString = "instancetype";
+ }
+ else {
+ R = SourceRange(OM->getLocStart(), OM->getLocStart());
+ ClassString = OM->isInstanceMethod() ? '-' : '+';
+ ClassString += " (instancetype)";
+ }
edit::Commit commit(*Editor);
- std::string ClassString = "instancetype";
commit.replace(R, ClassString);
Editor->commit(commit);
}
OpenPOWER on IntegriCloud