mirror of https://github.com/tc39/test262.git
Improve coverage for section 14: Functions and Classes (#717)
* Add tests for early errors in functions * Improve tests for class accessors Use the `propertyHelper.js` utility in order to functionally test the property descriptors of class methods. * Remove redundant tests The semantics of an IdentifierReference as a PropertyDefinition within an object initializer are exhaustively tested by the files in this directory whose name match the pattern `prop-def-id-*.js`. Delete the redundant tests in favor of the more descriptively-named and more exhaustive alternatives. * Rename tests * Update test names to be more descriptive * Add tests for property descriptors of accessors * Add tests for runtime error during method dfn * Add test for observable iteration
This commit is contained in:
parent
2bfaa0d895
commit
da0a8e33f0
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Body may not contain a "super" call
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FunctionBody Contains SuperCall is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
0, function() {
|
||||||
|
super();
|
||||||
|
};
|
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Body may not contain a "super" property reference
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FunctionBody Contains SuperProperty is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
0, function() {
|
||||||
|
super.x;
|
||||||
|
};
|
|
@ -0,0 +1,12 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Parameters may not contain a "super" call
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FormalParameters Contains SuperProperty is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
0, function(x = super()) {};
|
|
@ -0,0 +1,12 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Parameters may not contain a "super" property reference
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FunctionBody Contains SuperProperty is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
0, function(x = super.x) {};
|
|
@ -1,14 +0,0 @@
|
||||||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
es6id: 12.2.5
|
|
||||||
description: >
|
|
||||||
object literal property shorthand desciptor defaults
|
|
||||||
---*/
|
|
||||||
var x = 1;
|
|
||||||
var object = {x};
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(object, 'x');
|
|
||||||
assert.sameValue(desc.value, 1, "The value of `desc.value` is `1`, where `var desc = Object.getOwnPropertyDescriptor(object, 'x');`");
|
|
||||||
assert.sameValue(desc.enumerable, true, "The value of `desc.enumerable` is `true`, where `var desc = Object.getOwnPropertyDescriptor(object, 'x');`");
|
|
||||||
assert.sameValue(desc.writable, true, "The value of `desc.writable` is `true`, where `var desc = Object.getOwnPropertyDescriptor(object, 'x');`");
|
|
||||||
assert.sameValue(desc.configurable, true, "The value of `desc.configurable` is `true`, where `var desc = Object.getOwnPropertyDescriptor(object, 'x');`");
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: Property descriptor of "set" accessor methods
|
||||||
|
info: |
|
||||||
|
ObjectLiteral:
|
||||||
|
{ PropertyDefinitionList }
|
||||||
|
{ PropertyDefinitionList , }
|
||||||
|
|
||||||
|
1. Let obj be ObjectCreate(%ObjectPrototype%).
|
||||||
|
2. Let status be the result of performing PropertyDefinitionEvaluation of
|
||||||
|
PropertyDefinitionList with arguments obj and true.
|
||||||
|
3. ReturnIfAbrupt(status).
|
||||||
|
4. Return obj.
|
||||||
|
|
||||||
|
14.3.8 Runtime Semantics: PropertyDefinitionEvaluation
|
||||||
|
|
||||||
|
MethodDefinition : get PropertyName ( ) { FunctionBody}
|
||||||
|
|
||||||
|
[...]
|
||||||
|
9. Let desc be the PropertyDescriptor{[[Get]]: closure, [[Enumerable]]:
|
||||||
|
enumerable, [[Configurable]]: true}.
|
||||||
|
[...]
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var obj = { get m() { return 1234; } };
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(obj, 'm');
|
||||||
|
|
||||||
|
verifyEnumerable(obj, 'm');
|
||||||
|
verifyConfigurable(obj, 'm');
|
||||||
|
assert.sameValue(desc.value, undefined, '`value` field');
|
||||||
|
assert.sameValue(desc.set, undefined, '`set` field');
|
||||||
|
assert.sameValue(typeof desc.get, 'function', 'type of `get` field');
|
||||||
|
assert.sameValue(desc.get(), 1234, '`get` function return value');
|
|
@ -1,9 +0,0 @@
|
||||||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
|
||||||
/*---
|
|
||||||
es6id: 12.2.5
|
|
||||||
description: >
|
|
||||||
Basic identifier reference property initialization
|
|
||||||
---*/
|
|
||||||
var p = "1";
|
|
||||||
var o = {p};
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-object-initializer-runtime-semantics-evaluation
|
||||||
|
es6id: 12.2.6.8
|
||||||
|
description: Property descriptor of "set" accessor methods
|
||||||
|
info: |
|
||||||
|
ObjectLiteral:
|
||||||
|
{ PropertyDefinitionList }
|
||||||
|
{ PropertyDefinitionList , }
|
||||||
|
|
||||||
|
1. Let obj be ObjectCreate(%ObjectPrototype%).
|
||||||
|
2. Let status be the result of performing PropertyDefinitionEvaluation of
|
||||||
|
PropertyDefinitionList with arguments obj and true.
|
||||||
|
3. ReturnIfAbrupt(status).
|
||||||
|
4. Return obj.
|
||||||
|
|
||||||
|
14.3.8 Runtime Semantics: PropertyDefinitionEvaluation
|
||||||
|
|
||||||
|
MethodDefinition : set PropertyName ( PropertySetParameterList ) { FunctionBody }
|
||||||
|
|
||||||
|
[...]
|
||||||
|
8. Let desc be the PropertyDescriptor{[[Set]]: closure, [[Enumerable]]:
|
||||||
|
enumerable, [[Configurable]]: true}.
|
||||||
|
[...]
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var obj = { set m(x) { return x; } };
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(obj, 'm');
|
||||||
|
|
||||||
|
verifyEnumerable(obj, 'm');
|
||||||
|
verifyConfigurable(obj, 'm');
|
||||||
|
assert.sameValue(desc.value, undefined, '`value` field');
|
||||||
|
assert.sameValue(desc.get, undefined, '`get` field');
|
||||||
|
assert.sameValue(typeof desc.set, 'function', 'type of `set` field');
|
||||||
|
assert.sameValue(desc.set(436), 436, '`set` function return value');
|
|
@ -0,0 +1,47 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-runtime-semantics-classdefinitionevaluation
|
||||||
|
es6id: 14.5.14
|
||||||
|
description: >
|
||||||
|
Observable iteration of arguments during execution of "inferred" constructor
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
10. If constructor is empty, then
|
||||||
|
a. If ClassHeritageopt is present and protoParent is not null, then
|
||||||
|
i. Let constructor be the result of parsing the source text
|
||||||
|
|
||||||
|
constructor(... args){ super (...args);}
|
||||||
|
|
||||||
|
using the syntactic grammar with the goal symbol MethodDefinition[~Yield].
|
||||||
|
features: [Symbol.iterator]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var otherIterator = ['fifth', 'sixth', 'seventh'][Symbol.iterator]();
|
||||||
|
var spread, parentArgs;
|
||||||
|
function Parent() {
|
||||||
|
parentArgs = arguments;
|
||||||
|
}
|
||||||
|
class C extends Parent {}
|
||||||
|
|
||||||
|
Array.prototype[Symbol.iterator] = function() {
|
||||||
|
spread = this;
|
||||||
|
return otherIterator;
|
||||||
|
};
|
||||||
|
|
||||||
|
new C('first', 'second', 'third', 'fourth');
|
||||||
|
|
||||||
|
assert.sameValue(Object.getPrototypeOf(spread), Array.prototype);
|
||||||
|
assert.sameValue(spread.length, 4);
|
||||||
|
assert.sameValue(spread[0], 'first');
|
||||||
|
assert.sameValue(spread[1], 'second');
|
||||||
|
assert.sameValue(spread[2], 'third');
|
||||||
|
assert.sameValue(spread[3], 'fourth');
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
typeof parentArgs, 'object', 'parent arguments object'
|
||||||
|
);
|
||||||
|
assert.sameValue(parentArgs.length, 3);
|
||||||
|
assert.sameValue(parentArgs[0], 'fifth');
|
||||||
|
assert.sameValue(parentArgs[1], 'sixth');
|
||||||
|
assert.sameValue(parentArgs[2], 'seventh');
|
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-method-definitions-runtime-semantics-propertydefinitionevaluation
|
||||||
|
es6id: 14.3.9
|
||||||
|
description: Failure to define property for static method
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
9. Let desc be the PropertyDescriptor{[[Get]]: closure, [[Enumerable]]:
|
||||||
|
enumerable, [[Configurable]]: true}.
|
||||||
|
10. Return ? DefinePropertyOrThrow(object, propKey, desc).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
class C { static get ['prototype']() {} }
|
||||||
|
});
|
|
@ -1,15 +1,16 @@
|
||||||
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
/*---
|
/*---
|
||||||
|
esid: sec-class-definitions
|
||||||
es6id: 14.5
|
es6id: 14.5
|
||||||
description: >
|
description: Class methods - "get" accessors
|
||||||
class getters
|
includes: [propertyHelper.js]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function assertGetterDescriptor(object, name) {
|
function assertGetterDescriptor(object, name) {
|
||||||
var desc = Object.getOwnPropertyDescriptor(object, name);
|
var desc = Object.getOwnPropertyDescriptor(object, name);
|
||||||
assert.sameValue(desc.configurable, true, "The value of `desc.configurable` is `true`");
|
verifyNotEnumerable(object, name);
|
||||||
assert.sameValue(desc.enumerable, false, "The value of `desc.enumerable` is `false`");
|
verifyConfigurable(object, name);
|
||||||
assert.sameValue(typeof desc.get, 'function', "`typeof desc.get` is `'function'`");
|
assert.sameValue(typeof desc.get, 'function', "`typeof desc.get` is `'function'`");
|
||||||
assert.sameValue('prototype' in desc.get, false, "The result of `'prototype' in desc.get` is `false`");
|
assert.sameValue('prototype' in desc.get, false, "The result of `'prototype' in desc.get` is `false`");
|
||||||
assert.sameValue(desc.set, undefined, "The value of `desc.set` is `undefined`");
|
assert.sameValue(desc.set, undefined, "The value of `desc.set` is `undefined`");
|
||||||
|
@ -22,12 +23,12 @@ class C {
|
||||||
static get staticY() { return 4; }
|
static get staticY() { return 4; }
|
||||||
}
|
}
|
||||||
|
|
||||||
assertGetterDescriptor(C.prototype, 'x');
|
|
||||||
assertGetterDescriptor(C.prototype, 'y');
|
|
||||||
assertGetterDescriptor(C, 'staticX');
|
|
||||||
assertGetterDescriptor(C, 'staticY');
|
|
||||||
|
|
||||||
assert.sameValue(new C().x, 1, "The value of `new C().x` is `1`. Defined as `get x() { return 1; }`");
|
assert.sameValue(new C().x, 1, "The value of `new C().x` is `1`. Defined as `get x() { return 1; }`");
|
||||||
assert.sameValue(C.staticX, 2, "The value of `C.staticX` is `2`. Defined as `static get staticX() { return 2; }`");
|
assert.sameValue(C.staticX, 2, "The value of `C.staticX` is `2`. Defined as `static get staticX() { return 2; }`");
|
||||||
assert.sameValue(new C().y, 3, "The value of `new C().y` is `3`. Defined as `get y() { return 3; }`");
|
assert.sameValue(new C().y, 3, "The value of `new C().y` is `3`. Defined as `get y() { return 3; }`");
|
||||||
assert.sameValue(C.staticY, 4, "The value of `C.staticY` is `4`. Defined as `static get staticY() { return 4; }`");
|
assert.sameValue(C.staticY, 4, "The value of `C.staticY` is `4`. Defined as `static get staticY() { return 4; }`");
|
||||||
|
|
||||||
|
assertGetterDescriptor(C.prototype, 'x');
|
||||||
|
assertGetterDescriptor(C.prototype, 'y');
|
||||||
|
assertGetterDescriptor(C, 'staticX');
|
||||||
|
assertGetterDescriptor(C, 'staticY');
|
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-method-definitions-runtime-semantics-propertydefinitionevaluation
|
||||||
|
es6id: 14.3.9
|
||||||
|
description: Failure to define property for static method
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
8. Let desc be the PropertyDescriptor{[[Set]]: closure, [[Enumerable]]:
|
||||||
|
enumerable, [[Configurable]]: true}.
|
||||||
|
9. Return ? DefinePropertyOrThrow(object, propKey, desc).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
class C { static set ['prototype'](_) {} }
|
||||||
|
});
|
|
@ -1,14 +1,16 @@
|
||||||
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
||||||
// This code is governed by the BSD license found in the LICENSE file.
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
/*---
|
/*---
|
||||||
|
esid: sec-class-definitions
|
||||||
es6id: 14.5
|
es6id: 14.5
|
||||||
description: >
|
description: Class methods - "set" accessors
|
||||||
class setters
|
includes: [propertyHelper.js]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function assertSetterDescriptor(object, name) {
|
function assertSetterDescriptor(object, name) {
|
||||||
var descr = Object.getOwnPropertyDescriptor(object, name);
|
var descr = Object.getOwnPropertyDescriptor(object, name);
|
||||||
assert.sameValue(descr.configurable, true, "The value of `descr.configurable` is `true`");
|
verifyNotEnumerable(object, name);
|
||||||
assert.sameValue(descr.enumerable, false, "The value of `descr.enumerable` is `false`");
|
verifyConfigurable(object, name);
|
||||||
assert.sameValue(typeof descr.set, 'function', "`typeof descr.set` is `'function'`");
|
assert.sameValue(typeof descr.set, 'function', "`typeof descr.set` is `'function'`");
|
||||||
assert.sameValue('prototype' in descr.set, false, "The result of `'prototype' in descr.set` is `false`");
|
assert.sameValue('prototype' in descr.set, false, "The result of `'prototype' in descr.set` is `false`");
|
||||||
assert.sameValue(descr.get, undefined, "The value of `descr.get` is `undefined`");
|
assert.sameValue(descr.get, undefined, "The value of `descr.get` is `undefined`");
|
||||||
|
@ -22,11 +24,6 @@ class C {
|
||||||
static set staticY(v) { staticY = v; }
|
static set staticY(v) { staticY = v; }
|
||||||
}
|
}
|
||||||
|
|
||||||
assertSetterDescriptor(C.prototype, 'x');
|
|
||||||
assertSetterDescriptor(C.prototype, 'y');
|
|
||||||
assertSetterDescriptor(C, 'staticX');
|
|
||||||
assertSetterDescriptor(C, 'staticY');
|
|
||||||
|
|
||||||
assert.sameValue(new C().x = 1, 1, "`new C().x = 1` is `1`");
|
assert.sameValue(new C().x = 1, 1, "`new C().x = 1` is `1`");
|
||||||
assert.sameValue(x, 1, "The value of `x` is `1`");
|
assert.sameValue(x, 1, "The value of `x` is `1`");
|
||||||
assert.sameValue(C.staticX = 2, 2, "`C.staticX = 2` is `2`");
|
assert.sameValue(C.staticX = 2, 2, "`C.staticX = 2` is `2`");
|
||||||
|
@ -35,3 +32,8 @@ assert.sameValue(new C().y = 3, 3, "`new C().y = 3` is `3`");
|
||||||
assert.sameValue(y, 3, "The value of `y` is `3`");
|
assert.sameValue(y, 3, "The value of `y` is `3`");
|
||||||
assert.sameValue(C.staticY = 4, 4, "`C.staticY = 4` is `4`");
|
assert.sameValue(C.staticY = 4, 4, "`C.staticY = 4` is `4`");
|
||||||
assert.sameValue(staticY, 4, "The value of `staticY` is `4`");
|
assert.sameValue(staticY, 4, "The value of `staticY` is `4`");
|
||||||
|
|
||||||
|
assertSetterDescriptor(C.prototype, 'x');
|
||||||
|
assertSetterDescriptor(C.prototype, 'y');
|
||||||
|
assertSetterDescriptor(C, 'staticX');
|
||||||
|
assertSetterDescriptor(C, 'staticY');
|
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-generator-function-definitions-runtime-semantics-propertydefinitionevaluation
|
||||||
|
es6id: 14.4.13
|
||||||
|
description: Failure to define property for static generator method
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
10. Let desc be the PropertyDescriptor{[[Value]]: closure, [[Writable]]:
|
||||||
|
true, [[Enumerable]]: enumerable, [[Configurable]]: true}.
|
||||||
|
11. Return ? DefinePropertyOrThrow(object, propKey, desc).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
class C { static *['prototype']() {} }
|
||||||
|
});
|
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-method-definitions-runtime-semantics-propertydefinitionevaluation
|
||||||
|
es6id: 14.3.9
|
||||||
|
description: Failure to define property for static method
|
||||||
|
info: |
|
||||||
|
[...]
|
||||||
|
10. Let desc be the PropertyDescriptor{[[Value]]: closure, [[Writable]]:
|
||||||
|
true, [[Enumerable]]: enumerable, [[Configurable]]: true}.
|
||||||
|
11. Return ? DefinePropertyOrThrow(object, propKey, desc).
|
||||||
|
features: [generators]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
class C { static ['prototype']() {} }
|
||||||
|
});
|
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Body may not contain a "super" call
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FunctionBody Contains SuperCall is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
function f() {
|
||||||
|
super();
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Body may not contain a "super" property reference
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FunctionBody Contains SuperProperty is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
function f() {
|
||||||
|
super.x;
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Parameters may not contain a "super" call
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FormalParameters Contains SuperProperty is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
function f(x = super()) {}
|
|
@ -0,0 +1,12 @@
|
||||||
|
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-function-definitions-static-semantics-early-errors
|
||||||
|
es6id: 14.1.2
|
||||||
|
description: Parameters may not contain a "super" property reference
|
||||||
|
info: >
|
||||||
|
It is a Syntax Error if FunctionBody Contains SuperProperty is true.
|
||||||
|
negative: SyntaxError
|
||||||
|
---*/
|
||||||
|
|
||||||
|
function f(x = super.x) {}
|
Loading…
Reference in New Issue