@abaplint/core
Version:
abaplint - Core API
60 lines • 2.17 kB
JavaScript
;
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