| OLD | NEW |
| (Empty) |
| 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | |
| 2 | |
| 3 /* | |
| 4 * Any copyright is dedicated to the Public Domain. | |
| 5 * http://creativecommons.org/licenses/publicdomain/ | |
| 6 */ | |
| 7 | |
| 8 /* Simple identifier labels. */ | |
| 9 assertEq(testLenientAndStrict('({x:1, x:1})', | |
| 10 parsesSuccessfully, | |
| 11 parseRaisesException(SyntaxError)), | |
| 12 true); | |
| 13 | |
| 14 assertEq(testLenientAndStrict('({x:1, y:1})', | |
| 15 parsesSuccessfully, | |
| 16 parsesSuccessfully), | |
| 17 true); | |
| 18 | |
| 19 assertEq(testLenientAndStrict('({x:1, y:1, x:1})', | |
| 20 parsesSuccessfully, | |
| 21 parseRaisesException(SyntaxError)), | |
| 22 true); | |
| 23 | |
| 24 /* Property names can be written as strings, too. */ | |
| 25 assertEq(testLenientAndStrict('({x:1, "x":1})', | |
| 26 parsesSuccessfully, | |
| 27 parseRaisesException(SyntaxError)), | |
| 28 true); | |
| 29 | |
| 30 assertEq(testLenientAndStrict('({"x":1, x:1})', | |
| 31 parsesSuccessfully, | |
| 32 parseRaisesException(SyntaxError)), | |
| 33 true); | |
| 34 | |
| 35 assertEq(testLenientAndStrict('({"x":1, "x":1})', | |
| 36 parsesSuccessfully, | |
| 37 parseRaisesException(SyntaxError)), | |
| 38 true); | |
| 39 | |
| 40 /* Numeric property names. */ | |
| 41 assertEq(testLenientAndStrict('({1.5:1, 1.5:1})', | |
| 42 parsesSuccessfully, | |
| 43 parseRaisesException(SyntaxError)), | |
| 44 true); | |
| 45 | |
| 46 assertEq(testLenientAndStrict('({1.5:1, 15e-1:1})', | |
| 47 parsesSuccessfully, | |
| 48 parseRaisesException(SyntaxError)), | |
| 49 true); | |
| 50 | |
| 51 assertEq(testLenientAndStrict('({6.02214179e23:1, 6.02214179e23:1})', | |
| 52 parsesSuccessfully, | |
| 53 parseRaisesException(SyntaxError)), | |
| 54 true); | |
| 55 | |
| 56 assertEq(testLenientAndStrict('({6.02214179e23:1, 3.1415926535:1})', | |
| 57 parsesSuccessfully, | |
| 58 parsesSuccessfully), | |
| 59 true); | |
| 60 | |
| 61 assertEq(testLenientAndStrict('({ 1: 1, "1": 2 })', | |
| 62 parsesSuccessfully, | |
| 63 parseRaisesException(SyntaxError)), | |
| 64 true); | |
| 65 | |
| 66 assertEq(testLenientAndStrict('({ "1": 1, 1: 2 })', | |
| 67 parsesSuccessfully, | |
| 68 parseRaisesException(SyntaxError)), | |
| 69 true); | |
| 70 | |
| 71 assertEq(testLenientAndStrict('({ 2.5: 1, "2.5": 2 })', | |
| 72 parsesSuccessfully, | |
| 73 parseRaisesException(SyntaxError)), | |
| 74 true); | |
| 75 | |
| 76 assertEq(testLenientAndStrict('({ "2.5": 1, 2.5: 2 })', | |
| 77 parsesSuccessfully, | |
| 78 parseRaisesException(SyntaxError)), | |
| 79 true); | |
| 80 | |
| 81 /* Many properties, to exercise JSAtomList's hash-table variant. */ | |
| 82 assertEq(testLenientAndStrict('({a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1, i:1, j:
1, k:1, l:1, m:1, n:1, o:1, p:1, q:1, r:1, s:1, t:1, u:1, v:1, w:1, x:1, y:1, z:
1})', | |
| 83 parsesSuccessfully, | |
| 84 parsesSuccessfully), | |
| 85 true); | |
| 86 | |
| 87 assertEq(testLenientAndStrict('({a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1, i:1, j:
1, k:1, l:1, m:1, n:1, o:1, p:1, q:1, r:1, s:1, t:1, u:1, v:1, w:1, x:1, y:1, a:
1})', | |
| 88 parsesSuccessfully, | |
| 89 parseRaisesException(SyntaxError)), | |
| 90 true); | |
| 91 | |
| 92 /* | |
| 93 * Getters, setters, and value properties should conflict only when | |
| 94 * appropriate. | |
| 95 */ | |
| 96 assertEq(testLenientAndStrict('({get x() {}, x:1})', | |
| 97 parseRaisesException(SyntaxError), | |
| 98 parseRaisesException(SyntaxError)), | |
| 99 true); | |
| 100 | |
| 101 assertEq(testLenientAndStrict('({x:1, get x() {}})', | |
| 102 parseRaisesException(SyntaxError), | |
| 103 parseRaisesException(SyntaxError)), | |
| 104 true); | |
| 105 | |
| 106 assertEq(testLenientAndStrict('({set x(q) {}, x:1})', | |
| 107 parseRaisesException(SyntaxError), | |
| 108 parseRaisesException(SyntaxError)), | |
| 109 true); | |
| 110 | |
| 111 assertEq(testLenientAndStrict('({x:1, set x(q) {}})', | |
| 112 parseRaisesException(SyntaxError), | |
| 113 parseRaisesException(SyntaxError)), | |
| 114 true); | |
| 115 | |
| 116 assertEq(testLenientAndStrict('({1:1, set 1(q) {}})', | |
| 117 parseRaisesException(SyntaxError), | |
| 118 parseRaisesException(SyntaxError)), | |
| 119 true); | |
| 120 | |
| 121 assertEq(testLenientAndStrict('({set 1(q) {}, 1:1})', | |
| 122 parseRaisesException(SyntaxError), | |
| 123 parseRaisesException(SyntaxError)), | |
| 124 true); | |
| 125 | |
| 126 assertEq(testLenientAndStrict('({"1":1, set 1(q) {}})', | |
| 127 parseRaisesException(SyntaxError), | |
| 128 parseRaisesException(SyntaxError)), | |
| 129 true); | |
| 130 | |
| 131 assertEq(testLenientAndStrict('({set 1(q) {}, "1":1})', | |
| 132 parseRaisesException(SyntaxError), | |
| 133 parseRaisesException(SyntaxError)), | |
| 134 true); | |
| 135 | |
| 136 assertEq(testLenientAndStrict('({get x() {}, set x(q) {}})', | |
| 137 parsesSuccessfully, | |
| 138 parsesSuccessfully), | |
| 139 true); | |
| 140 | |
| 141 assertEq(testLenientAndStrict('({set x(q) {}, get x() {}})', | |
| 142 parsesSuccessfully, | |
| 143 parsesSuccessfully), | |
| 144 true); | |
| 145 | |
| 146 assertEq(testLenientAndStrict('({get x() {}, set x(q) {}, x:1})', | |
| 147 parseRaisesException(SyntaxError), | |
| 148 parseRaisesException(SyntaxError)), | |
| 149 true); | |
| 150 | |
| 151 assertEq(testLenientAndStrict('({set x(q) {}, get x() {}, x:1})', | |
| 152 parseRaisesException(SyntaxError), | |
| 153 parseRaisesException(SyntaxError)), | |
| 154 true); | |
| 155 | |
| 156 assertEq(testLenientAndStrict('({get x() {}, get x() {}})', | |
| 157 parseRaisesException(SyntaxError), | |
| 158 parseRaisesException(SyntaxError)), | |
| 159 true); | |
| 160 | |
| 161 assertEq(testLenientAndStrict('({set x() {}, set x() {}})', | |
| 162 parseRaisesException(SyntaxError), | |
| 163 parseRaisesException(SyntaxError)), | |
| 164 true); | |
| 165 | |
| 166 assertEq(testLenientAndStrict('({get x() {}, set x(q) {}, y:1})', | |
| 167 parsesSuccessfully, | |
| 168 parsesSuccessfully), | |
| 169 true); | |
| 170 | |
| 171 reportCompare(true, true); | |
| 172 | |
| 173 var successfullyParsed = true; | |
| OLD | NEW |