Go-to for structs and imports (#18)

This commit is contained in:
Dima 2022-07-26 17:16:48 +03:00 committed by GitHub
parent 03169bef44
commit 7a71f0fbbe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 9 deletions

View File

@ -8,7 +8,7 @@
"name": "aqua-ls-server", "name": "aqua-ls-server",
"version": "0.0.1", "version": "0.0.1",
"dependencies": { "dependencies": {
"@fluencelabs/aqua-language-server-api": "0.7.3-315", "@fluencelabs/aqua-language-server-api": "0.7.4-334",
"global-dirs": "^3.0.0", "global-dirs": "^3.0.0",
"vscode-languageserver": "^7.0.0", "vscode-languageserver": "^7.0.0",
"vscode-languageserver-textdocument": "^1.0.4" "vscode-languageserver-textdocument": "^1.0.4"
@ -30,9 +30,9 @@
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/@fluencelabs/aqua-language-server-api": { "node_modules/@fluencelabs/aqua-language-server-api": {
"version": "0.7.3-315", "version": "0.7.4-334",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-language-server-api/-/aqua-language-server-api-0.7.3-315.tgz", "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-language-server-api/-/aqua-language-server-api-0.7.4-334.tgz",
"integrity": "sha512-QvXEoXGah5T0JGU0eg5g4GZJhG9U+NqZyDzLLFSQ8yhYdp7ipeSGE9uRAvlMTdVOZQ6jG9Y2Sd3UGFkSN/nMww==" "integrity": "sha512-JEoS7DVtYhpBRRCtILGO1I/0UeNbnXFOZjsToL7iHe0an9UMqFYbZk1cDbeEX55bS4UKaLTwcbrBvSWwXL8EAA=="
}, },
"node_modules/global-dirs": { "node_modules/global-dirs": {
"version": "3.0.0", "version": "3.0.0",
@ -97,9 +97,9 @@
}, },
"dependencies": { "dependencies": {
"@fluencelabs/aqua-language-server-api": { "@fluencelabs/aqua-language-server-api": {
"version": "0.7.3-315", "version": "0.7.4-334",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-language-server-api/-/aqua-language-server-api-0.7.3-315.tgz", "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-language-server-api/-/aqua-language-server-api-0.7.4-334.tgz",
"integrity": "sha512-QvXEoXGah5T0JGU0eg5g4GZJhG9U+NqZyDzLLFSQ8yhYdp7ipeSGE9uRAvlMTdVOZQ6jG9Y2Sd3UGFkSN/nMww==" "integrity": "sha512-JEoS7DVtYhpBRRCtILGO1I/0UeNbnXFOZjsToL7iHe0an9UMqFYbZk1cDbeEX55bS4UKaLTwcbrBvSWwXL8EAA=="
}, },
"global-dirs": { "global-dirs": {
"version": "3.0.0", "version": "3.0.0",

View File

@ -11,7 +11,7 @@
"url": "https://github.com/fluencelabs/aqua" "url": "https://github.com/fluencelabs/aqua"
}, },
"dependencies": { "dependencies": {
"@fluencelabs/aqua-language-server-api": "0.7.3-315", "@fluencelabs/aqua-language-server-api": "0.7.4-334",
"global-dirs": "^3.0.0", "global-dirs": "^3.0.0",
"vscode-languageserver": "^7.0.0", "vscode-languageserver": "^7.0.0",
"vscode-languageserver-textdocument": "^1.0.4" "vscode-languageserver-textdocument": "^1.0.4"

View File

@ -3,6 +3,8 @@ import { AquaLSP, ErrorInfo, TokenLink } from '@fluencelabs/aqua-language-server
import { Diagnostic, DiagnosticSeverity, RemoteConsole } from 'vscode-languageserver/node'; import { Diagnostic, DiagnosticSeverity, RemoteConsole } from 'vscode-languageserver/node';
import type { Settings } from './server'; import type { Settings } from './server';
import type { WorkspaceFolder } from 'vscode-languageserver-protocol'; import type { WorkspaceFolder } from 'vscode-languageserver-protocol';
import * as fs from 'fs';
import * as Path from 'path';
export async function compileAqua( export async function compileAqua(
settings: Settings, settings: Settings,
@ -45,6 +47,25 @@ export async function compileAqua(
const diagnostics: Diagnostic[] = []; const diagnostics: Diagnostic[] = [];
let links: TokenLink[] = [];
let p = Path.parse(textDocument.uri);
let linksSearch = [p.dir.replace('file://', '')].concat(imports);
result.importLocations.map(function (ti) {
const path = linksSearch.map((i) => i + '/' + ti.path).find((i) => fs.existsSync(i));
if (path) {
links.push({
current: ti.current,
definition: {
name: path,
startLine: 0,
startCol: 0,
endLine: 0,
endCol: 0,
},
});
}
});
if (result.errors) { if (result.errors) {
// Add all errors to Diagnostic // Add all errors to Diagnostic
result.errors.forEach((err: ErrorInfo) => { result.errors.forEach((err: ErrorInfo) => {
@ -73,5 +94,5 @@ export async function compileAqua(
}); });
} }
return [diagnostics, result.locations]; return [diagnostics, result.locations.concat(links)];
} }