Skip to content

Commit 6e22150

Browse files
committed
Remove Autocomplete Declaration Suggestions
Because we removed `type` and `ghost` keywords from LiquidJava for `@RefinementPredicate`.
1 parent 7516b91 commit 6e22150

1 file changed

Lines changed: 16 additions & 22 deletions

File tree

client/src/services/autocomplete.ts

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ type CompletionItemOptions = {
1616
insertText?: string;
1717
triggerParameterHints?: boolean;
1818
}
19-
type CompletionItemKind = "vars" | "ghosts" | "aliases" | "keywords" | "types" | "decls" | "packages";
19+
type CompletionItemKind = "vars" | "ghosts" | "aliases" | "keywords" | "types" | "packages";
2020

2121
/**
2222
* Registers a completion provider for LiquidJava annotations, providing context-aware suggestions based on the current context
@@ -61,19 +61,23 @@ function getContextCompletionItems(context: LJContext, file: string, annotation:
6161
aliases: () => getAliasCompletionItems(context.aliases, triggerParameterHints),
6262
keywords: () => getKeywordsCompletionItems(triggerParameterHints, inScope),
6363
types: () => getTypesCompletionItems(),
64-
decls: () => getDeclsCompletionItems(),
6564
packages: () => [], // TODO
6665
}
66+
const varCompletions: CompletionItemKind[] = ["vars", "ghosts", "aliases", "keywords"];
67+
const typeCompletions: CompletionItemKind[] = ["types"];
6768
const itemsMap: Record<LJAnnotation, CompletionItemKind[]> = {
68-
Refinement: ["vars", "ghosts", "aliases", "keywords"],
69-
StateRefinement: ["vars", "ghosts", "aliases", "keywords"],
70-
Ghost: ["types"],
71-
RefinementAlias: ["types"],
72-
RefinementPredicate: ["types", "decls"],
73-
StateSet: [],
74-
ExternalRefinementsFor: ["packages"]
75-
}
76-
return itemsMap[annotation].map(key => itemsHandlers[key]()).flat();
69+
Refinement: varCompletions,
70+
StateRefinement: varCompletions,
71+
Ghost: typeCompletions,
72+
RefinementAlias: typeCompletions,
73+
RefinementPredicate: typeCompletions,
74+
StateSet: [],
75+
ExternalRefinementsFor: [], // TODO
76+
};
77+
return itemsMap[annotation]
78+
.map(key => itemsHandlers[key])
79+
.filter((handler): handler is () => vscode.CompletionItem[] => Boolean(handler))
80+
.flatMap(handler => handler());
7781
}
7882

7983
function getVariableCompletionItems(variables: LJVariable[]): vscode.CompletionItem[] {
@@ -190,16 +194,6 @@ function getTypesCompletionItems(): vscode.CompletionItem[] {
190194
}));
191195
}
192196

193-
function getDeclsCompletionItems(): vscode.CompletionItem[] {
194-
const decls = ["ghost", "type"]
195-
return decls.map(decl => createCompletionItem({
196-
name: decl,
197-
kind: vscode.CompletionItemKind.Keyword,
198-
description: "",
199-
detail: "keyword",
200-
}));
201-
}
202-
203197
function createCompletionItem({ name, kind, labelDetail, description, detail, documentationBlocks, codeBlocks, insertText, triggerParameterHints }: CompletionItemOptions): vscode.CompletionItem {
204198
const item = new vscode.CompletionItem(name, kind);
205199
item.label = { label: name, detail: labelDetail, description };
@@ -251,4 +245,4 @@ function getReceiverBeforeDot(document: vscode.TextDocument, position: vscode.Po
251245
const receiver = match[1].trim();
252246
if (/^old\s*\(\s*this\s*\)$/.test(receiver)) return "old(this)";
253247
return receiver;
254-
}
248+
}

0 commit comments

Comments
 (0)