test function names for eval or arguments in strict mode
authorLars Knoll <lars.knoll@digia.com>
Sun, 27 Jan 2013 20:27:44 +0000 (21:27 +0100)
committerSimon Hausmann <simon.hausmann@digia.com>
Mon, 28 Jan 2013 12:06:18 +0000 (13:06 +0100)
using these as function names should trigger a syntax error
in strict mode.

Change-Id: I8d83fda72db856b692c8f6f1454c762255bcaef1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
qv4codegen.cpp
tests/TestExpectations

index 0730feb..1490dad 100644 (file)
@@ -324,6 +324,8 @@ protected:
 
     virtual bool visit(FunctionExpression *ast)
     {
+        if (_env->isStrict && (ast->name == QLatin1String("eval") || ast->name == QLatin1String("arguments")))
+            _cg->throwSyntaxError(ast->identifierToken, QCoreApplication::translate("qv4codegen", "Function name may not be eval or arguments in strict mode"));
         enterFunction(ast, ast->name.toString(), ast->formals, ast->body);
         return true;
     }
@@ -346,6 +348,8 @@ protected:
 
     virtual bool visit(FunctionDeclaration *ast)
     {
+        if (_env->isStrict && (ast->name == QLatin1String("eval") || ast->name == QLatin1String("arguments")))
+            _cg->throwSyntaxError(ast->identifierToken, QCoreApplication::translate("qv4codegen", "Function name may not be eval or arguments in strict mode"));
         enterFunction(ast, ast->name.toString(), ast->formals, ast->body, ast);
         return true;
     }
index 3b3d390..800340a 100644 (file)
@@ -34,18 +34,6 @@ S11.8.6_A5_T2 failing
 12.14-13 failing
 S13_A15_T4 failing
 S13_A3_T1 failing
-13.1-11-s failing
-13.1-12-s failing
-13.1-13-s failing
-13.1-14-s failing
-13.1-35-s failing
-13.1-36-s failing
-13.1-37-s failing
-13.1-38-s failing
-13.1-39-s failing
-13.1-40-s failing
-13.1-41-s failing
-13.1-42-s failing
 S13.2.3_A1 failing
 S14_A2 failing
 14.1-5-s failing