Fix return statement outside of function body
authorSimon Hausmann <simon.hausmann@digia.com>
Thu, 24 Jan 2013 13:27:36 +0000 (14:27 +0100)
committerLars Knoll <lars.knoll@digia.com>
Thu, 24 Jan 2013 13:46:12 +0000 (14:46 +0100)
Such a program is syntactically incorrect

Change-Id: Ica23c67aae55890a36064987f6019d9d7f50585e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
qv4codegen.cpp
tests/TestExpectations

index 5678373..dfc855b 100644 (file)
@@ -2289,6 +2289,8 @@ bool Codegen::visit(LocalForStatement *ast)
 
 bool Codegen::visit(ReturnStatement *ast)
 {
+    if (_mode == GlobalCode)
+        throwSyntaxError(ast->returnToken, QCoreApplication::translate("qv4codegen", "Return statement outside of function"));
     if (ast->expression) {
         Result expr = expression(ast->expression);
         move(_block->TEMP(_returnAddress), *expr);
index e6a473f..311f3c9 100644 (file)
@@ -132,14 +132,4 @@ Sbp_A3_T1 failing
 Sbp_A4_T1 failing
 Sbp_A4_T2 failing
 S12.4_A1 failing
-S12.9_A1_T1 failing
-S12.9_A1_T10 failing
-S12.9_A1_T2 failing
-S12.9_A1_T3 failing
-S12.9_A1_T4 failing
-S12.9_A1_T5 failing
-S12.9_A1_T6 failing
-S12.9_A1_T7 failing
-S12.9_A1_T8 failing
-S12.9_A1_T9 failing
-S15.2.4.4_A14 failing
+S15.2.4.4_A14 failing
\ No newline at end of file