aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2019-02-22 12:01:04 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2019-02-22 13:02:44 +0000
commit0a3aa12962e47db2421ad09d149118b920e404c8 (patch)
tree762b568cc91c1ea54b59c247232572ff261294b3 /src/plugins/clangcodemodel
parent1886c5e19b8021c7f72e6962b9ef1523aa673585 (diff)
Clang: Follow symbol with Ctrl+click on invalid cursors
When cursor is invalid try to follow it with built-in code model and highlight the token in case of success. Fixes: QTCREATORBUG-21637 Change-Id: I4c765882817fa150a155074c9d71beceb5905af8 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel')
-rw-r--r--src/plugins/clangcodemodel/clangfollowsymbol.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/plugins/clangcodemodel/clangfollowsymbol.cpp b/src/plugins/clangcodemodel/clangfollowsymbol.cpp
index 96df23ab20..f1113de164 100644
--- a/src/plugins/clangcodemodel/clangfollowsymbol.cpp
+++ b/src/plugins/clangcodemodel/clangfollowsymbol.cpp
@@ -28,6 +28,7 @@
#include <coreplugin/editormanager/editormanager.h>
#include <cpptools/cppmodelmanager.h>
+#include <cpptools/cppfollowsymbolundercursor.h>
#include <texteditor/texteditor.h>
#include <clangsupport/tokeninfocontainer.h>
@@ -183,12 +184,22 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data,
return processLinkCallback(Utils::Link());
if (!resolveTarget) {
- processLinkCallback(linkAtCursor(cursor,
- data.filePath().toString(),
- static_cast<uint>(line),
- static_cast<uint>(column),
- processor));
- return;
+ Utils::Link link = linkAtCursor(cursor,
+ data.filePath().toString(),
+ static_cast<uint>(line),
+ static_cast<uint>(column),
+ processor);
+ if (link == Utils::Link()) {
+ CppTools::FollowSymbolUnderCursor followSymbol;
+ return followSymbol.findLink(data,
+ std::move(processLinkCallback),
+ false,
+ snapshot,
+ documentFromSemanticInfo,
+ symbolFinder,
+ inNextSplit);
+ }
+ return processLinkCallback(link);
}
QFuture<CppTools::SymbolInfo> infoFuture