summaryrefslogtreecommitdiff
path: root/clang/rename.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'clang/rename.cxx')
-rw-r--r--clang/rename.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/rename.cxx b/clang/rename.cxx
index dfe3bda..1078c6a 100644
--- a/clang/rename.cxx
+++ b/clang/rename.cxx
@@ -452,7 +452,16 @@ public:
if (const clang::RecordDecl* pDecl = pExpr->getType()->getAsCXXRecordDecl())
{
std::string aName = pDecl->getNameAsString();
- RewriteText(pExpr->getExprLoc(), aName.length(), aName);
+ /*
+ * Avoid turning
+ * const C c2( GetC() );
+ * into
+ * const ns::C c2( ns::CetC() );
+ */
+ const clang::ASTContext& rContext = pDecl->getASTContext();
+ llvm::StringRef rTokenName = clang::Lexer::getSourceText(clang::CharSourceRange::getTokenRange(pExpr->getExprLoc()), rContext.getSourceManager(), rContext.getLangOpts());
+ if (rTokenName.startswith(aName))
+ RewriteText(pExpr->getExprLoc(), aName.length(), aName);
}
return true;