diff --git a/expressions/src/completion.ts b/expressions/src/completion.ts index 1708905..7a29a60 100644 --- a/expressions/src/completion.ts +++ b/expressions/src/completion.ts @@ -81,9 +81,6 @@ export function complete( extensionFunctions ); const expr = p.parse(); - if (!expr) { - return []; - } const ev = new Evaluator(expr, context, functions); const result = ev.evaluate(); diff --git a/expressions/src/evaluator.test.ts b/expressions/src/evaluator.test.ts index e63ceeb..e1fa8fd 100644 --- a/expressions/src/evaluator.test.ts +++ b/expressions/src/evaluator.test.ts @@ -1,14 +1,9 @@ -import {Expr} from "./ast"; import * as data from "./data"; import {ExpressionEvaluationError} from "./errors"; import {Evaluator} from "./evaluator"; import {Lexer} from "./lexer"; import {Parser} from "./parser"; -function assertDefined(x: Expr | undefined): asserts x is Expr { - expect(x).toBeDefined(); -} - describe("evaluator", () => { const lexAndParse = (input: string) => { const lexer = new Lexer(input); @@ -17,7 +12,6 @@ describe("evaluator", () => { // Parse const parser = new Parser(result.tokens, ["foo"], []); const expr = parser.parse(); - assertDefined(expr); return expr; }; diff --git a/expressions/src/parser.ts b/expressions/src/parser.ts index 9c15c23..6dbb5a2 100644 --- a/expressions/src/parser.ts +++ b/expressions/src/parser.ts @@ -43,13 +43,16 @@ export class Parser { }; } - public parse(): Expr | undefined { + public parse(): Expr { + // eslint-disable-next-line prefer-const + let result!: Expr; + // No tokens if (this.atEnd()) { - return; + return result; } - const result = this.expression(); + result = this.expression(); if (!this.atEnd()) { throw this.buildError(ErrorType.ErrorUnexpectedSymbol, this.peek()); diff --git a/expressions/src/xlang.test.ts b/expressions/src/xlang.test.ts index 941335b..a7d36be 100644 --- a/expressions/src/xlang.test.ts +++ b/expressions/src/xlang.test.ts @@ -119,7 +119,7 @@ describe("x-lang tests", () => { // Parse const contextNames = testCase.contexts.pairs().map(x => x.key); const parser = new Parser(result.tokens, contextNames, []); - let expr: Expr | undefined; + let expr: Expr; try { expr = parser.parse();