UNPKG

@abaplint/core

Version:
60 lines 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Diagnostics = void 0; const LServer = require("vscode-languageserver-types"); const severity_1 = require("../severity"); class Diagnostics { constructor(reg) { this.reg = reg; } findIssues(textDocument) { const file = this.reg.getFileByName(textDocument.uri); if (file === undefined) { return []; } const obj = this.reg.findObjectForFile(file); if (obj === undefined) { return []; } this.reg.parse(); let issues = this.reg.findIssuesObject(obj); issues = issues.filter(i => i.getFilename() === file.getFilename()); return issues; } static mapDiagnostic(issue) { const diagnosic = { severity: this.mapSeverity(issue.getSeverity()), range: { start: { line: issue.getStart().getRow() - 1, character: issue.getStart().getCol() - 1 }, end: { line: issue.getEnd().getRow() - 1, character: issue.getEnd().getCol() - 1 }, }, code: issue.getKey(), codeDescription: { href: "https://rules.abaplint.org/" + issue.getKey() + "/" }, message: issue.getMessage().toString(), source: "abaplint", }; return diagnosic; } find(textDocument) { const issues = this.findIssues(textDocument); const diagnostics = []; for (const issue of issues) { diagnostics.push(Diagnostics.mapDiagnostic(issue)); } return diagnostics; } static mapSeverity(severity) { switch (severity) { case severity_1.Severity.Error: return LServer.DiagnosticSeverity.Error; case severity_1.Severity.Warning: return LServer.DiagnosticSeverity.Warning; case severity_1.Severity.Info: return LServer.DiagnosticSeverity.Information; default: return LServer.DiagnosticSeverity.Error; } } } exports.Diagnostics = Diagnostics; //# sourceMappingURL=diagnostics.js.map