summaryrefslogtreecommitdiffstats
path: root/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/ARCMigrate/TransUnbridgedCasts.cpp')
-rw-r--r--clang/lib/ARCMigrate/TransUnbridgedCasts.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp b/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
index 72c0d8e7de3..f8bc5cf932c 100644
--- a/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
+++ b/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp
@@ -37,6 +37,7 @@
#include "clang/Analysis/DomainSpecific/CocoaConventions.h"
#include "clang/Sema/SemaDiagnostic.h"
#include "clang/AST/ParentMap.h"
+#include "clang/Lex/Lexer.h"
#include "clang/Basic/SourceManager.h"
#include "llvm/ADT/SmallString.h"
@@ -229,20 +230,26 @@ private:
}
} else {
assert(Kind == OBC_BridgeTransfer || Kind == OBC_BridgeRetained);
- StringRef cfBridging;
+ SmallString<32> BridgeCall;
+
+ Expr *WrapE = E->getSubExpr();
+ SourceLocation InsertLoc = WrapE->getLocStart();
+
+ SourceManager &SM = Pass.Ctx.getSourceManager();
+ char PrevChar = *SM.getCharacterData(InsertLoc.getLocWithOffset(-1));
+ if (Lexer::isIdentifierBodyChar(PrevChar, Pass.Ctx.getLangOpts()))
+ BridgeCall += ' ';
+
if (Kind == OBC_BridgeTransfer)
- cfBridging = "CFBridgingRelease";
+ BridgeCall += "CFBridgingRelease";
else
- cfBridging = "CFBridgingRetain";
+ BridgeCall += "CFBridgingRetain";
- Expr *WrapE = E->getSubExpr();
- SourceLocation insertLoc = WrapE->getLocStart();
if (isa<ParenExpr>(WrapE)) {
- TA.insert(insertLoc, cfBridging);
+ TA.insert(InsertLoc, BridgeCall);
} else {
- std::string withParens = cfBridging;
- withParens += '(';
- TA.insert(insertLoc, withParens);
+ BridgeCall += '(';
+ TA.insert(InsertLoc, BridgeCall);
TA.insertAfterToken(WrapE->getLocEnd(), ")");
}
}
OpenPOWER on IntegriCloud