Author: hokein Date: Mon Sep 16 03:16:56 2019 New Revision: 371971 URL: http://llvm.org/viewvc/llvm-project?rev=371971&view=rev Log: [clangd] Fix a crash when renaming operator.
Summary: The renamelib uses a tricky way to calculate the end location by relying on decl name, this is incorrect for the overloaded operator (the name is "operator++" instead of "++"), which will cause out-of-file offset. We also disable renaming operator symbol, this case is tricky, and renamelib doesnt handle it properly. Reviewers: ilya-biryukov Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D67607 Modified: cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h Modified: cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h?rev=371971&r1=371970&r2=371971&view=diff ============================================================================== --- cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h (original) +++ cfe/trunk/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h Mon Sep 16 03:16:56 2019 @@ -122,8 +122,7 @@ private: ND, SourceRange(BeginLoc, EndLoc)); } bool visit(const NamedDecl *ND, SourceLocation Loc) { - return visit(ND, Loc, - Loc.getLocWithOffset(ND->getNameAsString().length() - 1)); + return visit(ND, Loc, Lexer::getLocForEndOfToken(Loc, 0, SM, LangOpts)); } }; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits