Skip to content

Commit 5eebe8c

Browse files
committed
Added file identifier to error messages
1 parent f23f054 commit 5eebe8c

File tree

5 files changed

+26
-14
lines changed

5 files changed

+26
-14
lines changed

src/ExtendedCircomParser.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,24 @@ export class ExtendedCircomParser extends CircomParser {
1212
parserErrorListener: ErrorListener<Token>;
1313
lexerErrorListener: ErrorListener<number>;
1414

15-
constructor(tokens: antlr4.CommonTokenStream, lexer: CircomLexer) {
15+
fileIdentifier: string;
16+
17+
constructor(
18+
fileIdentifier: string,
19+
tokens: antlr4.CommonTokenStream,
20+
lexer: CircomLexer,
21+
) {
1622
super(tokens);
1723

1824
this.lexer = lexer;
19-
this.lexerErrorListener = new ErrorListener();
20-
this.parserErrorListener = new ErrorListener();
25+
this.lexerErrorListener = new ErrorListener(fileIdentifier);
26+
this.parserErrorListener = new ErrorListener(fileIdentifier);
2127

2228
this.initErrorListeners();
2329

2430
this.buildParseTrees = true;
31+
32+
this.fileIdentifier = fileIdentifier;
2533
}
2634

2735
circuit() {
@@ -42,11 +50,11 @@ export class ExtendedCircomParser extends CircomParser {
4250
}
4351

4452
initErrorListeners() {
45-
this.parserErrorListener = new ErrorListener();
53+
this.parserErrorListener = new ErrorListener(this.fileIdentifier);
4654
this.removeErrorListeners();
4755
this.addErrorListener(this.parserErrorListener);
4856

49-
this.lexerErrorListener = new ErrorListener();
57+
this.lexerErrorListener = new ErrorListener(this.fileIdentifier);
5058
this.lexer.removeErrorListeners();
5159
this.lexer.addErrorListener(this.lexerErrorListener);
5260
}

src/ExtendedCircomVisitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export class ExtendedCircomVisitor<Result> extends CircomVisitor<Result> {
1515

1616
protected addError(message: string, context: ParserRuleContext) {
1717
this.errors.push({
18-
templateName: this.templateIdentifier,
18+
fileIdentifier: this.templateIdentifier,
1919
message,
2020
line: context.start.line,
2121
column: context.start.column,

src/errors/ErrorListener.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ import { ParserErrorItem } from "../types";
55
class ErrorListener<TSymbol> extends AntlrErrorListener<TSymbol> {
66
private readonly _errors: ParserErrorItem[];
77

8-
constructor() {
8+
constructor(public fileIdentifier: string) {
99
super();
1010

1111
this._errors = [];
1212
}
1313

14-
// TODO: improve error handling
1514
syntaxError(
1615
recognizer: Recognizer<TSymbol>,
1716
offendingSymbol: TSymbol,
@@ -23,8 +22,8 @@ class ErrorListener<TSymbol> extends AntlrErrorListener<TSymbol> {
2322
message,
2423
line,
2524
column,
25+
fileIdentifier: this.fileIdentifier,
2626
context: null as any,
27-
templateName: null,
2827
});
2928
}
3029

src/index.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@ import { CircomLexer } from "./generated";
66
import { ExtendedCircomParser } from "./ExtendedCircomParser";
77

88
export function getCircomParser(source: string): ExtendedCircomParser {
9-
const inputStream = fs.existsSync(source)
10-
? antlr4.CharStreams.fromPathSync(source, "utf8")
11-
: antlr4.CharStreams.fromString(source);
9+
let inputStream: antlr4.CharStream;
10+
let fileIdentifier = "Built from source";
11+
if (fs.existsSync(source)) {
12+
inputStream = antlr4.CharStreams.fromPathSync(source, "utf8");
13+
fileIdentifier = source;
14+
} else {
15+
inputStream = antlr4.CharStreams.fromString(source);
16+
}
1217

1318
const lexer = new CircomLexer(inputStream);
1419
const tokens = new antlr4.CommonTokenStream(lexer);
1520

16-
return new ExtendedCircomParser(tokens, lexer);
21+
return new ExtendedCircomParser(fileIdentifier, tokens, lexer);
1722
}
1823

1924
export * from "./types";

src/types/errors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ParserRuleContext } from "antlr4";
22

33
export type ParserErrorItem = {
4-
templateName: string | null;
4+
fileIdentifier: string;
55
message: string;
66
line: number;
77
column: number;

0 commit comments

Comments
 (0)