diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-02-02 12:52:07 +0100 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-02-07 14:01:52 +0000 |
commit | c020f2448b9e9dde6f0f38912dd9ac0d30d27a27 (patch) | |
tree | beffe6fedffa9d673d60350e87bff3ce7d731a71 /src | |
parent | 31f1713c759e5bf76299171c86273b5960dec7ff (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.cpp | 17 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Symbol.h | 3 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppeditorwidget.cpp | 9 | ||||
-rw-r--r-- | src/plugins/cpptools/cppeditoroutline.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cppelementevaluator.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfollowsymbolundercursor.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.cpp | 20 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.h | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cppvirtualfunctionassistprovider.cpp | 2 |
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"); |