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