diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-05-24 16:48:23 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-05-24 16:48:23 +0000 |
commit | 013a254a5b85cfb54066e4022649368689c9ab06 (patch) | |
tree | c41d728c37a4a0474b89d370013946bf2e0ca435 | |
parent | 8e0317eb6847c0039760b2bb81a3e17c8218bc30 (diff) |
[objcmt] Warn when modern objc migrator does not convert a NSNumber message because it requires a cast.
rdar://11525138
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157395 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/ARCMigrate/ObjCMT.cpp | 1 | ||||
-rw-r--r-- | lib/Edit/RewriteObjCFoundationAPI.cpp | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/ARCMigrate/ObjCMT.cpp b/lib/ARCMigrate/ObjCMT.cpp index e635274476..5107db834e 100644 --- a/lib/ARCMigrate/ObjCMT.cpp +++ b/lib/ARCMigrate/ObjCMT.cpp @@ -209,6 +209,7 @@ void ObjCMigrateASTConsumer::HandleTranslationUnit(ASTContext &Ctx) { } bool MigrateSourceAction::BeginInvocation(CompilerInstance &CI) { + CI.getDiagnostics().setIgnoreAllWarnings(true); CI.getPreprocessorOpts().DetailedRecord = true; CI.getPreprocessorOpts().DetailedRecordConditionalDirectives = true; return true; diff --git a/lib/Edit/RewriteObjCFoundationAPI.cpp b/lib/Edit/RewriteObjCFoundationAPI.cpp index 7445700cc4..9c00d9ea77 100644 --- a/lib/Edit/RewriteObjCFoundationAPI.cpp +++ b/lib/Edit/RewriteObjCFoundationAPI.cpp @@ -801,8 +801,14 @@ static bool rewriteToNumericBoxedExpression(const ObjCMessageExpr *Msg, } } - if (needsCast) + if (needsCast) { + DiagnosticsEngine &Diags = Ctx.getDiagnostics(); + // FIXME: Use a custom category name to distinguish migration diagnostics. + unsigned diagID = Diags.getCustomDiagID(DiagnosticsEngine::Warning, + "converting to boxing syntax requires a cast"); + Diags.Report(Msg->getExprLoc(), diagID) << Msg->getSourceRange(); return false; + } SourceRange ArgRange = OrigArg->getSourceRange(); commit.replaceWithInner(Msg->getSourceRange(), ArgRange); |