Merge pull request #2117 from jugglinmike/refactor-for-parsers-misc-stmts

Refactor misc. statement tests for parsers
This commit is contained in:
Leo Balter 2019-04-02 14:07:35 -04:00 committed by GitHub
commit cd1df5fae2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 240 additions and 287 deletions

View File

@ -4,9 +4,11 @@
/*---
es5id: 12.1-1
description: "12.1 - block '{ StatementListopt };' is not allowed: try-catch"
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("try{};catch(){}");
});
try{};catch(){}

View File

@ -6,9 +6,11 @@ es5id: 12.1-2
description: >
12.1 - block '{ StatementListopt };' is not allowed:
try-catch-finally
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("try{};catch{};finally{}");
});
try{};catch{};finally{}

View File

@ -4,9 +4,11 @@
/*---
es5id: 12.1-3
description: "12.1 - block '{ StatementListopt };' is not allowed: try-finally"
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("try{};finally{}");
});
try{};finally{}

View File

@ -4,9 +4,11 @@
/*---
es5id: 12.1-4
description: "12.1 - block '{ StatementListopt };' is not allowed: if-else"
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("if{};else{}");
});
if{};else{}

View File

@ -4,9 +4,11 @@
/*---
es5id: 12.1-5
description: "12.1 - block '{ StatementListopt };' is not allowed: if-else-if"
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("if{};else if{}");
});
if{};else if{}

View File

@ -6,9 +6,11 @@ es5id: 12.1-6
description: >
12.1 - block '{ StatementListopt };' is not allowed:
if-else-if-else
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("if{};else if{};else{}");
});
if{};else if{};else{}

View File

@ -4,9 +4,11 @@
/*---
es5id: 12.1-7
description: "12.1 - block '{ StatementListopt };' is not allowed: do-while"
negative:
phase: parse
type: SyntaxError
---*/
$DONOTEVALUATE();
assert.throws(SyntaxError, function() {
eval("do{};while()");
});
do{};while()

View File

