mirror of https://github.com/tc39/test262.git
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
// Copyright 2020 Salesforce.com, Inc. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
esid: prod-OptionalExpression
|
|
description: >
|
|
Productions for ?. [Expression]
|
|
info: |
|
|
OptionalChain:
|
|
?.[ Expression ]
|
|
features: [optional-chaining]
|
|
---*/
|
|
|
|
const $ = 'x';
|
|
const arr = [39, 42];
|
|
|
|
arr.true = 'prop';
|
|
arr[1.1] = 'other prop';
|
|
|
|
const obj = {
|
|
a: 'hello',
|
|
undefined: 40,
|
|
$: 0,
|
|
NaN: 41,
|
|
null: 42,
|
|
x: 43,
|
|
true: 44
|
|
};
|
|
|
|
assert.sameValue(arr?.[0], 39, '[0]');
|
|
assert.sameValue(arr?.[0, 1], 42, '[0, 1]');
|
|
assert.sameValue(arr?.[1], 42, '[1]');
|
|
assert.sameValue(arr?.[1, 0], 39, '[1, 0]');
|
|
assert.sameValue(arr?.[{}, NaN, undefined, 2, 0, 10 / 10], 42, '[{}, NaN, undefined, 2, 0, 10 / 10]');
|
|
assert.sameValue(arr?.[true], 'prop', '[true]');
|
|
assert.sameValue(arr?.[1.1], 'other prop', '[1.1]');
|
|
|
|
assert.sameValue(obj?.[undefined], 40, '[undefined]');
|
|
assert.sameValue(obj?.[NaN], 41, '[NaN]');
|
|
assert.sameValue(obj?.[null], 42, '[null]');
|
|
assert.sameValue(obj?.['$'], 0, '["$"]');
|
|
assert.sameValue(obj?.[$], 43, '[$]');
|
|
assert.sameValue(obj?.[true], 44, '[true]');
|