moving ufcs logic to dsymbol
This commit is contained in:
parent
1b67f493d4
commit
c336004ed8
|
@ -1,9 +1,7 @@
|
|||
module dcd.server.autocomplete.ufcs;
|
||||
module dsymbol.ufcs;
|
||||
|
||||
import dcd.server.autocomplete.util;
|
||||
import dsymbol.symbol;
|
||||
import dsymbol.scope_;
|
||||
import dcd.common.messages;
|
||||
import std.functional : unaryFun;
|
||||
import std.algorithm;
|
||||
import std.array;
|
||||
|
@ -28,21 +26,6 @@ enum string[string] INTEGER_PROMOTIONS = [
|
|||
|
||||
enum MAX_RECURSION_DEPTH = 50;
|
||||
|
||||
void lookupUFCS(Scope* completionScope, DSymbol* beforeDotSymbol, size_t cursorPosition, ref AutocompleteResponse response)
|
||||
{
|
||||
// UFCS completion
|
||||
DSymbol*[] ufcsSymbols = getSymbolsForUFCS(completionScope, beforeDotSymbol, cursorPosition);
|
||||
response.completions ~= map!(s => createCompletionForUFCS(s))(ufcsSymbols).array;
|
||||
}
|
||||
|
||||
AutocompleteResponse.Completion createCompletionForUFCS(const DSymbol* symbol)
|
||||
{
|
||||
return AutocompleteResponse.Completion(symbol.name, CompletionKind.ufcsName, symbol.callTip, symbol
|
||||
.symbolFile, symbol
|
||||
.location, symbol
|
||||
.doc);
|
||||
}
|
||||
|
||||
// Check if beforeDotSymbol is null or void
|
||||
bool isInvalidForUFCSCompletion(const(DSymbol)* beforeDotSymbol)
|
||||
{
|
||||
|
@ -210,12 +193,6 @@ struct FilteredAppender(alias predicate, T:
|
|||
assert(app.data == [1, 3, 5, 7, 9]);
|
||||
}
|
||||
|
||||
bool doUFCSSearch(string beforeToken, string lastToken)
|
||||
{
|
||||
// we do the search if they are different from eachother
|
||||
return beforeToken != lastToken;
|
||||
}
|
||||
|
||||
void getUFCSParenCompletion(ref DSymbol*[] symbols, Scope* completionScope, istring firstToken, istring nextToken, size_t cursorPosition)
|
||||
{
|
||||
DSymbol* firstSymbol = completionScope.getFirstSymbolByNameAndCursor(
|
|
@ -30,7 +30,6 @@ import std.string;
|
|||
import std.typecons;
|
||||
|
||||
import dcd.server.autocomplete.util;
|
||||
import dcd.server.autocomplete.ufcs;
|
||||
|
||||
import dparse.lexer;
|
||||
import dparse.rollback_allocator;
|
||||
|
@ -42,6 +41,7 @@ import dsymbol.modulecache;
|
|||
import dsymbol.scope_;
|
||||
import dsymbol.string_interning;
|
||||
import dsymbol.symbol;
|
||||
import dsymbol.ufcs;
|
||||
|
||||
import dcd.common.constants;
|
||||
import dcd.common.messages;
|
||||
|
|
|
@ -37,7 +37,7 @@ import dsymbol.modulecache;
|
|||
import dsymbol.scope_;
|
||||
import dsymbol.string_interning;
|
||||
import dsymbol.symbol;
|
||||
import dcd.server.autocomplete.ufcs;
|
||||
import dsymbol.ufcs;
|
||||
|
||||
enum ImportKind : ubyte
|
||||
{
|
||||
|
@ -772,3 +772,24 @@ AutocompleteResponse.Completion makeSymbolCompletionInfo(const DSymbol* symbol,
|
|||
return AutocompleteResponse.Completion(symbol.name, kind, definition,
|
||||
symbol.symbolFile, symbol.location, symbol.doc);
|
||||
}
|
||||
|
||||
void lookupUFCS(Scope* completionScope, DSymbol* beforeDotSymbol, size_t cursorPosition, ref AutocompleteResponse response)
|
||||
{
|
||||
// UFCS completion
|
||||
DSymbol*[] ufcsSymbols = getSymbolsForUFCS(completionScope, beforeDotSymbol, cursorPosition);
|
||||
response.completions ~= map!(s => createCompletionForUFCS(s))(ufcsSymbols).array;
|
||||
}
|
||||
|
||||
AutocompleteResponse.Completion createCompletionForUFCS(const DSymbol* symbol)
|
||||
{
|
||||
return AutocompleteResponse.Completion(symbol.name, CompletionKind.ufcsName, symbol.callTip, symbol
|
||||
.symbolFile, symbol
|
||||
.location, symbol
|
||||
.doc);
|
||||
}
|
||||
|
||||
bool doUFCSSearch(string beforeToken, string lastToken)
|
||||
{
|
||||
// we do the search if they are different from eachother
|
||||
return beforeToken != lastToken;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue