moving ufcs logic to dsymbol

This commit is contained in:
davu 2023-03-08 07:12:24 +01:00 committed by Jan Jurzitza
parent 1b67f493d4
commit c336004ed8
3 changed files with 24 additions and 26 deletions

View File

@ -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(

View File

@ -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;

View File

@ -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;
}