diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-08-18 14:51:32 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-08-22 10:01:31 +0000 |
commit | 0db7ad77a068d51764100fabeecce9a649b3ad58 (patch) | |
tree | 8def9c3cdb993c700a8f0e315e861d3788ce6dcb /src/plugins/cpptools | |
parent | a9ddbb61a4bed1cec59b8fb2d2b56ac25ba4254f (diff) | |
download | qt-creator-0db7ad77a068d51764100fabeecce9a649b3ad58.tar.gz |
Clang: Fix built-in's ExtractFunction action
Since
Clang: Provide highlighting for identifier under cursor
commit ca72c29462d9caae5e6095f8361f843758c5972c
the LocalUseMap, used for some refactoring actions, was not updated
anymore. Fall back to the built-in implementation for the LocalUseMap
because it contains pointers to built-in AST that clang obviously can't
provide.
Task-number: QTCREATORBUG-18607
Change-Id: I08762fe457835d4d83aca719febcb3497ee9696b
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/builtincursorinfo.cpp | 26 | ||||
-rw-r--r-- | src/plugins/cpptools/builtincursorinfo.h | 10 | ||||
-rw-r--r-- | src/plugins/cpptools/builtineditordocumentprocessor.cpp | 2 |
3 files changed, 21 insertions, 17 deletions
diff --git a/src/plugins/cpptools/builtincursorinfo.cpp b/src/plugins/cpptools/builtincursorinfo.cpp index cd46380e19..6cdf19e5fe 100644 --- a/src/plugins/cpptools/builtincursorinfo.cpp +++ b/src/plugins/cpptools/builtincursorinfo.cpp @@ -47,7 +47,6 @@ using namespace CPlusPlus; using SemanticUses = QList<CppTools::SemanticInfo::Use>; namespace CppTools { -namespace Internal { namespace { CursorInfo::Range toRange(const SemanticInfo::Use &use) @@ -186,7 +185,8 @@ private: { CursorInfo result; - const CppTools::SemanticInfo::LocalUseMap localUses = findLocalUses(); + const CppTools::SemanticInfo::LocalUseMap localUses + = BuiltinCursorInfo::findLocalUses(m_document, m_line, m_column); result.localUses = localUses; splitLocalUses(localUses, &result.useRanges, &result.unusedVariablesRanges); @@ -200,16 +200,6 @@ private: return result; // OK, result.unusedVariablesRanges will be passed on } - CppTools::SemanticInfo::LocalUseMap findLocalUses() const - { - AST *ast = m_document->translationUnit()->ast(); - FunctionDefinitionUnderCursor functionDefinitionUnderCursor(m_document->translationUnit()); - DeclarationAST *declaration = functionDefinitionUnderCursor(ast, - static_cast<unsigned>(m_line), - static_cast<unsigned>(m_column)); - return CppTools::LocalSymbols(m_document, declaration).uses; - } - void splitLocalUses(const CppTools::SemanticInfo::LocalUseMap &uses, CursorInfo::Ranges *rangesForLocalVariableUnderCursor, CursorInfo::Ranges *rangesForLocalUnusedVariables) const @@ -365,5 +355,15 @@ QFuture<CursorInfo> BuiltinCursorInfo::run(const CursorInfoParams &cursorInfoPar return Utils::runAsync(&FindUses::find, document, snapshot, line, column, scope, expression); } -} // namespace Internal +CppTools::SemanticInfo::LocalUseMap +BuiltinCursorInfo::findLocalUses(const Document::Ptr &document, int line, int column) +{ + AST *ast = document->translationUnit()->ast(); + FunctionDefinitionUnderCursor functionDefinitionUnderCursor(document->translationUnit()); + DeclarationAST *declaration = functionDefinitionUnderCursor(ast, + static_cast<unsigned>(line), + static_cast<unsigned>(column)); + return CppTools::LocalSymbols(document, declaration).uses; +} + } // namespace CppTools diff --git a/src/plugins/cpptools/builtincursorinfo.h b/src/plugins/cpptools/builtincursorinfo.h index 3e24378bde..3a6ef71628 100644 --- a/src/plugins/cpptools/builtincursorinfo.h +++ b/src/plugins/cpptools/builtincursorinfo.h @@ -26,17 +26,21 @@ #pragma once #include "cppcursorinfo.h" +#include "cpptools_global.h" + +#include <cplusplus/CppDocument.h> #include <QFuture> namespace CppTools { -namespace Internal { -class BuiltinCursorInfo +class CPPTOOLS_EXPORT BuiltinCursorInfo { public: static QFuture<CursorInfo> run(const CursorInfoParams ¶ms); + + static CppTools::SemanticInfo::LocalUseMap + findLocalUses(const CPlusPlus::Document::Ptr &document, int line, int column); }; -} // namespace Internal } // namespace CppTools diff --git a/src/plugins/cpptools/builtineditordocumentprocessor.cpp b/src/plugins/cpptools/builtineditordocumentprocessor.cpp index d5c57003b6..95f4932e08 100644 --- a/src/plugins/cpptools/builtineditordocumentprocessor.cpp +++ b/src/plugins/cpptools/builtineditordocumentprocessor.cpp @@ -257,7 +257,7 @@ bool BuiltinEditorDocumentProcessor::isParserRunning() const QFuture<CursorInfo> BuiltinEditorDocumentProcessor::cursorInfo(const CursorInfoParams ¶ms) { - return Internal::BuiltinCursorInfo::run(params); + return BuiltinCursorInfo::run(params); } void BuiltinEditorDocumentProcessor::onParserFinished(CPlusPlus::Document::Ptr document, |