@ -1,66 +0,0 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
Since LineTerminator between "break" and Identifier is not allowed,
"break" is evaluated without label
es5id: 12.8_A2
description: >
Checking by using eval, inserting LineTerminator between break and
Identifier
---*/
var result;
//////////////////////////////////////////////////////////////////////////////
//CHECK#1
try{
eval("FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\u000AFOR1;var y=2;} while(0);} result = i;");
if (result!==2) {
$ERROR('#1: Since LineTerminator(U-000A) between break and Identifier not allowed break evaluates without label');
}
} catch(e){
$ERROR('#1.1: eval("FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\\u000AFOR1;var y=2;} while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//CHECK#2
try{
eval("FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\u000DFOR2;var y=2;} while(0);} result = i;");
if (result!==2) {
$ERROR('#2: Since LineTerminator(U-000D) between break and Identifier not allowed break evaluates without label');
}
} catch(e){
$ERROR('#2.1: eval("FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\\u000DFOR2;var y=2;} while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//CHECK#3
try{
eval("FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\u2028FOR3;var y=2;} while(0);} result = i;");
if (result!==2) {
$ERROR('#3: Since LineTerminator(U-2028) between break and Identifier not allowed break evaluates without label');
}
} catch(e){
$ERROR('#3.1: eval("FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\\u2028FOR3;var y=2;} while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//CHECK#4
try{
eval("FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\u2029FOR4;var y=2;} while(0);} result = i;");
if (result!==2) {
$ERROR('#4: Since LineTerminator(U-2029) between break and Identifier not allowed break evaluates without label');
}
} catch(e){
$ERROR('#4.1: eval("FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\\u2029FOR4;var y=2;} while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,45 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
Since LineTerminator between "break" and Identifier is not allowed,
"break" is evaluated without label
es5id: 12.8_A2
description: >
Checking by using eval, inserting LineTerminator between break and
Identifier
---*/
FOR1 : for(var i=1;i<2;i++){
LABEL1 : do {
break
FOR1;
} while(0);
}
assert.sameValue(i, 2, '#1: Since LineTerminator(U-000A) between break and Identifier not allowed break evaluates without label');
FOR2 : for(var i=1;i<2;i++){
LABEL2 : do {
break FOR2;
} while(0);
}
assert.sameValue(i, 2, '#2: Since LineTerminator(U-000D) between break and Identifier not allowed break evaluates without label');
FOR3 : for(var i=1;i<2;i++){
LABEL3 : do {
breakFOR3;
} while(0);
}
assert.sameValue(i, 2, '#3: Since LineTerminator(U-2028) between break and Identifier not allowed break evaluates without label');
FOR4 : for(var i=1;i<2;i++){
LABEL4 : do {
breakFOR4;
} while(0);
}
assert.sameValue(i, 2, '#4: Since LineTerminator(U-2029) between break and Identifier not allowed break evaluates without label');

View File

@ -1,66 +0,0 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
Since LineTerminator between "continue" and Identifier is not allowed,
"continue" is evaluated without label
es5id: 12.7_A2
description: >
Checking by using eval, inserting LineTerminator between continue
and Identifier
---*/
var result;
//////////////////////////////////////////////////////////////////////////////
//CHECK#1
try{
eval("FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\u000AFOR1; } while(0);} result = j;");
if (result!==2) {
$ERROR('#1: Since LineTerminator(U-000A) between continue and Identifier not allowed continue evaluates without label');
}
} catch(e){
$ERROR('#1.1: eval("FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\\u000AFOR1; } while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//CHECK#2
try{
eval("FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\u000DFOR2; } while(0);} result = j;");
if (result!==2) {
$ERROR('#2: Since LineTerminator(U-000D) between continue and Identifier not allowed continue evaluates without label');
}
} catch(e){
$ERROR('#2.1: eval("FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\\u000DFOR2; } while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//CHECK#3
try{
eval("FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\u2028FOR3; } while(0);} result = j;");
if (result!==2) {
$ERROR('#3: Since LineTerminator(U-2028) between continue and Identifier not allowed continue evaluates without label');
}
} catch(e){
$ERROR('#3.1: eval("FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\\u2028FOR3; } while(0);}") does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//CHECK#4
try{
eval("FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\u2029FOR4; } while(0);} result = j;");
if (result!==2) {
$ERROR('#4: Since LineTerminator(U-2029) between continue and Identifier not allowed continue evaluates without label');
}
} catch(e){
$ERROR('#4.1: eval("FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\\u2029FOR4; } while(0);}"); does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,44 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
Since LineTerminator between "continue" and Identifier is not allowed,
"continue" is evaluated without label
es5id: 12.7_A2
description: >
Checking by using eval, inserting LineTerminator between continue
and Identifier
---*/
FOR1 : for(var i=1;i<2;i++){
FOR1NESTED : for(var j=1;j<2;j++) {
continue
FOR1;
} while(0);
}
assert.sameValue(j, 2, '#1: Since LineTerminator(U-000A) between continue and Identifier not allowed continue evaluates without label');
FOR2 : for(var i=1;i<2;i++){
FOR2NESTED : for(var j=1;j<2;j++) {
continue FOR2;
} while(0);
}
assert.sameValue(j, 2, '#2: Since LineTerminator(U-000D) between continue and Identifier not allowed continue evaluates without label');
FOR3 : for(var i=1;i<2;i++){
FOR3NESTED : for(var j=1;j<2;j++) {
continueFOR3;
} while(0);
}
assert.sameValue(j, 2, '#3: Since LineTerminator(U-2028) between continue and Identifier not allowed continue evaluates without label');
FOR4 : for(var i=1;i<2;i++){
FOR4NESTED : for(var j=1;j<2;j++) {
continueFOR4;
} while(0);
}
assert.sameValue(j, 2, '#4: Since LineTerminator(U-2029) between continue and Identifier not allowed continue evaluates without label');

View File

@ -1,26 +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 result of evaluating "for( ExpNoIn;Exp;Exp)" loop is returning
(normal, evalValue, empty)
es5id: 12.6.3_A9.1
description: Using eval
---*/
var supreme, count;
supreme=5;
//////////////////////////////////////////////////////////////////////////////
//CHECK#
try {
var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }");
if (__evaluated !== void 0) {
$ERROR('#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
}
} catch (e) {
$ERROR('#1: var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////

View File

@ -1,26 +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 result of evaluating "for(var ExpNoIn;Exp;Exp)" loop is returning
(normal, evalValue, empty)
es5id: 12.6.3_A9
description: Using eval
---*/
var supreme;
supreme=5;
//////////////////////////////////////////////////////////////////////////////
//CHECK#
try {
var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }");
if (__evaluated !== void 0) {
$ERROR('#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
}
} catch (e) {
$ERROR('#1: var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////

View File

@ -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 result of evaluating "for( ExpNoIn;Exp;Exp)" loop is returning
(normal, evalValue, empty)
es5id: 12.6.3_A9.1
description: Using eval
---*/
var supreme, count;
supreme=5;
var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }");
assert.sameValue(__evaluated, void 0, '#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated);

View File

@ -0,0 +1,13 @@
// Copyright 2019 Mike Pennisi. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: For head may omit optional expressions
es5id: 12.6.3_A9.1
---*/
var supreme = 5
var count;
for(count=0;;) {if (count===supreme)break;else count++; }

View File

@ -0,0 +1,16 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
The result of evaluating "for(var ExpNoIn;Exp;Exp)" loop is returning
(normal, evalValue, empty)
es5id: 12.6.3_A9
description: Using eval
---*/
var supreme=5;
var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }");
assert.sameValue(__evaluated, void 0, '#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );

View File

@ -0,0 +1,11 @@
// Copyright 2019 Mike Pennisi. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: For head may omit optional expressions
es5id: 12.6.3_A9
---*/
var supreme=5;
for(var count=0;;) {if (count===supreme)break;else count++; }

View File

@ -1,25 +0,0 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
In the "if" statement empty statement is allowed and is evaluated to
"undefined"
es5id: 12.5_A7
description: Checking by using eval "eval("if(1);"))"
---*/
//////////////////////////////////////////////////////////////////////////////
//CHECK#1
try {
var __evaluated = eval("if(1);");
if (__evaluated !== undefined) {
$ERROR('#1: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated );
}
} catch (e) {
$ERROR('#1.1: "__evaluated = eval("if(1);")" does not lead to throwing exception');
}
//
//////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,14 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
In the "if" statement empty statement is allowed and is evaluated to
"undefined"
es5id: 12.5_A7
description: Checking by using eval "eval("if(1);"))"
---*/
var __evaluated = eval("if(1);");
assert.sameValue(__evaluated, undefined, '#1: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated);

View File

@ -0,0 +1,9 @@
// Copyright 2019 Mike Pennisi. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: In the "if" statement empty statement is allowed.
es5id: 12.5_A7
---*/
if(1);

View File

@ -1,57 +0,0 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
LineTerminator between return and Identifier_opt yields return without
Identifier_opt
es5id: 12.9_A2
description: >
Checking by using eval, inserting LineTerminator between return
and Variable
---*/
//CHECK#1
try{
if (eval("(function(){var x = 1;return\u000Ax;var y=2;})()") !== undefined) {
$ERROR("#1: LineTerminator(U-000A) between return and Identifier_opt yields return without Identifier_opt");
}
} catch(e){
$ERROR('#1: eval("(function(){var x = 1;return\\u000Ax;var y=2;})()") does not lead to throwing exception');
}
//CHECK#2
try{
if (eval("(function(){var x = 1;return\u000Dx;var y=2;})()") !== undefined) {
$ERROR("#1: LineTerminator(U-000D) between return and Identifier_opt yields return without Identifier_opt");
}
} catch(e){
$ERROR('#2: eval("(function(){var x = 1;return\\u000Dx;var y=2;})()") does not lead to throwing exception');
}
//CHECK#3
try{
if (eval("(function(){var x = 1;return\u2028x;var y=2;})()") !== undefined) {
$ERROR("#1: LineTerminator(U-2028) between return and Identifier_opt yields return without Identifier_opt");
}
} catch(e){
$ERROR('#3: eval("(function(){var x = 1;return\\u2028x;var y=2;})()") does not lead to throwing exception');
}
//CHECK#4
try{
if (eval("(function(){var x =1;return\u2029x;var y=2;})()") !== undefined) {
$ERROR("#1: LineTerminator(U-2029) between return and Identifier_opt yields return without Identifier_opt");
}
} catch(e){
$ERROR('#4: eval("(function(){var x =1;return\\u2029x;var y=2;})()") does not lead to throwing exception');
}

View File

@ -0,0 +1,36 @@
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
info: |
LineTerminator between return and Identifier_opt yields return without
Identifier_opt
es5id: 12.9_A2
description: Inserting LineTerminator between return and Variable
---*/
assert.sameValue(
function(){ return
1; }(),
undefined,
"#1: LineTerminator(U-000A) between return and Identifier_opt yields return without Identifier_opt"
);
assert.sameValue(
function(){ return 1; }(),
undefined,
"#1: LineTerminator(U-000D) between return and Identifier_opt yields return without Identifier_opt"
);
assert.sameValue(
function(){ return1; }(),
undefined,
"#1: LineTerminator(U-2028) between return and Identifier_opt yields return without Identifier_opt"
);
assert.sameValue(
function(){ return1; }(),
undefined,
"#1: LineTerminator(U-2029) between return and Identifier_opt yields return without Identifier_opt"
);