Skip to content

Commit 0610122

Browse files
committed
Handling for EOF during error handling
1 parent 710da5a commit 0610122

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

server/src/project/parser/vbaAntlr.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Antlr
2-
import { CharStream, CommonTokenStream, TokenStream } from 'antlr4ng';
2+
import { CharStream, CommonTokenStream, Token, TokenStream } from 'antlr4ng';
33
import { DefaultErrorStrategy, Parser, RecognitionException } from 'antlr4ng';
44
import { vbaLexer } from '../../antlr/out/vbaLexer';
55
import { vbaParser } from '../../antlr/out/vbaParser';
@@ -23,7 +23,6 @@ export class VbaLexer extends vbaLexer {
2323
export class VbaParser extends vbaParser {
2424
constructor(input: TokenStream) {
2525
super(input);
26-
2726
}
2827

2928
static create(document: string): VbaParser {
@@ -91,10 +90,11 @@ export class VbaFmtParser extends vbafmtParser {
9190

9291
export class VbaErrorHandler extends DefaultErrorStrategy {
9392
recover(recognizer: Parser, e: RecognitionException): void {
93+
// Consume the error token if look-ahead is not EOF.
9494
const inputStream = recognizer.inputStream;
95-
// if (!recognizer.isMatchedEOF) {
95+
if (inputStream.LA(1) === Token.EOF) {
9696
inputStream.consume();
97-
// }
97+
}
9898
this.endErrorCondition(recognizer);
9999
}
100100
}

server/src/project/parser/vbaListener.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ import { DeclarationStatementElement, EnumDeclarationElement, TypeDeclarationEle
6363
import { FunctionDeclarationElement, PropertyGetDeclarationElement, PropertyLetDeclarationElement, PropertySetDeclarationElement, SubDeclarationElement } from '../elements/procedure';
6464
import { ExtensionConfiguration } from '../workspace';
6565
import { Services } from '../../injection/services';
66+
import { ErrorRuleElement } from '../elements/generic';
6667

6768
export class CommonParserCapability {
6869
document: VbaClassDocument | VbaModuleDocument;
@@ -213,7 +214,7 @@ export class VbaListener extends vbaListener {
213214
};
214215

215216
visitErrorNode(node: ErrorNode) {
216-
Services.logger.error(`Listener error @ ${node.getPayload()?.line ?? '--'}: ${node.getPayload()?.text}`);
217+
this.document.registerElement(new ErrorRuleElement(node, this.document.textDocument));
217218
}
218219
}
219220

0 commit comments

Comments
 (0)