mirror of https://github.com/tc39/test262.git
51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
|
// Copyright 2019 Google, Inc. All rights reserved.
|
||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||
|
/*---
|
||
|
esid: prod-OptionalExpression
|
||
|
description: >
|
||
|
various optional chain expansions
|
||
|
info: |
|
||
|
OptionalChain[Yield, Await]:
|
||
|
?.[Expression]
|
||
|
?.IdentifierName
|
||
|
?.Arguments
|
||
|
?.TemplateLiteral
|
||
|
OptionalChain [Expression]
|
||
|
OptionalChain .IdentifierName
|
||
|
OptionalChain Arguments[?Yield, ?Await]
|
||
|
OptionalChain TemplateLiteral
|
||
|
features: [optional-chaining]
|
||
|
---*/
|
||
|
|
||
|
const arr = [10, 11];
|
||
|
const obj = {
|
||
|
a: 'hello',
|
||
|
b: {val: 13},
|
||
|
c(arg1) {
|
||
|
return arg1 * 2;
|
||
|
},
|
||
|
arr: [11, 12]
|
||
|
};
|
||
|
const i = 0;
|
||
|
|
||
|
// OptionalChain: ?.[Expression]
|
||
|
assert.sameValue(11, arr?.[i + 1]);
|
||
|
|
||
|
// OptionalChain: ?.IdentifierName
|
||
|
assert.sameValue('hello', obj?.a);
|
||
|
|
||
|
// OptionalChain: ?.Arguments
|
||
|
const fn = (arg1, arg2) => {
|
||
|
return arg1 + arg2;
|
||
|
}
|
||
|
assert.sameValue(30, fn?.(10, 20));
|
||
|
|
||
|
// OptionalChain: OptionalChain [Expression]
|
||
|
assert.sameValue(12, obj?.arr[i + 1]);
|
||
|
|
||
|
// OptionalChain: OptionalChain .IdentifierName
|
||
|
assert.sameValue(13, obj?.b.val);
|
||
|
|
||
|
// OptionalChain: OptionalChain Arguments
|
||
|
assert.sameValue(20, obj?.c(10));
|