chainable-if-parenthesis-covered-logical-or.js (1631B)
1 // Copyright (C) 2019 Leo Balter. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 description: > 6 CoalesceExpression is chainable with the LogicalORExpression is any is covered. 7 esid: sec-conditional-operator 8 info: | 9 ConditionalExpression : 10 ShortCircuitExpression 11 ShortCircuitExpression ? AssignmentExpression : AssignmentExpression 12 13 ShortCircuitExpression : 14 LogicalORExpression 15 CoalesceExpression 16 17 CoalesceExpression : 18 CoalesceExpressionHead ?? BitwiseORExpression 19 20 CoalesceExpressionHead : 21 CoalesceExpression 22 BitwiseORExpression 23 24 Runtime Semantics: Evaluation 25 26 CoalesceExpression:CoalesceExpressionHead??BitwiseORExpression 27 28 1. Let lref be the result of evaluating CoalesceExpressionHead. 29 2. Let lval be ? GetValue(lref). 30 3. If lval is undefined or null, 31 a. Let rref be the result of evaluating BitwiseORExpression. 32 b. Return ? GetValue(rref). 33 4. Otherwise, return lval. 34 features: [coalesce-expression] 35 ---*/ 36 37 var x; 38 39 x = undefined; 40 x = (null ?? 42) || 43; 41 assert.sameValue(x, 42, '(null ?? 42) || 43'); 42 43 x = undefined; 44 x = null ?? (42 || 43); 45 assert.sameValue(x, 42, 'null ?? (42 || 43)`'); 46 47 x = undefined; 48 x = (null || 42) ?? 43; 49 assert.sameValue(x, 42, '(null || 42) ?? 43'); 50 51 x = undefined; 52 x = null || (42 ?? 43); 53 assert.sameValue(x, 42, 'null || (42 ?? 43)`'); 54 55 x = undefined; 56 x = (42 || 43) ?? null; 57 assert.sameValue(x, 42, '(42 || 43) ?? null'); 58 59 x = undefined; 60 x = 42 || (null ?? 43); 61 assert.sameValue(x, 42, '42 || (null ?? 43)'); 62 63 reportCompare(0, 0);