validate improts

This commit is contained in:
DieMyst 2022-06-02 16:26:01 +03:00
parent 9136b322fc
commit 03169bef44
2 changed files with 22 additions and 4 deletions

View File

@ -166,7 +166,7 @@ documents.onDidOpen(async (change) => {
async function validateDocument(textDocument: TextDocument): Promise<void> {
const settings = await getDocumentSettings(textDocument.uri);
const [diagnostics, locations] = await compileAqua(settings, textDocument, folders);
const [diagnostics, locations] = await compileAqua(settings, textDocument, folders, connection.console);
allLocations.set(textDocument.uri, locations);

View File

@ -1,6 +1,6 @@
import type { TextDocument } from 'vscode-languageserver-textdocument';
import { AquaLSP, ErrorInfo, TokenLink } from '@fluencelabs/aqua-language-server-api/aqua-lsp-api';
import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver/node';
import { Diagnostic, DiagnosticSeverity, RemoteConsole } from 'vscode-languageserver/node';
import type { Settings } from './server';
import type { WorkspaceFolder } from 'vscode-languageserver-protocol';
@ -8,6 +8,7 @@ export async function compileAqua(
settings: Settings,
textDocument: TextDocument,
folders: WorkspaceFolder[],
console: RemoteConsole,
): Promise<[Diagnostic[], TokenLink[]]> {
const uri = textDocument.uri.replace('file://', '');
@ -16,8 +17,25 @@ export async function compileAqua(
// add all workspace folders to imports
imports = imports.concat(folders.map((f) => f.uri.replace('file://', '')));
imports = imports.concat(folders.map((f) => f.uri.replace('file://', '')) + '/node_modules');
imports = imports.concat(settings.imports.map((s) => s.replace('file://', '')));
imports = imports.concat(settings.imports.map((s) => s.replace('file://', '')) + '/node_modules');
if (settings.imports && Array.isArray(settings.imports)) {
const validatedImports: string[] = settings.imports.filter((s) => {
if (typeof s != 'string') {
console.warn(
`Field 'import' in extension settings must have only array of strings. Cannot add import ${JSON.stringify(
s,
)}`,
);
return false;
} else {
return true;
}
});
imports = imports.concat(validatedImports.map((s) => s.replace('file://', '')));
imports = imports.concat(validatedImports.map((s) => s.replace('file://', '')) + '/node_modules');
}
if (require.main) {
imports = imports.concat(require.main.paths);
}