lgcl-nullish-whitespace.js (1698B)
1 // Copyright (C) 2020 Rick Waldron. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 info: | 6 White Space and Line Terminator between LeftHandSideExpression and "@=" 7 or between "@=" and AssignmentExpression are allowed 8 esid: sec-assignment-operators 9 description: Checking by evaluating expression "x[...]??=[...]y" 10 features: [logical-assignment-operators] 11 ---*/ 12 var x; 13 14 x = null; 15 assert.sameValue(x ??= 1, 1, 'U+0009 (expression)'); 16 assert.sameValue(x, 1, 'U+0009 (side effect)'); 17 18 x = null; 19 assert.sameValue(x??=1, 1, 'U+000B (expression)'); 20 assert.sameValue(x, 1, 'U+000B (side effect)'); 21 22 x = null; 23 assert.sameValue(x??=1, 1, 'U+000C (expression)'); 24 assert.sameValue(x, 1, 'U+000C (side effect)'); 25 26 x = null; 27 assert.sameValue(x ??= 1, 1, 'U+0020 (expression)'); 28 assert.sameValue(x, 1, 'U+0020 (side effect)'); 29 30 x = null; 31 assert.sameValue(x ??= 1, 1, 'U+00A0 (expression)'); 32 assert.sameValue(x, 1, 'U+00A0 (side effect)'); 33 34 x = null; 35 assert.sameValue(x 36 ??= 37 1, 1, 'U+000A (expression)'); 38 assert.sameValue(x, 1, 'U+000A (side effect)'); 39 40 x = null; 41 assert.sameValue(x 42 ??= 43 1, 1, 'U+000D (expression)'); 44 assert.sameValue(x, 1, 'U+000D (side effect)'); 45 46 x = null; 47 assert.sameValue(x ??= 1, 1, 'U+2028 (expression)'); 48 assert.sameValue(x, 1, 'U+2028 (side effect)'); 49 50 x = null; 51 assert.sameValue(x ??= 1, 1, 'U+2029 (expression)'); 52 assert.sameValue(x, 1, 'U+2029 (side effect)'); 53 54 x = null; 55 assert.sameValue(x 56 ??= 57 1, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (expression)'); 58 assert.sameValue(x, 1, 'U+0009U+000BU+000CU+0020U+00A0U+000AU+000DU+2028U+2029 (side effect)'); 59 60 reportCompare(0, 0);