diff --git a/duchain/navigation/declarationnavigationcontext.cpp b/duchain/navigation/declarationnavigationcontext.cpp --- a/duchain/navigation/declarationnavigationcontext.cpp +++ b/duchain/navigation/declarationnavigationcontext.cpp @@ -69,43 +69,43 @@ QString DeclarationNavigationContext::html(bool shorten) { clear(); - m_shorten = shorten; + AbstractDeclarationNavigationContext::html(shorten); modifyHtml() += "

" + fontSizePrefix(shorten); - addExternalHtml(m_prefix); + addExternalHtml(prefix()); - if(!m_declaration.data()) { + if(!declaration().data()) { modifyHtml() += i18n("
lost declaration
"); return currentHtml(); } - if( m_previousContext ) { - QString link = createLink( m_previousContext->name(), m_previousContext->name(), NavigationAction(m_previousContext) ); + if( previousContext() ) { + QString link = createLink( previousContext()->name(), previousContext()->name(), NavigationAction(previousContext()) ); modifyHtml() += navigationHighlight(i18n("Back to %1
", link)); } QExplicitlySharedDataPointer doc; if( !shorten ) { - doc = ICore::self()->documentationController()->documentationForDeclaration(m_declaration.data()); + doc = ICore::self()->documentationController()->documentationForDeclaration(declaration().data()); - const AbstractFunctionDeclaration* function = dynamic_cast(m_declaration.data()); + const AbstractFunctionDeclaration* function = dynamic_cast(declaration().data()); if( function ) { htmlFunction(); - } else if( m_declaration->isTypeAlias() || m_declaration->kind() == Declaration::Instance ) { + } else if( declaration()->isTypeAlias() || declaration()->kind() == Declaration::Instance ) { - if( m_declaration->isTypeAlias() ) + if( declaration()->isTypeAlias() ) modifyHtml() += importantHighlight("type "); - if(m_declaration->type()) + if(declaration()->type()) modifyHtml() += i18n("enumerator "); - if( !m_declaration->isTypeAlias()) - modifyHtml() += ' ' + identifierHighlight(declarationName(m_declaration).toHtmlEscaped(), m_declaration) + " "; + if( !declaration()->isTypeAlias()) + modifyHtml() += ' ' + identifierHighlight(declarationName(declaration()).toHtmlEscaped(), declaration()) + " "; - AbstractType::Ptr useType = m_declaration->abstractType(); - if(m_declaration->isTypeAlias()) { + AbstractType::Ptr useType = declaration()->abstractType(); + if(declaration()->isTypeAlias()) { //Do not show the own name as type of typedefs if(useType.cast()) useType = useType.cast()->type(); @@ -116,21 +116,21 @@ modifyHtml() += "
"; }else{ - if( m_declaration->kind() == Declaration::Type && m_declaration->abstractType().cast()) { + if( declaration()->kind() == Declaration::Type && declaration()->abstractType().cast()) { htmlClass(); } - if ( m_declaration->kind() == Declaration::Namespace ) { - modifyHtml() += i18n("namespace %1 ", identifierHighlight(m_declaration->qualifiedIdentifier().toString().toHtmlEscaped(), m_declaration)); + if ( declaration()->kind() == Declaration::Namespace ) { + modifyHtml() += i18n("namespace %1 ", identifierHighlight(declaration()->qualifiedIdentifier().toString().toHtmlEscaped(), declaration())); } - if(m_declaration->type()) { - EnumerationType::Ptr enumeration = m_declaration->type(); - modifyHtml() += i18n("enumeration %1 ", identifierHighlight(m_declaration->identifier().toString().toHtmlEscaped(), m_declaration)); + if(declaration()->type()) { + EnumerationType::Ptr enumeration = declaration()->type(); + modifyHtml() += i18n("enumeration %1 ", identifierHighlight(declaration()->identifier().toString().toHtmlEscaped(), declaration())); } - if(m_declaration->isForwardDeclaration()) { - ForwardDeclaration* forwardDec = static_cast(m_declaration.data()); - Declaration* resolved = forwardDec->resolve(m_topContext.data()); + if(declaration()->isForwardDeclaration()) { + ForwardDeclaration* forwardDec = static_cast(declaration().data()); + Declaration* resolved = forwardDec->resolve(topContext().data()); if(resolved) { modifyHtml() += i18n("( resolved forward-declaration: "); makeLink(resolved->identifier().toString(), KDevelop::DeclarationPointer(resolved), NavigationAction::NavigateDeclaration ); @@ -153,7 +153,7 @@ modifyHtml() += "
"; } }else{ - AbstractType::Ptr showType = m_declaration->abstractType(); + AbstractType::Ptr showType = declaration()->abstractType(); if(showType && showType.cast()) { showType = showType.cast()->returnType(); if(showType) @@ -168,11 +168,11 @@ } } - QualifiedIdentifier identifier = m_declaration->qualifiedIdentifier(); + QualifiedIdentifier identifier = declaration()->qualifiedIdentifier(); if( identifier.count() > 1 ) { - if( m_declaration->context() && m_declaration->context()->owner() ) + if( declaration()->context() && declaration()->context()->owner() ) { - Declaration* decl = m_declaration->context()->owner(); + Declaration* decl = declaration()->context()->owner(); FunctionDefinition* definition = dynamic_cast(decl); if(definition && definition->declaration()) @@ -192,8 +192,8 @@ } } - if( shorten && !m_declaration->comment().isEmpty() ) { - QString comment = QString::fromUtf8(m_declaration->comment()); + if( shorten && !declaration()->comment().isEmpty() ) { + QString comment = QString::fromUtf8(declaration()->comment()); if( comment.length() > 60 ) { comment.truncate(60); comment += "..."; @@ -205,15 +205,15 @@ } - QString access = stringFromAccess(m_declaration); + QString access = stringFromAccess(declaration()); if( !access.isEmpty() ) modifyHtml() += labelHighlight(i18n("Access: %1 ", propertyHighlight(access.toHtmlEscaped()))); ///@todo Enumerations QString detailsHtml; - QStringList details = declarationDetails(m_declaration); + QStringList details = declarationDetails(declaration()); if( !details.isEmpty() ) { bool first = true; foreach( const QString &str, details ) { @@ -224,7 +224,7 @@ } } - QString kind = declarationKind(m_declaration); + QString kind = declarationKind(declaration()); if( !kind.isEmpty() ) { if( !detailsHtml.isEmpty() ) modifyHtml() += labelHighlight(i18n("Kind: %1 %2 ", importantHighlight(kind.toHtmlEscaped()), detailsHtml)); @@ -240,35 +240,35 @@ htmlAdditionalNavigation(); if( !shorten ) { - if(dynamic_cast(m_declaration.data())) + if(dynamic_cast(declaration().data())) modifyHtml() += labelHighlight(i18n( "Def.: " )); else modifyHtml() += labelHighlight(i18n( "Decl.: " )); - makeLink( QString("%1 :%2").arg( QUrl(m_declaration->url().str()).fileName() ).arg( m_declaration->rangeInCurrentRevision().start().line()+1 ), m_declaration, NavigationAction::JumpToSource ); + makeLink( QString("%1 :%2").arg( QUrl(declaration()->url().str()).fileName() ).arg( declaration()->rangeInCurrentRevision().start().line()+1 ), declaration(), NavigationAction::JumpToSource ); modifyHtml() += " "; //modifyHtml() += "
"; - if(!dynamic_cast(m_declaration.data())) { - if( FunctionDefinition* definition = FunctionDefinition::definition(m_declaration.data()) ) { + if(!dynamic_cast(declaration().data())) { + if( FunctionDefinition* definition = FunctionDefinition::definition(declaration().data()) ) { modifyHtml() += labelHighlight(i18n( " Def.: " )); makeLink( QString("%1 :%2").arg( QUrl(definition->url().str()).fileName() ).arg( definition->rangeInCurrentRevision().start().line()+1 ), DeclarationPointer(definition), NavigationAction::JumpToSource ); } } - if( FunctionDefinition* definition = dynamic_cast(m_declaration.data()) ) { + if( FunctionDefinition* definition = dynamic_cast(declaration().data()) ) { if(definition->declaration()) { modifyHtml() += labelHighlight(i18n( " Decl.: " )); makeLink( QString("%1 :%2").arg( QUrl(definition->declaration()->url().str()).fileName() ).arg( definition->declaration()->rangeInCurrentRevision().start().line()+1 ), DeclarationPointer(definition->declaration()), NavigationAction::JumpToSource ); } } modifyHtml() += " "; //The action name _must_ stay "show_uses", since that is also used from outside - makeLink(i18n("Show uses"), "show_uses", NavigationAction(m_declaration, NavigationAction::NavigateUses)); + makeLink(i18n("Show uses"), "show_uses", NavigationAction(declaration(), NavigationAction::NavigateUses)); } - if( !shorten && (!m_declaration->comment().isEmpty() || doc) ) { + if( !shorten && (!declaration()->comment().isEmpty() || doc) ) { modifyHtml() += "
"; - QString comment = QString::fromUtf8(m_declaration->comment()); + QString comment = QString::fromUtf8(declaration()->comment()); if(comment.isEmpty() && doc) { comment = doc->description(); if(!comment.isEmpty()) { @@ -286,13 +286,13 @@ if(!shorten && doc) { modifyHtml() += "
" + i18n("Show documentation for "); - makeLink( prettyQualifiedIdentifier(m_declaration).toString(), m_declaration, NavigationAction::ShowDocumentation ); + makeLink( prettyQualifiedIdentifier(declaration()).toString(), declaration(), NavigationAction::ShowDocumentation ); } //modifyHtml() += "
"; - addExternalHtml(m_suffix); + addExternalHtml(suffix()); modifyHtml() += fontSizeSuffix(shorten) + "

"; @@ -303,11 +303,11 @@ void DeclarationNavigationContext::htmlFunction() { //KDevelop::AbstractDeclarationNavigationContext::htmlFunction(); - const go::GoFunctionDeclaration* function = dynamic_cast(m_declaration.data()); + const go::GoFunctionDeclaration* function = dynamic_cast(declaration().data()); if(!function) AbstractDeclarationNavigationContext::htmlFunction(); - const go::GoFunctionType::Ptr type = m_declaration->abstractType().cast(); + const go::GoFunctionType::Ptr type = declaration()->abstractType().cast(); if( !type ) { modifyHtml() += errorHighlight("Invalid type
"); return; @@ -318,7 +318,7 @@ eventuallyMakeTypeLinks( type->returnType() ); }*/ - modifyHtml() += ' ' + identifierHighlight(prettyIdentifier(m_declaration).toString().toHtmlEscaped(), m_declaration); + modifyHtml() += ' ' + identifierHighlight(prettyIdentifier(declaration()).toString().toHtmlEscaped(), declaration()); if( type->indexedArgumentsSize() == 0 ) { @@ -331,16 +331,16 @@ int currentArgNum = 0; QVector decls; - if (KDevelop::DUContext* argumentContext = DUChainUtils::getArgumentContext(m_declaration.data())) { - decls = argumentContext->localDeclarations(m_topContext.data()); + if (KDevelop::DUContext* argumentContext = DUChainUtils::getArgumentContext(declaration().data())) { + decls = argumentContext->localDeclarations(topContext().data()); } foreach(const AbstractType::Ptr& argType, type->arguments()) { if( !first ) modifyHtml() += ", "; first = false; if (currentArgNum < decls.size()) { - modifyHtml() += identifierHighlight(decls[currentArgNum]->identifier().toString().toHtmlEscaped(), m_declaration) + " "; + modifyHtml() += identifierHighlight(decls[currentArgNum]->identifier().toString().toHtmlEscaped(), declaration()) + " "; } if(type->modifiers() == go::GoFunctionType::VariadicArgument && currentArgNum == decls.size()-1) @@ -375,16 +375,16 @@ int currentArgNum = 0; bool first=true; QVector decls; - /*if (KDevelop::DUContext* argumentContext = DUChainUtils::getArgumentContext(m_declaration.data())) { - decls = argumentContext->localDeclarations(m_topContext.data()); + /*if (KDevelop::DUContext* argumentContext = DUChainUtils::getArgumentContext(declaration().data())) { + decls = argumentContext->localDeclarations(topContext().data()); }*/ if(DUContext* retContext = function->returnArgsContext()) - decls = retContext->localDeclarations(m_topContext.data()); + decls = retContext->localDeclarations(topContext().data()); if(type->returnArguments().size() == 1) { if(decls.size() != 0) //show declaration if one exists - modifyHtml() += identifierHighlight(decls[0]->identifier().toString().toHtmlEscaped(), m_declaration) + " "; + modifyHtml() += identifierHighlight(decls[0]->identifier().toString().toHtmlEscaped(), declaration()) + " "; eventuallyMakeTypeLinks(type->returnArguments().front()); //modifyHtml() += ' ' + nameHighlight(Qt::escape(decls[currentArgNum]->identifier().toString())); }else @@ -397,7 +397,7 @@ //TODO fix parameter names if (currentArgNum < decls.size()) { - modifyHtml() += identifierHighlight(decls[currentArgNum]->identifier().toString().toHtmlEscaped(), m_declaration) + " "; + modifyHtml() += identifierHighlight(decls[currentArgNum]->identifier().toString().toHtmlEscaped(), declaration()) + " "; } eventuallyMakeTypeLinks( argType ); ++currentArgNum; @@ -415,11 +415,11 @@ modifyHtml() += typeHighlight(QString("").toHtmlEscaped()); return; } - if(m_declaration->isTypeAlias()) + if(declaration()->isTypeAlias()) { //Go type declaration. manually creating links - QualifiedIdentifier id = m_declaration->qualifiedIdentifier(); - makeLink(id.toString(), DeclarationPointer(m_declaration), NavigationAction::NavigateDeclaration ); + QualifiedIdentifier id = declaration()->qualifiedIdentifier(); + makeLink(id.toString(), DeclarationPointer(declaration()), NavigationAction::NavigateDeclaration ); }else KDevelop::AbstractDeclarationNavigationContext::eventuallyMakeTypeLinks(type); diff --git a/duchain/navigation/navigationwidget.cpp b/duchain/navigation/navigationwidget.cpp --- a/duchain/navigation/navigationwidget.cpp +++ b/duchain/navigation/navigationwidget.cpp @@ -27,10 +27,9 @@ const QString& htmlPrefix, const QString& htmlSuffix, const KDevelop::AbstractNavigationWidget::DisplayHints hints) { - m_topContext = topContext; - m_startContext = NavigationContextPointer(new DeclarationNavigationContext(DeclarationPointer(decl), m_topContext, nullptr)); + auto context = NavigationContextPointer(new DeclarationNavigationContext(DeclarationPointer(decl), TopDUContextPointer(topContext), nullptr)); - m_startContext->setPrefixSuffix(htmlPrefix, htmlSuffix); + context->setPrefixSuffix(htmlPrefix, htmlSuffix); setDisplayHints(hints); - setContext(m_startContext); + setContext(context); } diff --git a/duchain/types/gostructuretype.h b/duchain/types/gostructuretype.h --- a/duchain/types/gostructuretype.h +++ b/duchain/types/gostructuretype.h @@ -22,6 +22,7 @@ #include #include #include +#include #include "kdevgoduchain_export.h" diff --git a/golangparsejob.cpp b/golangparsejob.cpp --- a/golangparsejob.cpp +++ b/golangparsejob.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include