Skip to content

Commit

Permalink
[vscode] Report errors for folder files not open in an editor.
Browse files Browse the repository at this point in the history
  • Loading branch information
pfusik committed Mar 25, 2024
1 parent 0490a98 commit 5a001dc
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions editors/vscode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,17 @@ class VsCodeHost extends FuSemaHost
diagnostics.push(new vscode.Diagnostic(new vscode.Range(startLine, startUtf16Column, endLine, endUtf16Column), message));
}

#parse(document: vscode.TextDocument, parser: FuParser): void
#parse(filename: string, input: Uint8Array, parser: FuParser): void
{
const filename = document.uri.toString();
this.#diagnostics[filename] = [];
const input = new TextEncoder().encode(document.getText());
parser.parse(filename, input, input.length);
}

#parseDocument(document: vscode.TextDocument, parser: FuParser): void
{
this.#parse(document.uri.toString(), new TextEncoder().encode(document.getText()), parser);
}

async #process(document: vscode.TextDocument, parser: FuParser): Promise<void>
{
const files = await vscode.workspace.findFiles("*.fu");
Expand All @@ -58,16 +61,14 @@ class VsCodeHost extends FuSemaHost
for (const uri of files) {
const filename = uri.toString();
const doc = documents.find(doc => doc.uri.toString() == filename);
if (doc === undefined) {
const input = await vscode.workspace.fs.readFile(uri);
parser.parse(filename, input, input.length);
}
if (doc === undefined)
this.#parse(filename, await vscode.workspace.fs.readFile(uri), parser);
else
this.#parse(doc, parser);
this.#parseDocument(doc, parser);
}
}
else
this.#parse(document, parser);
this.#parseDocument(document, parser);
if (!this.#hasErrors) {
const sema = new FuSema();
sema.setHost(this);
Expand Down

0 comments on commit 5a001dc

Please sign in to comment.