mirror of https://github.com/tc39/test262.git
feat: regression tests for optional call (#2429)
* feat: regression tests for optional call * chore: address code review * chore: fix assertion * chore: set context rather than return context
This commit is contained in:
parent
a3370bfca5
commit
0ea69c7864
|
@ -0,0 +1,31 @@
|
||||||
|
// Copyright 2019 Google, LLC. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: prod-OptionalExpression
|
||||||
|
description: >
|
||||||
|
optional call invoked on new.target should be equivalent to call
|
||||||
|
info: |
|
||||||
|
OptionalExpression
|
||||||
|
MemberExpression OptionalChain
|
||||||
|
NewTarget OptionalChain
|
||||||
|
features: [optional-chaining]
|
||||||
|
includes: [fnGlobalObject.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
const newTargetContext = (function() { return this; })();
|
||||||
|
|
||||||
|
let called = false;
|
||||||
|
// should be set to 'undefined' or global context, depending on whether
|
||||||
|
// mode is strict or sloppy.
|
||||||
|
let context = null;
|
||||||
|
function Base() {
|
||||||
|
called = true;
|
||||||
|
context = this;
|
||||||
|
}
|
||||||
|
function Foo(blerg) {
|
||||||
|
new.target?.();
|
||||||
|
}
|
||||||
|
|
||||||
|
Reflect.construct(Foo, [], Base);
|
||||||
|
assert(context === newTargetContext);
|
||||||
|
assert.sameValue(called, true);
|
|
@ -0,0 +1,30 @@
|
||||||
|
// Copyright 2019 Google, LLC. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: prod-OptionalExpression
|
||||||
|
description: >
|
||||||
|
optional call invoked on super method should be equivalent to call
|
||||||
|
info: |
|
||||||
|
OptionalExpression
|
||||||
|
MemberExpression OptionalChain
|
||||||
|
SuperProperty OptionalChain
|
||||||
|
features: [optional-chaining]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
let called = false;
|
||||||
|
let context;
|
||||||
|
class Base {
|
||||||
|
method() {
|
||||||
|
called = true;
|
||||||
|
context = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class Foo extends Base {
|
||||||
|
method() {
|
||||||
|
super.method?.();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const foo = new Foo();
|
||||||
|
foo.method();
|
||||||
|
assert(foo === context);
|
||||||
|
assert.sameValue(called, true);
|
Loading…
Reference in New Issue