mirror of
https://github.com/tc39/test262.git
synced 2025-07-29 00:44:32 +02:00
Generate tests
This commit is contained in:
parent
89a75a90f6
commit
8d7dd538f1
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-block.template
|
// - src/annex-b-fns/eval-global/direct-block.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (Block statement in eval code containing a function declaration)
|
description: Variable binding is left in place by legacy function hoisting (Block statement in eval code containing a function declaration)
|
||||||
esid: sec-web-compat-evaldeclarationinstantiation
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
es6id: B.3.3.3
|
es6id: B.3.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -12,17 +12,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -35,11 +25,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});{ function f() { } }'
|
}, { restore: true });{ function f() { } }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-block.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in eval code containing a function declaration)
|
||||||
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });{ function f() { } }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-a.template
|
// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-a.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.3
|
es6id: B.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (true) function f() { } else function _f() {}'
|
}, { restore: true });if (true) function f() { } else function _f() {}'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-a.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (true) function f() { } else function _f() {}'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-b.template
|
// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-b.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (false) function _f() {} else function f() { }'
|
}, { restore: true });if (false) function _f() {} else function f() { }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-b.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (false) function _f() {} else function f() { }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-if-decl-else-stmt.template
|
// - src/annex-b-fns/eval-global/direct-if-decl-else-stmt.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in the first statement position in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the first statement position in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (true) function f() { } else ;'
|
}, { restore: true });if (true) function f() { } else ;'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-if-decl-else-stmt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (true) function f() { } else ;'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-if-decl-no-else.template
|
// - src/annex-b-fns/eval-global/direct-if-decl-no-else.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement without an else clause in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement without an else clause in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (true) function f() { }'
|
}, { restore: true });if (true) function f() { }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-if-decl-no-else.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (true) function f() { }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-if-stmt-else-decl.template
|
// - src/annex-b-fns/eval-global/direct-if-stmt-else-decl.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in the second statement position in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the second statement position in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (false) ; else function f() { }'
|
}, { restore: true });if (false) ; else function f() { }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-if-stmt-else-decl.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (false) ; else function f() { }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-switch-case.template
|
// - src/annex-b-fns/eval-global/direct-switch-case.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (Function declaration in the `case` clause of a `switch` statement in eval code)
|
description: Variable binding is left in place by legacy function hoisting (Function declaration in the `case` clause of a `switch` statement in eval code)
|
||||||
esid: sec-web-compat-evaldeclarationinstantiation
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
es6id: B.3.3.3
|
es6id: B.3.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -12,17 +12,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});switch (1) {' +
|
}, { restore: true });switch (1) {' +
|
||||||
' case 1:' +
|
' case 1:' +
|
||||||
' function f() { }' +
|
' function f() { }' +
|
||||||
'}\
|
'}\
|
||||||
'
|
'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-switch-case.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in eval code)
|
||||||
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });switch (1) {' +
|
||||||
|
' case 1:' +
|
||||||
|
' function f() { }' +
|
||||||
|
'}\
|
||||||
|
'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/direct-switch-dflt.template
|
// - src/annex-b-fns/eval-global/direct-switch-dflt.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
|
description: Variable binding is left in place by legacy function hoisting (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
|
||||||
esid: sec-web-compat-evaldeclarationinstantiation
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
es6id: B.3.3.3
|
es6id: B.3.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -12,17 +12,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
eval(
|
eval(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});switch (1) {' +
|
}, { restore: true });switch (1) {' +
|
||||||
' default:' +
|
' default:' +
|
||||||
' function f() { }' +
|
' function f() { }' +
|
||||||
'}\
|
'}\
|
||||||
'
|
'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/direct-switch-dflt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
|
||||||
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
eval(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });switch (1) {' +
|
||||||
|
' default:' +
|
||||||
|
' function f() { }' +
|
||||||
|
'}\
|
||||||
|
'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-block.template
|
// - src/annex-b-fns/eval-global/indirect-block.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (Block statement in eval code containing a function declaration)
|
description: Variable binding is left in place by legacy function hoisting (Block statement in eval code containing a function declaration)
|
||||||
esid: sec-web-compat-evaldeclarationinstantiation
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
es6id: B.3.3.3
|
es6id: B.3.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -12,17 +12,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -35,11 +25,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});{ function f() { } }'
|
}, { restore: true });{ function f() { } }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-block.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in eval code containing a function declaration)
|
||||||
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });{ function f() { } }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-a.template
|
// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-a.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.3
|
es6id: B.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (true) function f() { } else function _f() {}'
|
}, { restore: true });if (true) function f() { } else function _f() {}'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-a.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (true) function f() { } else function _f() {}'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-b.template
|
// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-b.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (false) function _f() {} else function f() { }'
|
}, { restore: true });if (false) function _f() {} else function f() { }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-b.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (false) function _f() {} else function f() { }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-if-decl-else-stmt.template
|
// - src/annex-b-fns/eval-global/indirect-if-decl-else-stmt.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in the first statement position in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the first statement position in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (true) function f() { } else ;'
|
}, { restore: true });if (true) function f() { } else ;'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-if-decl-else-stmt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (true) function f() { } else ;'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-if-decl-no-else.template
|
// - src/annex-b-fns/eval-global/indirect-if-decl-no-else.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement without an else clause in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement without an else clause in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (true) function f() { }'
|
}, { restore: true });if (true) function f() { }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-if-decl-no-else.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (true) function f() { }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-if-stmt-else-decl.template
|
// - src/annex-b-fns/eval-global/indirect-if-stmt-else-decl.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (IfStatement with a declaration in the second statement position in eval code)
|
description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the second statement position in eval code)
|
||||||
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
es6id: B.3.4
|
es6id: B.3.4
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -21,17 +21,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});if (false) ; else function f() { }'
|
}, { restore: true });if (false) ; else function f() { }'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-if-stmt-else-decl.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in eval code)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });if (false) ; else function f() { }'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-switch-case.template
|
// - src/annex-b-fns/eval-global/indirect-switch-case.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (Function declaration in the `case` clause of a `switch` statement in eval code)
|
description: Variable binding is left in place by legacy function hoisting (Function declaration in the `case` clause of a `switch` statement in eval code)
|
||||||
esid: sec-web-compat-evaldeclarationinstantiation
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
es6id: B.3.3.3
|
es6id: B.3.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -12,17 +12,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});switch (1) {' +
|
}, { restore: true });switch (1) {' +
|
||||||
' case 1:' +
|
' case 1:' +
|
||||||
' function f() { }' +
|
' function f() { }' +
|
||||||
'}\
|
'}\
|
||||||
'
|
'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-switch-case.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in eval code)
|
||||||
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });switch (1) {' +
|
||||||
|
' case 1:' +
|
||||||
|
' function f() { }' +
|
||||||
|
'}\
|
||||||
|
'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -2,7 +2,7 @@
|
|||||||
// - src/annex-b-fns/eval-global-existing-global-init.case
|
// - src/annex-b-fns/eval-global-existing-global-init.case
|
||||||
// - src/annex-b-fns/eval-global/indirect-switch-dflt.template
|
// - src/annex-b-fns/eval-global/indirect-switch-dflt.template
|
||||||
/*---
|
/*---
|
||||||
description: Variable binding is set to `undefined` (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
|
description: Variable binding is left in place by legacy function hoisting (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
|
||||||
esid: sec-web-compat-evaldeclarationinstantiation
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
es6id: B.3.3.3
|
es6id: B.3.3.3
|
||||||
flags: [generated, noStrict]
|
flags: [generated, noStrict]
|
||||||
@ -12,17 +12,7 @@ info: |
|
|||||||
|
|
||||||
[...]
|
[...]
|
||||||
i. If varEnvRec is a global Environment Record, then
|
i. If varEnvRec is a global Environment Record, then
|
||||||
i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
[...]
|
|
||||||
|
|
||||||
8.1.1.4.18 CreateGlobalFunctionBinding
|
|
||||||
|
|
||||||
[...]
|
|
||||||
5. If existingProp is undefined or existingProp.[[Configurable]] is true,
|
|
||||||
then
|
|
||||||
[...]
|
|
||||||
6. Else,
|
|
||||||
a. Let desc be the PropertyDescriptor{[[Value]]: V }.
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
---*/
|
---*/
|
||||||
@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
|
|||||||
|
|
||||||
(0,eval)(
|
(0,eval)(
|
||||||
'var global = fnGlobalObject();\
|
'var global = fnGlobalObject();\
|
||||||
assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
\
|
\
|
||||||
verifyProperty(global, "f", {\
|
verifyProperty(global, "f", {\
|
||||||
enumerable: true,\
|
enumerable: true,\
|
||||||
writable: true,\
|
writable: true,\
|
||||||
configurable: false\
|
configurable: false\
|
||||||
});switch (1) {' +
|
}, { restore: true });switch (1) {' +
|
||||||
' default:' +
|
' default:' +
|
||||||
' function f() { }' +
|
' function f() { }' +
|
||||||
'}\
|
'}\
|
||||||
'
|
'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, "f", {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/eval-global/indirect-switch-dflt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
|
||||||
|
esid: sec-web-compat-evaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.3
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to EvalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
i. If varEnvRec is a global Environment Record, then
|
||||||
|
i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
Object.defineProperty(fnGlobalObject(), 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
(0,eval)(
|
||||||
|
'var global = fnGlobalObject();\
|
||||||
|
assert.sameValue(f, "x", "binding is not reinitialized");\
|
||||||
|
\
|
||||||
|
verifyProperty(global, "f", {\
|
||||||
|
enumerable: false,\
|
||||||
|
writable: true,\
|
||||||
|
configurable: true\
|
||||||
|
}, { restore: true });switch (1) {' +
|
||||||
|
' default:' +
|
||||||
|
' function f() { }' +
|
||||||
|
'}\
|
||||||
|
'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.sameValue(typeof f, "function");
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
@ -0,0 +1,49 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/block.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in the global scope containing a function declaration)
|
||||||
|
esid: sec-web-compat-globaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.2
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
{
|
||||||
|
function f() { return 'inner declaration'; }
|
||||||
|
}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,50 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/block.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in the global scope containing a function declaration)
|
||||||
|
esid: sec-web-compat-globaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.2
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
{
|
||||||
|
function f() { return 'inner declaration'; }
|
||||||
|
}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-else-decl-a.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (true) function f() { return 'inner declaration'; } else function _f() {}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-else-decl-a.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (true) function f() { return 'inner declaration'; } else function _f() {}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-else-decl-b.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (false) function _f() {} else function f() { return 'inner declaration'; }
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-else-decl-b.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (false) function _f() {} else function f() { return 'inner declaration'; }
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-else-stmt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (true) function f() { return 'inner declaration'; } else ;
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-else-stmt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (true) function f() { return 'inner declaration'; } else ;
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-no-else.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (true) function f() { return 'inner declaration'; }
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-decl-no-else.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (true) function f() { return 'inner declaration'; }
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,56 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-stmt-else-decl.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (false) ; else function f() { return 'inner declaration'; }
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,57 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/if-stmt-else-decl.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in the global scope)
|
||||||
|
esid: sec-functiondeclarations-in-ifstatement-statement-clauses
|
||||||
|
es6id: B.3.4
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
The following rules for IfStatement augment those in 13.6:
|
||||||
|
|
||||||
|
IfStatement[Yield, Return]:
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
|
||||||
|
if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
|
||||||
|
if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
|
||||||
|
|
||||||
|
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
if (false) ; else function f() { return 'inner declaration'; }
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,50 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/switch-case.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in the global scope)
|
||||||
|
esid: sec-web-compat-globaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.2
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
switch (1) {
|
||||||
|
case 1:
|
||||||
|
function f() { return 'inner declaration'; }
|
||||||
|
}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/switch-case.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in the global scope)
|
||||||
|
esid: sec-web-compat-globaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.2
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
switch (1) {
|
||||||
|
case 1:
|
||||||
|
function f() { return 'inner declaration'; }
|
||||||
|
}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,50 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-global-init.case
|
||||||
|
// - src/annex-b-fns/global/switch-dflt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in the global scope)
|
||||||
|
esid: sec-web-compat-globaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.2
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
switch (1) {
|
||||||
|
default:
|
||||||
|
function f() { return 'inner declaration'; }
|
||||||
|
}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: true,
|
||||||
|
writable: true,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
|
`);
|
@ -0,0 +1,51 @@
|
|||||||
|
// This file was procedurally generated from the following sources:
|
||||||
|
// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
|
||||||
|
// - src/annex-b-fns/global/switch-dflt.template
|
||||||
|
/*---
|
||||||
|
description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in the global scope)
|
||||||
|
esid: sec-web-compat-globaldeclarationinstantiation
|
||||||
|
es6id: B.3.3.2
|
||||||
|
flags: [generated, noStrict]
|
||||||
|
includes: [fnGlobalObject.js, propertyHelper.js]
|
||||||
|
info: |
|
||||||
|
B.3.3.3 Changes to GlobalDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
|
||||||
|
[...]
|
||||||
|
|
||||||
|
---*/
|
||||||
|
var global = fnGlobalObject();
|
||||||
|
Object.defineProperty(global, 'f', {
|
||||||
|
value: 'x',
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f, 'x');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
}, { restore: true });
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
|
||||||
|
switch (1) {
|
||||||
|
default:
|
||||||
|
function f() { return 'inner declaration'; }
|
||||||
|
}
|
||||||
|
|
||||||
|
`);
|
||||||
|
|
||||||
|
$262.evalScript(`
|
||||||
|
assert.sameValue(f(), 'inner declaration');
|
||||||
|
verifyProperty(global, 'f', {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
`);
|
Loading…
x
Reference in New Issue
Block a user