diff options
Diffstat (limited to 'clang-tools-extra/clangd/refactor')
| -rw-r--r-- | clang-tools-extra/clangd/refactor/Tweak.cpp | 3 | ||||
| -rw-r--r-- | clang-tools-extra/clangd/refactor/Tweak.h | 5 | ||||
| -rw-r--r-- | clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp | 3 |
3 files changed, 9 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/refactor/Tweak.cpp b/clang-tools-extra/clangd/refactor/Tweak.cpp index a6d70dbd38c..b80f75300dd 100644 --- a/clang-tools-extra/clangd/refactor/Tweak.cpp +++ b/clang-tools-extra/clangd/refactor/Tweak.cpp @@ -40,7 +40,8 @@ void validateRegistry() { Tweak::Selection::Selection(ParsedAST &AST, unsigned RangeBegin, unsigned RangeEnd) - : AST(AST), ASTSelection(AST.getASTContext(), RangeBegin, RangeEnd) { + : AST(AST), SelectionBegin(RangeBegin), SelectionEnd(RangeEnd), + ASTSelection(AST.getASTContext(), RangeBegin, RangeEnd) { auto &SM = AST.getSourceManager(); Code = SM.getBufferData(SM.getMainFileID()); Cursor = SM.getComposedLoc(SM.getMainFileID(), RangeBegin); diff --git a/clang-tools-extra/clangd/refactor/Tweak.h b/clang-tools-extra/clangd/refactor/Tweak.h index 79e0f3eceee..9b20d151589 100644 --- a/clang-tools-extra/clangd/refactor/Tweak.h +++ b/clang-tools-extra/clangd/refactor/Tweak.h @@ -46,7 +46,12 @@ public: /// Parsed AST of the active file. ParsedAST &AST; /// A location of the cursor in the editor. + // FIXME: Cursor is redundant and should be removed SourceLocation Cursor; + /// The begin offset of the selection + unsigned SelectionBegin; + /// The end offset of the selection + unsigned SelectionEnd; /// The AST nodes that were selected. SelectionTree ASTSelection; // FIXME: provide a way to get sources and ASTs for other files. diff --git a/clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp b/clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp index 447110d3e90..525c259b7a5 100644 --- a/clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp +++ b/clang-tools-extra/clangd/refactor/tweaks/ExtractVariable.cpp @@ -219,7 +219,8 @@ bool ExtractVariable::prepare(const Selection &Inputs) { const ASTContext &Ctx = Inputs.AST.getASTContext(); const SourceManager &SM = Inputs.AST.getSourceManager(); const SelectionTree::Node *N = Inputs.ASTSelection.commonAncestor(); - if (!N) + // we don't trigger on empty selections for now + if (!N || Inputs.SelectionBegin == Inputs.SelectionEnd) return false; Target = llvm::make_unique<ExtractionContext>(N, SM, Ctx); return Target->isExtractable(); |

