From 40ded579bd977dc8fc41aaa1cdfca36822d14fc6 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 4 Jul 2019 13:18:55 +0200 Subject: Simplify codegen error handling There can only ever be one error, either a syntax error or a reference error. We record the error type as we want to get rid of the virtual throwError methods in favor of an explicit compilation result. Change-Id: Ie228490aad8efb7885083f6485f931299567f54c Reviewed-by: Fabian Kosmale Reviewed-by: Simon Hausmann --- src/qml/jsruntime/qv4runtimecodegen.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/qml/jsruntime/qv4runtimecodegen.cpp') diff --git a/src/qml/jsruntime/qv4runtimecodegen.cpp b/src/qml/jsruntime/qv4runtimecodegen.cpp index 99d0de5ec6..8d324acbd0 100644 --- a/src/qml/jsruntime/qv4runtimecodegen.cpp +++ b/src/qml/jsruntime/qv4runtimecodegen.cpp @@ -59,7 +59,7 @@ void RuntimeCodegen::generateFromFunctionExpression(const QString &fileName, scan(ast); scan.leaveEnvironment(); - if (hasError) + if (hasError()) return; int index = defineFunction(ast->name.toString(), ast, ast->formals, ast->body); @@ -68,17 +68,19 @@ void RuntimeCodegen::generateFromFunctionExpression(const QString &fileName, void RuntimeCodegen::throwSyntaxError(const AST::SourceLocation &loc, const QString &detail) { - if (hasError) + if (hasError()) return; - hasError = true; + + Codegen::throwSyntaxError(loc, detail); engine->throwSyntaxError(detail, _module->fileName, loc.startLine, loc.startColumn); } void RuntimeCodegen::throwReferenceError(const AST::SourceLocation &loc, const QString &detail) { - if (hasError) + if (hasError()) return; - hasError = true; + + Codegen::throwReferenceError(loc, detail); engine->throwReferenceError(detail, _module->fileName, loc.startLine, loc.startColumn); } -- cgit v1.2.3