Lint and format src/compiler/utils/error.js

pull/8569/head
Simon Holthausen 3 years ago
parent cc1caf1e79
commit 4f64d08a71

@ -2,42 +2,41 @@ import { locate } from 'locate-character';
import get_code_frame from './get_code_frame.js'; import get_code_frame from './get_code_frame.js';
/** /**
* @extends Error * @extends Error
*/ */
class CompileError extends Error { class CompileError extends Error {
/**
* @type {string}
*/
code = undefined;
/** /**
* @type {string} * @type {{ line: number; column: number }}
*/ */
code = undefined; start = undefined;
/**
* @type {{ line: number; column: number }}
*/
start = undefined;
/** /**
* @type {{ line: number; column: number }} * @type {{ line: number; column: number }}
*/ */
end = undefined; end = undefined;
/** /**
* @type {number} * @type {number}
*/ */
pos = undefined; pos = undefined;
/** /**
* @type {string} * @type {string}
*/ */
filename = undefined; filename = undefined;
/** /**
* @type {string} * @type {string}
*/ */
frame = undefined; frame = undefined;
toString() { toString() {
return `${this.message} (${this.start.line}:${this.start.column})\n${this.frame}`; return `${this.message} (${this.start.line}:${this.start.column})\n${this.frame}`;
} }
} }
/** /**
@ -53,19 +52,15 @@ class CompileError extends Error {
* @returns {never} * @returns {never}
*/ */
export default function error(message, props) { export default function error(message, props) {
const error = new CompileError(message); const error = new CompileError(message);
error.name = props.name; error.name = props.name;
const start = locate(props.source, props.start, { offsetLine: 1 }); const start = locate(props.source, props.start, { offsetLine: 1 });
const end = locate(props.source, props.end || props.start, { offsetLine: 1 }); const end = locate(props.source, props.end || props.start, { offsetLine: 1 });
error.code = props.code; error.code = props.code;
error.start = start; error.start = start;
error.end = end; error.end = end;
error.pos = props.start; error.pos = props.start;
error.filename = props.filename; error.filename = props.filename;
error.frame = get_code_frame(props.source, start.line - 1, start.column); error.frame = get_code_frame(props.source, start.line - 1, start.column);
throw error; throw error;
} }

Loading…
Cancel
Save