summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2017-08-18 14:51:32 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2017-08-22 10:01:31 +0000
commit0db7ad77a068d51764100fabeecce9a649b3ad58 (patch)
tree8def9c3cdb993c700a8f0e315e861d3788ce6dcb /src/plugins/cpptools
parenta9ddbb61a4bed1cec59b8fb2d2b56ac25ba4254f (diff)
downloadqt-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.cpp26
-rw-r--r--src/plugins/cpptools/builtincursorinfo.h10
-rw-r--r--src/plugins/cpptools/builtineditordocumentprocessor.cpp2
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 &params);
+
+ 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 &params)
{
- return Internal::BuiltinCursorInfo::run(params);
+ return BuiltinCursorInfo::run(params);
}
void BuiltinEditorDocumentProcessor::onParserFinished(CPlusPlus::Document::Ptr document,