aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-02-02 12:52:07 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-02-07 14:01:52 +0000
commitc020f2448b9e9dde6f0f38912dd9ac0d30d27a27 (patch)
treebeffe6fedffa9d673d60350e87bff3ce7d731a71 /src
parent31f1713c759e5bf76299171c86273b5960dec7ff (diff)
CPlusPlus: Add toLink method to the Symbol
Basically move it from CppTools to CPlusPlus to be able to use it there. Change-Id: I0af80f93bdc029824397ceafdf940cb86c4382b0 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/libs/3rdparty/cplusplus/Symbol.cpp17
-rw-r--r--src/libs/3rdparty/cplusplus/Symbol.h3
-rw-r--r--src/plugins/cppeditor/cppeditorwidget.cpp9
-rw-r--r--src/plugins/cpptools/cppeditoroutline.cpp2
-rw-r--r--src/plugins/cpptools/cppelementevaluator.cpp2
-rw-r--r--src/plugins/cpptools/cppfollowsymbolundercursor.cpp4
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.cpp20
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.h2
-rw-r--r--src/plugins/cpptools/cppvirtualfunctionassistprovider.cpp2
9 files changed, 30 insertions, 31 deletions
diff --git a/src/libs/3rdparty/cplusplus/Symbol.cpp b/src/libs/3rdparty/cplusplus/Symbol.cpp
index e98b33a8a7..e9c7edb0dc 100644
--- a/src/libs/3rdparty/cplusplus/Symbol.cpp
+++ b/src/libs/3rdparty/cplusplus/Symbol.cpp
@@ -32,6 +32,7 @@
#include "cppassert.h"
+#include <utils/link.h>
using namespace CPlusPlus;
@@ -435,3 +436,19 @@ void Symbol::copy(Symbol *other)
_isGenerated = other->_isGenerated;
_isDeprecated = other->_isDeprecated;
}
+
+Utils::Link Symbol::toLink() const
+{
+ const QString filename = QString::fromUtf8(fileName(), static_cast<int>(fileNameLength()));
+
+ int line = static_cast<int>(this->line());
+ int column = static_cast<int>(this->column());
+
+ if (column)
+ --column;
+
+ if (isGenerated())
+ column = 0;
+
+ return Utils::Link(filename, line, column);
+}
diff --git a/src/libs/3rdparty/cplusplus/Symbol.h b/src/libs/3rdparty/cplusplus/Symbol.h
index 417217e469..e4c8eea152 100644
--- a/src/libs/3rdparty/cplusplus/Symbol.h
+++ b/src/libs/3rdparty/cplusplus/Symbol.h
@@ -22,6 +22,7 @@
#include "CPlusPlusForwardDeclarations.h"
+namespace Utils { struct Link; }
namespace CPlusPlus {
@@ -197,6 +198,8 @@ public:
/// Returns true if this Symbol is an Objective-C @property declaration.
bool isObjCPropertyDeclaration() const;
+ Utils::Link toLink() const;
+
virtual const Scope *asScope() const { return 0; }
virtual const Enum *asEnum() const { return 0; }
virtual const Function *asFunction() const { return 0; }
diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp
index 3ba8d40548..feeb057186 100644
--- a/src/plugins/cppeditor/cppeditorwidget.cpp
+++ b/src/plugins/cppeditor/cppeditorwidget.cpp
@@ -682,9 +682,10 @@ void CppEditorWidget::switchDeclarationDefinition(bool inNextSplit)
// Link to function definition/declaration
Utils::Link symbolLink;
if (functionDeclarationSymbol) {
- symbolLink = linkToSymbol(
- d->m_modelManager->symbolFinder()
- ->findMatchingDefinition(functionDeclarationSymbol, d->m_modelManager->snapshot()));
+ Symbol *symbol = d->m_modelManager->symbolFinder()
+ ->findMatchingDefinition(functionDeclarationSymbol, d->m_modelManager->snapshot());
+ if (symbol)
+ symbolLink = symbol->toLink();
} else if (functionDefinitionSymbol) {
const Snapshot snapshot = d->m_modelManager->snapshot();
LookupContext context(d->m_lastSemanticInfo.doc, snapshot);
@@ -709,7 +710,7 @@ void CppEditorWidget::switchDeclarationDefinition(bool inNextSplit)
if (best.isEmpty())
return;
- symbolLink = linkToSymbol(best.first());
+ symbolLink = best.first()->toLink();
}
// Open Editor at link position
diff --git a/src/plugins/cpptools/cppeditoroutline.cpp b/src/plugins/cpptools/cppeditoroutline.cpp
index c242182d0f..48e5712713 100644
--- a/src/plugins/cpptools/cppeditoroutline.cpp
+++ b/src/plugins/cpptools/cppeditoroutline.cpp
@@ -246,7 +246,7 @@ void CppEditorOutline::gotoSymbolInEditor()
if (!symbol)
return;
- const Utils::Link &link = CppTools::linkToSymbol(symbol);
+ const Utils::Link &link = symbol->toLink();
if (!link.hasValidTarget())
return;
diff --git a/src/plugins/cpptools/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp
index df9ebefa3d..97ee54e89a 100644
--- a/src/plugins/cpptools/cppelementevaluator.cpp
+++ b/src/plugins/cpptools/cppelementevaluator.cpp
@@ -129,7 +129,7 @@ CppDeclarableElement::CppDeclarableElement(Symbol *declaration)
}
tooltip = overview.prettyType(declaration->type(), qualifiedName);
- link = CppTools::linkToSymbol(declaration);
+ link = declaration->toLink();
helpMark = name;
}
diff --git a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
index 66558ea18f..191746923e 100644
--- a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
+++ b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
@@ -355,7 +355,7 @@ Link attemptFuncDeclDef(const QTextCursor &cursor, Snapshot snapshot,
}
if (target) {
- result = CppTools::linkToSymbol(target);
+ result = target->toLink();
unsigned startLine, startColumn, endLine, endColumn;
document->translationUnit()->getTokenStartPosition(name->firstToken(), &startLine,
@@ -762,7 +762,7 @@ Link FollowSymbolUnderCursor::findLink(
}
- link = CppTools::linkToSymbol(def ? def : symbol);
+ link = (def ? def : symbol)->toLink();
link.linkTextStart = beginOfToken;
link.linkTextEnd = endOfToken;
return link;
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp
index e5e48e859a..be30a6e3a2 100644
--- a/src/plugins/cpptools/cpptoolsreuse.cpp
+++ b/src/plugins/cpptools/cpptoolsreuse.cpp
@@ -230,26 +230,6 @@ const Macro *findCanonicalMacro(const QTextCursor &cursor, Document::Ptr documen
return 0;
}
-Utils::Link linkToSymbol(Symbol *symbol)
-{
- if (!symbol)
- return Utils::Link();
-
- const QString filename = QString::fromUtf8(symbol->fileName(),
- symbol->fileNameLength());
-
- unsigned line = symbol->line();
- unsigned column = symbol->column();
-
- if (column)
- --column;
-
- if (symbol->isGenerated())
- column = 0;
-
- return Utils::Link(filename, line, column);
-}
-
QSharedPointer<CppCodeModelSettings> codeModelSettings()
{
return CppTools::Internal::CppToolsPlugin::instance()->codeModelSettings();
diff --git a/src/plugins/cpptools/cpptoolsreuse.h b/src/plugins/cpptools/cpptoolsreuse.h
index 6c1c3795ac..c015691a37 100644
--- a/src/plugins/cpptools/cpptoolsreuse.h
+++ b/src/plugins/cpptools/cpptoolsreuse.h
@@ -58,8 +58,6 @@ bool CPPTOOLS_EXPORT isValidFirstIdentifierChar(const QChar &ch);
bool CPPTOOLS_EXPORT isValidIdentifierChar(const QChar &ch);
bool CPPTOOLS_EXPORT isValidIdentifier(const QString &s);
-Utils::Link CPPTOOLS_EXPORT linkToSymbol(CPlusPlus::Symbol *symbol);
-
QString CPPTOOLS_EXPORT identifierUnderCursor(QTextCursor *cursor);
bool CPPTOOLS_EXPORT isOwnershipRAIIType(CPlusPlus::Symbol *symbol,
diff --git a/src/plugins/cpptools/cppvirtualfunctionassistprovider.cpp b/src/plugins/cpptools/cppvirtualfunctionassistprovider.cpp
index 9ac26f66c3..f0b8f029a6 100644
--- a/src/plugins/cpptools/cppvirtualfunctionassistprovider.cpp
+++ b/src/plugins/cpptools/cppvirtualfunctionassistprovider.cpp
@@ -173,7 +173,7 @@ private:
VirtualFunctionProposalItem *itemFromFunction(Function *func) const
{
- const Utils::Link link = CppTools::linkToSymbol(maybeDefinitionFor(func));
+ const Utils::Link link = maybeDefinitionFor(func)->toLink();
QString text = m_overview.prettyName(LookupContext::fullyQualifiedName(func));
if (func->isPureVirtual())
text += QLatin1String(" = 0");