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