summaryrefslogtreecommitdiff
path: root/test/language
diff options
context:
space:
mode:
authorLeo Balter <leonardo.balter@gmail.com>2018-02-05 11:44:03 -0500
committerGitHub <noreply@github.com>2018-02-05 11:44:03 -0500
commit31dfa8761ae0c18298f8c9d179e739b5e465f99c (patch)
tree4941bdbe8cb17d5df31542bd8747be2bd32b6410 /test/language
parent82c6148980332febe92a544a1fb653718e9fdb57 (diff)
parent1d96e257842d07783ff15bef60eea98c7fc8342d (diff)
downloadqtdeclarative-testsuites-31dfa8761ae0c18298f8c9d179e739b5e465f99c.tar.gz
Merge pull request #1404 from jugglinmike/refactor-for-parsers-function
Refactor function literal tests for parsers
Diffstat (limited to 'test/language')
-rw-r--r--test/language/expressions/function/name-arguments-non-strict.js (renamed from test/language/statements/function/13.1-3-8.js)2
-rw-r--r--test/language/expressions/function/name-arguments-strict-body.js (renamed from test/language/statements/function/13.1-42-s.js)10
-rw-r--r--test/language/expressions/function/name-arguments-strict.js (renamed from test/language/statements/function/13.1-14-s.js)10
-rw-r--r--test/language/expressions/function/name-eval-non-strict.js (renamed from test/language/statements/function/13.1-3-2.js)2
-rw-r--r--test/language/expressions/function/name-eval-strict-body.js (renamed from test/language/statements/function/13.1-38-s.js)10
-rw-r--r--test/language/expressions/function/name-eval-strict.js (renamed from test/language/statements/function/13.1-12-s.js)10
-rw-r--r--test/language/expressions/function/name-eval-stricteval.js (renamed from test/language/statements/function/13.1-37-s.js)0
-rw-r--r--test/language/expressions/function/param-arguments-non-strict.js (renamed from test/language/statements/function/13.1-2-6.js)2
-rw-r--r--test/language/expressions/function/param-duplicated-non-strict.js (renamed from test/language/statements/function/13.1-1-2.js)2
-rw-r--r--test/language/expressions/function/param-duplicated-strict-1.js (renamed from test/language/statements/function/13.1-8-s.js)8
-rw-r--r--test/language/expressions/function/param-duplicated-strict-2.js (renamed from test/language/statements/function/13.1-9-s.js)8
-rw-r--r--test/language/expressions/function/param-duplicated-strict-3.js (renamed from test/language/statements/function/13.1-10-s.js)8
-rw-r--r--test/language/expressions/function/param-duplicated-strict-body-1.js (renamed from test/language/statements/function/13.1-30-s.js)8
-rw-r--r--test/language/expressions/function/param-duplicated-strict-body-2.js (renamed from test/language/statements/function/13.1-32-s.js)8
-rw-r--r--test/language/expressions/function/param-duplicated-strict-body-3.js (renamed from test/language/statements/function/13.1-34-s.js)8
-rw-r--r--test/language/expressions/function/param-eval-non-strict.js (renamed from test/language/statements/function/13.1-2-2.js)2
-rw-r--r--test/language/expressions/function/param-eval-strict-body.js (renamed from test/language/statements/function/13.1-18-s.js)8
-rw-r--r--test/language/expressions/function/param-eval-stricteval.js (renamed from test/language/statements/function/13.1-17-s.js)0
-rw-r--r--test/language/statements/function/S13_A7_T2.js49
-rw-r--r--test/language/statements/function/enable-strict-via-body.js (renamed from test/language/statements/function/13.0-10-s.js)21
-rw-r--r--test/language/statements/function/enable-strict-via-outer-body.js (renamed from test/language/statements/function/13.0-11-s.js)21
-rw-r--r--test/language/statements/function/enable-strict-via-outer-script.js (renamed from test/language/statements/function/13.0-9-s.js)17
-rw-r--r--test/language/statements/function/invalid-2-names.js (renamed from test/language/statements/function/13.0-1.js)8
-rw-r--r--test/language/statements/function/invalid-3-names.js (renamed from test/language/statements/function/13.0-2.js)8
-rw-r--r--test/language/statements/function/invalid-function-body-1.js17
-rw-r--r--test/language/statements/function/invalid-function-body-2.js17
-rw-r--r--test/language/statements/function/invalid-function-body-3.js17
-rw-r--r--test/language/statements/function/invalid-name-dot.js (renamed from test/language/statements/function/13.0-3.js)10
-rw-r--r--test/language/statements/function/invalid-name-two-dots.js (renamed from test/language/statements/function/13.0-4.js)11
-rw-r--r--test/language/statements/function/line-terminator-non-strict.js (renamed from test/language/statements/function/S13_A16_T1.js)8
-rw-r--r--test/language/statements/function/line-terminator-strict.js (renamed from test/language/statements/function/S13_A16_T2.js)10
-rw-r--r--test/language/statements/function/name-arguments-non-strict.js (renamed from test/language/statements/function/13.1-3-7.js)2
-rw-r--r--test/language/statements/function/name-arguments-strict-body.js (renamed from test/language/statements/function/13.1-40-s.js)8
-rw-r--r--test/language/statements/function/name-arguments-strict.js (renamed from test/language/statements/function/13.1-13-s.js)8
-rw-r--r--test/language/statements/function/name-eval-non-strict.js (renamed from test/language/statements/function/13.1-3-1.js)2
-rw-r--r--test/language/statements/function/name-eval-strict-body.js (renamed from test/language/statements/function/13.1-36-s.js)8
-rw-r--r--test/language/statements/function/name-eval-strict.js (renamed from test/language/statements/function/13.1-11-s.js)8
-rw-r--r--test/language/statements/function/name-eval-stricteval.js (renamed from test/language/statements/function/13.1-35-s.js)0
-rw-r--r--test/language/statements/function/name-unicode.js (renamed from test/language/statements/function/S13_A14_T2.js)0
-rw-r--r--test/language/statements/function/param-arguments-non-strict.js (renamed from test/language/statements/function/13.1-2-5.js)2
-rw-r--r--test/language/statements/function/param-arguments-strict-body.js (renamed from test/language/statements/function/13.1-20-s.js)8
-rw-r--r--test/language/statements/function/param-arguments-strict.js (renamed from test/language/statements/function/13.1-3-s.js)8
-rw-r--r--test/language/statements/function/param-duplicated-non-strict.js (renamed from test/language/statements/function/13.1-1-1.js)2
-rw-r--r--test/language/statements/function/param-duplicated-strict-1.js (renamed from test/language/statements/function/13.1-5-s.js)8
-rw-r--r--test/language/statements/function/param-duplicated-strict-2.js (renamed from test/language/statements/function/13.1-6-s.js)8
-rw-r--r--test/language/statements/function/param-duplicated-strict-3.js (renamed from test/language/statements/function/13.1-7-s.js)8
-rw-r--r--test/language/statements/function/param-duplicated-strict-body-1.js (renamed from test/language/statements/function/13.1-24-s.js)8
-rw-r--r--test/language/statements/function/param-duplicated-strict-body-2.js (renamed from test/language/statements/function/13.1-26-s.js)8
-rw-r--r--test/language/statements/function/param-duplicated-strict-body-3.js (renamed from test/language/statements/function/13.1-28-s.js)8
-rw-r--r--test/language/statements/function/param-eval-non-strict.js (renamed from test/language/statements/function/13.1-2-1.js)2
-rw-r--r--test/language/statements/function/param-eval-strict-body.js (renamed from test/language/statements/function/13.1-16-s.js)8
-rw-r--r--test/language/statements/function/param-eval-strict.js (renamed from test/language/statements/function/13.1-1-s.js)8
-rw-r--r--test/language/statements/function/param-eval-stricteval.js (renamed from test/language/statements/function/13.1-15-s.js)0
53 files changed, 260 insertions, 182 deletions
diff --git a/test/language/statements/function/13.1-3-8.js b/test/language/expressions/function/name-arguments-non-strict.js
index 6e2d9e0ba..ecfe0b868 100644
--- a/test/language/statements/function/13.1-3-8.js
+++ b/test/language/expressions/function/name-arguments-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("(function arguments (){});");
+(function arguments (){});
diff --git a/test/language/statements/function/13.1-42-s.js b/test/language/expressions/function/name-arguments-strict-body.js
index 8e9a3fccb..542026bf0 100644
--- a/test/language/statements/function/13.1-42-s.js
+++ b/test/language/expressions/function/name-arguments-strict-body.js
@@ -7,10 +7,12 @@ description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
Identifier of a FunctionExpression whose FunctionBody is contained
in strict code
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
- var _13_1_42_s = {};
-assert.throws(SyntaxError, function() {
- eval("_13_1_42_s.x = function arguments() {'use strict';};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function arguments() {'use strict';});
diff --git a/test/language/statements/function/13.1-14-s.js b/test/language/expressions/function/name-arguments-strict.js
index 902419038..a88dd86db 100644
--- a/test/language/statements/function/13.1-14-s.js
+++ b/test/language/expressions/function/name-arguments-strict.js
@@ -6,10 +6,12 @@ es5id: 13.1-14-s
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
Identifier of a FunctionExpression in strict mode
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
- var _13_1_14_s = {};
-assert.throws(SyntaxError, function() {
- eval("_13_1_14_s.x = function arguments() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function arguments() {});
diff --git a/test/language/statements/function/13.1-3-2.js b/test/language/expressions/function/name-eval-non-strict.js
index d3b2f6bf7..0b136c285 100644
--- a/test/language/statements/function/13.1-3-2.js
+++ b/test/language/expressions/function/name-eval-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("(function eval(){});");
+(function eval(){});
diff --git a/test/language/statements/function/13.1-38-s.js b/test/language/expressions/function/name-eval-strict-body.js
index ac4db793d..c373e4617 100644
--- a/test/language/statements/function/13.1-38-s.js
+++ b/test/language/expressions/function/name-eval-strict-body.js
@@ -7,10 +7,12 @@ description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
Identifier of a FunctionExpression whose FunctionBody is contained
in strict code
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
- var _13_1_38_s = {};
-assert.throws(SyntaxError, function() {
- eval("_13_1_38_s.x = function eval() {'use strict'; };");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function eval() {'use strict';});
diff --git a/test/language/statements/function/13.1-12-s.js b/test/language/expressions/function/name-eval-strict.js
index 9ab5a3d72..d1e81dd1c 100644
--- a/test/language/statements/function/13.1-12-s.js
+++ b/test/language/expressions/function/name-eval-strict.js
@@ -6,10 +6,12 @@ es5id: 13.1-12-s
description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
Identifier of a FunctionExpression in strict mode
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
- var _13_1_12_s = {};
-assert.throws(SyntaxError, function() {
- eval("_13_1_12_s.x = function eval() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+(function eval() {});
diff --git a/test/language/statements/function/13.1-37-s.js b/test/language/expressions/function/name-eval-stricteval.js
index 5b2c1db6b..5b2c1db6b 100644
--- a/test/language/statements/function/13.1-37-s.js
+++ b/test/language/expressions/function/name-eval-stricteval.js
diff --git a/test/language/statements/function/13.1-2-6.js b/test/language/expressions/function/param-arguments-non-strict.js
index 8db8bf9b2..e3a9167fb 100644
--- a/test/language/statements/function/13.1-2-6.js
+++ b/test/language/expressions/function/param-arguments-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("(function foo(arguments){});");
+(function foo(arguments){});
diff --git a/test/language/statements/function/13.1-1-2.js b/test/language/expressions/function/param-duplicated-non-strict.js
index 0db6d3ba7..a1710392d 100644
--- a/test/language/statements/function/13.1-1-2.js
+++ b/test/language/expressions/function/param-duplicated-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval('(function foo(a,a){})');
+(function foo(a,a){});
diff --git a/test/language/statements/function/13.1-8-s.js b/test/language/expressions/function/param-duplicated-strict-1.js
index 3f38c146a..a1233a695 100644
--- a/test/language/statements/function/13.1-8-s.js
+++ b/test/language/expressions/function/param-duplicated-strict-1.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is created in
'strict mode' using a FunctionExpression and the function has two
identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_8_fun = function (param, param) { };");
-});
+(function (param, param) { });
diff --git a/test/language/statements/function/13.1-9-s.js b/test/language/expressions/function/param-duplicated-strict-2.js
index b107b8623..c4bd88ffc 100644
--- a/test/language/statements/function/13.1-9-s.js
+++ b/test/language/expressions/function/param-duplicated-strict-2.js
@@ -12,10 +12,12 @@ description: >
'strict mode' using a FunctionExpression and the function has two
identical parameters, which are separated by a unique parameter
name
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_9_fun = function (param1, param2, param1) { };");
-});
+(function (param1, param2, param1) { });
diff --git a/test/language/statements/function/13.1-10-s.js b/test/language/expressions/function/param-duplicated-strict-3.js
index c744d7ad8..0f8b4df2e 100644
--- a/test/language/statements/function/13.1-10-s.js
+++ b/test/language/expressions/function/param-duplicated-strict-3.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is created in
'strict mode' using a FunctionExpression and the function has
three identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_10_fun = function (param, param, param) { };")
-});
+(function (param, param, param) { });
diff --git a/test/language/statements/function/13.1-30-s.js b/test/language/expressions/function/param-duplicated-strict-body-1.js
index 3434df2d1..08c11c65c 100644
--- a/test/language/statements/function/13.1-30-s.js
+++ b/test/language/expressions/function/param-duplicated-strict-body-1.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionExpression whose FunctionBody is contained in strict
code and the function has two identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_30_fun = function (param, param) { 'use strict'; };");
-});
+(function (param, param) { 'use strict'; });
diff --git a/test/language/statements/function/13.1-32-s.js b/test/language/expressions/function/param-duplicated-strict-body-2.js
index e7ff3ebca..5d286c9c7 100644
--- a/test/language/statements/function/13.1-32-s.js
+++ b/test/language/expressions/function/param-duplicated-strict-body-2.js
@@ -12,10 +12,12 @@ description: >
a FunctionExpression whose FunctionBody is strict and the function
has two identical parameters, which are separated by a unique
parameter name
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_32_fun = function (param1, param2, param1) { 'use strict'; };");
-});
+(function (param1, param2, param1) { 'use strict'; });
diff --git a/test/language/statements/function/13.1-34-s.js b/test/language/expressions/function/param-duplicated-strict-body-3.js
index a4d45d00c..27807ffaf 100644
--- a/test/language/statements/function/13.1-34-s.js
+++ b/test/language/expressions/function/param-duplicated-strict-body-3.js
@@ -10,10 +10,12 @@ es5id: 13.1-34-s
description: >
Strict Mode - SyntaxError is thrown if a function declaration has
three identical parameters with a strict mode body
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_34_fun = function (param, param, param) { 'use strict'; };")
-});
+(function (param, param, param) { 'use strict'; });
diff --git a/test/language/statements/function/13.1-2-2.js b/test/language/expressions/function/param-eval-non-strict.js
index c3e856734..29161ccf0 100644
--- a/test/language/statements/function/13.1-2-2.js
+++ b/test/language/expressions/function/param-eval-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("(function foo(eval){});");
+(function foo(eval){});
diff --git a/test/language/statements/function/13.1-18-s.js b/test/language/expressions/function/param-eval-strict-body.js
index a3df9f85c..8b237ad05 100644
--- a/test/language/statements/function/13.1-18-s.js
+++ b/test/language/expressions/function/param-eval-strict-body.js
@@ -11,10 +11,12 @@ description: >
StrictMode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionExpression when FuctionBody is strict code
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("var _13_1_18_fun = function (eval) { 'use strict'; }");
-});
+(function (eval) { 'use strict'; });
diff --git a/test/language/statements/function/13.1-17-s.js b/test/language/expressions/function/param-eval-stricteval.js
index 57a9fe63f..57a9fe63f 100644
--- a/test/language/statements/function/13.1-17-s.js
+++ b/test/language/expressions/function/param-eval-stricteval.js
diff --git a/test/language/statements/function/S13_A7_T2.js b/test/language/statements/function/S13_A7_T2.js
deleted file mode 100644
index b4ed77cab..000000000
--- a/test/language/statements/function/S13_A7_T2.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 the Sputnik authors. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: The FunctionBody must be SourceElements
-es5id: 13_A7_T2
-description: >
- Inserting elements that is different from SourceElements into the
- FunctionBody
----*/
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#1
-try{
- eval("function __func(){/ ABC}");
- $ERROR('#1: eval("function __func(){/ ABC}") lead to throwing exception');
-} catch(e){
- if(!(e instanceof SyntaxError)){
- $ERROR('#1.1: eval("function __func(){/ ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
- }
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#3
-try{
- eval("function __func(){&1}");
- $ERROR('#3: eval("function __func(){&1}") lead to throwing exception');
-} catch(e){
- if(!(e instanceof SyntaxError)){
- $ERROR('#3.1: eval("function __func(){&1}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
- }
-}
-//
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-//CHECK#4
-try{
- eval("function __func(){# ABC}");
- $ERROR('#4: eval("function __func(){# ABC}") lead to throwing exception');
-} catch(e){
- if(!(e instanceof SyntaxError)){
- $ERROR('#4.1: eval("function __func(){# ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
- }
-}
-//
-//////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/function/13.0-10-s.js b/test/language/statements/function/enable-strict-via-body.js
index b47632572..5a7a830be 100644
--- a/test/language/statements/function/13.0-10-s.js
+++ b/test/language/statements/function/enable-strict-via-body.js
@@ -10,16 +10,17 @@ description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the code of this FunctionBody with an inner function contains a
Use Strict Directive
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
- function _13_0_10_fun() {
- function _13_0_10_inner() {
- "use strict";
- eval("eval = 42;");
- }
- _13_0_10_inner();
- };
-assert.throws(SyntaxError, function() {
- _13_0_10_fun();
-});
+throw "Test262: This statement should not be evaluated.";
+
+function _13_0_10_fun() {
+ function _13_0_10_inner() {
+ "use strict";
+ eval = 42;
+ }
+}
diff --git a/test/language/statements/function/13.0-11-s.js b/test/language/statements/function/enable-strict-via-outer-body.js
index 393033ff1..efd168aa4 100644
--- a/test/language/statements/function/13.0-11-s.js
+++ b/test/language/statements/function/enable-strict-via-outer-body.js
@@ -10,16 +10,17 @@ description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the code of this FunctionBody with an inner function which is in
strict mode
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
- function _13_0_11_fun() {
- "use strict";
- function _13_0_11_inner() {
- eval("eval = 42;");
- }
- _13_0_11_inner();
- };
-assert.throws(SyntaxError, function() {
- _13_0_11_fun();
-});
+throw "Test262: This statement should not be evaluated.";
+
+function _13_0_11_fun() {
+ "use strict";
+ function _13_0_11_inner() {
+ eval = 42;
+ }
+}
diff --git a/test/language/statements/function/13.0-9-s.js b/test/language/statements/function/enable-strict-via-outer-script.js
index da2066e98..f2f01d1e2 100644
--- a/test/language/statements/function/13.0-9-s.js
+++ b/test/language/statements/function/enable-strict-via-outer-script.js
@@ -10,13 +10,16 @@ description: >
Strict Mode - SourceElements is evaluated as strict mode code when
a FunctionDeclaration that is contained in strict mode code has an
inner function
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
- var _13_0_9_fun = function () {
- function _13_0_9_inner() { eval("eval = 42;"); }
- _13_0_9_inner();
- };
-assert.throws(SyntaxError, function() {
- _13_0_9_fun();
-});
+throw "Test262: This statement should not be evaluated.";
+
+var _13_0_9_fun = function () {
+ function _13_0_9_inner() {
+ eval = 42;
+ }
+};
diff --git a/test/language/statements/function/13.0-1.js b/test/language/statements/function/invalid-2-names.js
index 33b5fd66e..f7af44a72 100644
--- a/test/language/statements/function/13.0-1.js
+++ b/test/language/statements/function/invalid-2-names.js
@@ -6,9 +6,11 @@ es5id: 13.0-1
description: >
13.0 - multiple names in one function declaration is not allowed,
two function names
+negative:
+ phase: parse
+ type: SyntaxError
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function x, y() {}");
-});
+function x, y() {}
diff --git a/test/language/statements/function/13.0-2.js b/test/language/statements/function/invalid-3-names.js
index 7a3712f06..4d19df15d 100644
--- a/test/language/statements/function/13.0-2.js
+++ b/test/language/statements/function/invalid-3-names.js
@@ -6,9 +6,11 @@ es5id: 13.0-2
description: >
13.0 - multiple names in one function declaration is not allowed,
three function names
+negative:
+ phase: parse
+ type: SyntaxError
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function x,y,z(){}");
-});
+function x,y,z(){}
diff --git a/test/language/statements/function/invalid-function-body-1.js b/test/language/statements/function/invalid-function-body-1.js
new file mode 100644
index 000000000..9888d4d8f
--- /dev/null
+++ b/test/language/statements/function/invalid-function-body-1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The FunctionBody must be SourceElements
+es5id: 13_A7_T2
+description: >
+ Inserting elements that is different from SourceElements into the
+ FunctionBody
+negative:
+ phase: parse
+ type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+function __func(){/ ABC}
diff --git a/test/language/statements/function/invalid-function-body-2.js b/test/language/statements/function/invalid-function-body-2.js
new file mode 100644
index 000000000..bbd8c93ec
--- /dev/null
+++ b/test/language/statements/function/invalid-function-body-2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The FunctionBody must be SourceElements
+es5id: 13_A7_T2
+description: >
+ Inserting elements that is different from SourceElements into the
+ FunctionBody
+negative:
+ phase: parse
+ type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+function __func(){&1}
diff --git a/test/language/statements/function/invalid-function-body-3.js b/test/language/statements/function/invalid-function-body-3.js
new file mode 100644
index 000000000..6087c3ac0
--- /dev/null
+++ b/test/language/statements/function/invalid-function-body-3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: The FunctionBody must be SourceElements
+es5id: 13_A7_T2
+description: >
+ Inserting elements that is different from SourceElements into the
+ FunctionBody
+negative:
+ phase: parse
+ type: SyntaxError
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+function __func(){# ABC}
diff --git a/test/language/statements/function/13.0-3.js b/test/language/statements/function/invalid-name-dot.js
index f4eab6a1c..7fa20cd00 100644
--- a/test/language/statements/function/13.0-3.js
+++ b/test/language/statements/function/invalid-name-dot.js
@@ -6,9 +6,11 @@ es5id: 13.0-3
description: >
13.0 - property names in function definition is not allowed, add a
new property into object
+negative:
+ phase: parse
+ type: SyntaxError
---*/
- var obj = {};
-assert.throws(SyntaxError, function() {
- eval("function obj.tt() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+function obj.tt() {}
diff --git a/test/language/statements/function/13.0-4.js b/test/language/statements/function/invalid-name-two-dots.js
index ace2f52e1..b8b9eb62c 100644
--- a/test/language/statements/function/13.0-4.js
+++ b/test/language/statements/function/invalid-name-two-dots.js
@@ -6,10 +6,11 @@ es5id: 13.0-4
description: >
13.0 - multiple names in one function declaration is not allowed,
add a new property into a property which is a object
+negative:
+ phase: parse
+ type: SyntaxError
---*/
- var obj = {};
- obj.tt = { len: 10 };
-assert.throws(SyntaxError, function() {
- eval("function obj.tt.ss() {};");
-});
+throw "Test262: This statement should not be evaluated.";
+
+function obj.tt.ss() {}
diff --git a/test/language/statements/function/S13_A16_T1.js b/test/language/statements/function/line-terminator-non-strict.js
index 11dba26c6..d585e3fce 100644
--- a/test/language/statements/function/S13_A16_T1.js
+++ b/test/language/statements/function/line-terminator-non-strict.js
@@ -38,6 +38,12 @@ z
z();
-eval("function\u0009\u2029w(\u000C)\u00A0{\u000D};");
+// The following function expression is expressed with literal unicode
+// characters so that parsers may benefit from this test. The included code
+// points are as follows:
+//
+// "function\u0009\u2029w(\u000C)\u00A0{\u000D}"
+
+function 
w( ) { }
w();
diff --git a/test/language/statements/function/S13_A16_T2.js b/test/language/statements/function/line-terminator-strict.js
index 00fbf5995..3a00e1821 100644
--- a/test/language/statements/function/S13_A16_T2.js
+++ b/test/language/statements/function/line-terminator-strict.js
@@ -37,4 +37,12 @@ z
z();
-eval("function\u0009\u2029w(\u000C)\u00A0{\u000D}; w()");
+// The following function expression is expressed with literal unicode
+// characters so that parsers may benefit from this test. The included code
+// points are as follows:
+//
+// "function\u0009\u2029w(\u000C)\u00A0{\u000D}"
+
+function 
w( ) { }
+
+w();
diff --git a/test/language/statements/function/13.1-3-7.js b/test/language/statements/function/name-arguments-non-strict.js
index e9445cfd8..8027c9626 100644
--- a/test/language/statements/function/13.1-3-7.js
+++ b/test/language/statements/function/name-arguments-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("function arguments (){};");
+function arguments (){}
diff --git a/test/language/statements/function/13.1-40-s.js b/test/language/statements/function/name-arguments-strict-body.js
index 8c7704607..9b13ce5cc 100644
--- a/test/language/statements/function/13.1-40-s.js
+++ b/test/language/statements/function/name-arguments-strict-body.js
@@ -7,10 +7,12 @@ description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
Identifier of a FunctionDeclaration whose FunctionBody is
contained in strict code
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function arguments() { 'use strict'; };")
-});
+function arguments() { 'use strict'; }
diff --git a/test/language/statements/function/13.1-13-s.js b/test/language/statements/function/name-arguments-strict.js
index ca4217170..7b6f9bd5a 100644
--- a/test/language/statements/function/13.1-13-s.js
+++ b/test/language/statements/function/name-arguments-strict.js
@@ -6,10 +6,12 @@ es5id: 13.1-13-s
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
function name of a FunctionDeclaration in strict mode
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function arguments() { };")
-});
+function arguments() { }
diff --git a/test/language/statements/function/13.1-3-1.js b/test/language/statements/function/name-eval-non-strict.js
index fa2f58983..0206d33bf 100644
--- a/test/language/statements/function/13.1-3-1.js
+++ b/test/language/statements/function/name-eval-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("function eval(){};");
+function eval(){}
diff --git a/test/language/statements/function/13.1-36-s.js b/test/language/statements/function/name-eval-strict-body.js
index ce5c98ec0..a11eea225 100644
--- a/test/language/statements/function/13.1-36-s.js
+++ b/test/language/statements/function/name-eval-strict-body.js
@@ -7,10 +7,12 @@ description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
function name of a FunctionDeclaration whose FunctionBody is in
strict mode
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function eval() { 'use strict'; };")
-});
+function eval() { 'use strict'; }
diff --git a/test/language/statements/function/13.1-11-s.js b/test/language/statements/function/name-eval-strict.js
index f518e3e3e..a490c39ea 100644
--- a/test/language/statements/function/13.1-11-s.js
+++ b/test/language/statements/function/name-eval-strict.js
@@ -6,10 +6,12 @@ es5id: 13.1-11-s
description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
function name of a FunctionDeclaration in strict mode
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function eval() { };")
-});
+function eval() { }
diff --git a/test/language/statements/function/13.1-35-s.js b/test/language/statements/function/name-eval-stricteval.js
index ca9376953..ca9376953 100644
--- a/test/language/statements/function/13.1-35-s.js
+++ b/test/language/statements/function/name-eval-stricteval.js
diff --git a/test/language/statements/function/S13_A14_T2.js b/test/language/statements/function/name-unicode.js
index f28b51c5f..f28b51c5f 100644
--- a/test/language/statements/function/S13_A14_T2.js
+++ b/test/language/statements/function/name-unicode.js
diff --git a/test/language/statements/function/13.1-2-5.js b/test/language/statements/function/param-arguments-non-strict.js
index 7d7f9cd00..a65a50e95 100644
--- a/test/language/statements/function/13.1-2-5.js
+++ b/test/language/statements/function/param-arguments-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("function foo(arguments){};");
+function foo(arguments){}
diff --git a/test/language/statements/function/13.1-20-s.js b/test/language/statements/function/param-arguments-strict-body.js
index 6d8b18b2d..5b9d2a1b0 100644
--- a/test/language/statements/function/13.1-20-s.js
+++ b/test/language/statements/function/param-arguments-strict-body.js
@@ -11,10 +11,12 @@ description: >
StrictMode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionDeclaration when FuctionBody is strict code
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_20_fun(arguments) { 'use strict'; }");
-});
+function _13_1_20_fun(arguments) { 'use strict'; }
diff --git a/test/language/statements/function/13.1-3-s.js b/test/language/statements/function/param-arguments-strict.js
index cb4c6cebb..4d37b8e87 100644
--- a/test/language/statements/function/13.1-3-s.js
+++ b/test/language/statements/function/param-arguments-strict.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionDeclaration
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_3_fun(arguments) { }");
-});
+function _13_1_3_fun(arguments) { }
diff --git a/test/language/statements/function/13.1-1-1.js b/test/language/statements/function/param-duplicated-non-strict.js
index fe491ee04..0f8da7bc2 100644
--- a/test/language/statements/function/13.1-1-1.js
+++ b/test/language/statements/function/param-duplicated-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval('function foo(a,a){}');
+function foo(a,a){}
diff --git a/test/language/statements/function/13.1-5-s.js b/test/language/statements/function/param-duplicated-strict-1.js
index 3f766c679..b133910ed 100644
--- a/test/language/statements/function/13.1-5-s.js
+++ b/test/language/statements/function/param-duplicated-strict-1.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is declared in
'strict mode' using a FunctionDeclaration and the function has two
identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_5_fun(param, param) { }");
-});
+function _13_1_5_fun(param, param) { }
diff --git a/test/language/statements/function/13.1-6-s.js b/test/language/statements/function/param-duplicated-strict-2.js
index cf5b51d3e..3abd84005 100644
--- a/test/language/statements/function/13.1-6-s.js
+++ b/test/language/statements/function/param-duplicated-strict-2.js
@@ -12,10 +12,12 @@ description: >
'strict mode' using a FunctionDeclaration and the function has two
identical parameters, which are separated by a unique parameter
name
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_6_fun(param1, param2, param1) { }");
-});
+function _13_1_6_fun(param1, param2, param1) { }
diff --git a/test/language/statements/function/13.1-7-s.js b/test/language/statements/function/param-duplicated-strict-3.js
index aefc23a81..bbde6fb5d 100644
--- a/test/language/statements/function/13.1-7-s.js
+++ b/test/language/statements/function/param-duplicated-strict-3.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is created in
'strict mode' using a FunctionDeclaration and the function has
three identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_7_fun(param, param, param) { }");
-});
+function _13_1_7_fun(param, param, param) { }
diff --git a/test/language/statements/function/13.1-24-s.js b/test/language/statements/function/param-duplicated-strict-body-1.js
index bfb7fc45b..fcbba0610 100644
--- a/test/language/statements/function/13.1-24-s.js
+++ b/test/language/statements/function/param-duplicated-strict-body-1.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration whose FunctionBody is contained in strict
code and the function has two identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_24_fun(param, param) { 'use strict'; }");
-});
+function _13_1_24_fun(param, param) { 'use strict'; }
diff --git a/test/language/statements/function/13.1-26-s.js b/test/language/statements/function/param-duplicated-strict-body-2.js
index bb385da51..5266d30aa 100644
--- a/test/language/statements/function/13.1-26-s.js
+++ b/test/language/statements/function/param-duplicated-strict-body-2.js
@@ -12,10 +12,12 @@ description: >
a FunctionDeclaration whose FunctionBody is contained in strict
code and the function has two identical parameters which are
separated by a unique parameter name
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_26_fun(param1, param2, param1) { 'use strict'; }");
-});
+function _13_1_26_fun(param1, param2, param1) { 'use strict'; }
diff --git a/test/language/statements/function/13.1-28-s.js b/test/language/statements/function/param-duplicated-strict-body-3.js
index 54760ba6b..6783272a1 100644
--- a/test/language/statements/function/13.1-28-s.js
+++ b/test/language/statements/function/param-duplicated-strict-body-3.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration whose FunctionBody is contained in strict
code and the function has three identical parameters
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_28_fun(param, param, param) { 'use strict'; }");
-});
+function _13_1_28_fun(param, param, param) { 'use strict'; }
diff --git a/test/language/statements/function/13.1-2-1.js b/test/language/statements/function/param-eval-non-strict.js
index c517620a9..561b85377 100644
--- a/test/language/statements/function/13.1-2-1.js
+++ b/test/language/statements/function/param-eval-non-strict.js
@@ -9,4 +9,4 @@ description: >
flags: [noStrict]
---*/
- eval("function foo(eval){};");
+function foo(eval){};
diff --git a/test/language/statements/function/13.1-16-s.js b/test/language/statements/function/param-eval-strict-body.js
index 961dea507..c47006eda 100644
--- a/test/language/statements/function/13.1-16-s.js
+++ b/test/language/statements/function/param-eval-strict-body.js
@@ -11,10 +11,12 @@ description: >
StrictMode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionDeclaration when FuctionBody is strict code
+negative:
+ phase: parse
+ type: SyntaxError
flags: [noStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_16_fun(eval) { 'use strict'; }");
-});
+function _13_1_16_fun(eval) { 'use strict'; }
diff --git a/test/language/statements/function/13.1-1-s.js b/test/language/statements/function/param-eval-strict.js
index 8f1702734..f3e115f57 100644
--- a/test/language/statements/function/13.1-1-s.js
+++ b/test/language/statements/function/param-eval-strict.js
@@ -11,10 +11,12 @@ description: >
Strict Mode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionDeclaration
+negative:
+ phase: parse
+ type: SyntaxError
flags: [onlyStrict]
---*/
+throw "Test262: This statement should not be evaluated.";
-assert.throws(SyntaxError, function() {
- eval("function _13_1_1_fun(eval) { }");
-});
+function _13_1_1_fun(eval) { }
diff --git a/test/language/statements/function/13.1-15-s.js b/test/language/statements/function/param-eval-stricteval.js
index 03370a8a1..03370a8a1 100644
--- a/test/language/statements/function/13.1-15-s.js
+++ b/test/language/statements/function/param-eval-stricteval.js