UNPKG

antlr-ng

Version:

Next generation ANTLR Tool

62 lines (61 loc) 1.68 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); import { ST } from "stringtemplate4ts"; import { IssueCode, issueTypes } from "./Issues.js"; class ANTLRMessage { static { __name(this, "ANTLRMessage"); } fileName; line = -1; column = -1; args = []; issueCode; issue; e = null; constructor(...args) { this.issueCode = args.shift(); this.issue = issueTypes.get(this.issueCode); this.fileName = args.shift(); let next = args.shift(); if (typeof next !== "number") { this.e = next; next = args.shift(); } this.line = next; this.column = args.shift(); if (args.length > 0) { this.args = args; } } getMessageTemplate(verbose) { const messageST = new ST(this.issue.message); messageST.impl.name = IssueCode[this.issueCode]; messageST.add("verbose", verbose); for (let i = 0; i < this.args.length; i++) { let attr = "arg"; if (i > 0) { attr += String(i + 1); } messageST.add(attr, this.args[i]); } if (this.args.length < 2) { messageST.add("arg2", null); } if (this.e !== null) { messageST.add("exception", this.e); messageST.add("stackTrace", this.e.stack); } else { messageST.add("exception", null); messageST.add("stackTrace", null); } return messageST; } toString() { const name = IssueCode[this.issueCode]; return `Message{errorType=${name}, args=${this.args.join(", ")}, e=${this.e}, fileName='${this.fileName}', line=${this.line}, charPosition=${this.column}}`; } } export { ANTLRMessage };