diff options
Diffstat (limited to 'clang/rename.cxx')
-rw-r--r-- | clang/rename.cxx | 11 |
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; |