From ba64604a552988f814e4efe72a04d174272d7646 Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Tue, 5 Nov 2013 17:56:22 -0800 Subject: [PATCH] #66 and partial resolution to constructor completion --- astconverter.d | 8 ++++++-- autocomplete.d | 10 ++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/astconverter.d b/astconverter.d index 4015d50..f14522a 100644 --- a/astconverter.d +++ b/astconverter.d @@ -387,7 +387,7 @@ private: void visitConstructor(size_t location, Parameters parameters, FunctionBody functionBody) { - SemanticSymbol* symbol = new SemanticSymbol("this", + SemanticSymbol* symbol = new SemanticSymbol("*constructor*", CompletionKind.functionName, symbolFile, location); processParameters(symbol, null, "this", parameters); symbol.protection = protection; @@ -617,7 +617,11 @@ private: currentSymbol.acSymbol.location); break; case aliasName: - // TODO + const(ACSymbol)* t = resolveType(currentSymbol.type, + currentSymbol.acSymbol.location); + while (t !is null && t.kind == CompletionKind.aliasName) + t = t.type; + currentSymbol.acSymbol.type = t; break; case enumName: case keyword: diff --git a/autocomplete.d b/autocomplete.d index 4525640..14df1fd 100644 --- a/autocomplete.d +++ b/autocomplete.d @@ -421,7 +421,7 @@ void setCompletions(T)(ref AutocompleteResponse response, && symbols[0].callTip is null) { auto call = symbols[0].getPartsByName("opCall"); - if (call.length == 0) + if (call.length > 0) { symbols = call; goto setCallTips; @@ -431,6 +431,7 @@ void setCompletions(T)(ref AutocompleteResponse response, return; else { + Log.trace("Not a function, but it has a constructor"); symbols = constructor; goto setCallTips; } @@ -440,7 +441,8 @@ void setCompletions(T)(ref AutocompleteResponse response, foreach (symbol; symbols) { Log.trace("Adding calltip ", symbol.callTip); - response.completions ~= symbol.callTip; + if (symbol.kind != CompletionKind.aliasName) + response.completions ~= symbol.callTip; } } } @@ -571,8 +573,8 @@ void setImportCompletions(T)(T tokens, ref AutocompleteResponse response) { response.completions ~= name.baseName(); response.completionKinds ~= - exists(buildPath(name, "package.d")) || exists(buildPath(name, "package.di")) - ? CompletionKind.packageName : CompletionKind.moduleName; + exists(buildPath(name, "package.d")) || exists(buildPath(name, "package.di")) + ? CompletionKind.packageName : CompletionKind.moduleName; } } }