зеркало из https://github.com/mozilla/gecko-dev.git
bug 1230490 - Allow 16 bit character codes 1/2; r=evilpie
This commit is contained in:
Родитель
1b5c331814
Коммит
6482267db5
|
@ -9,12 +9,12 @@
|
|||
*/
|
||||
|
||||
// CHECK#1
|
||||
if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== 0) {
|
||||
$ERROR('#1.1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === 0. Actual: ' + (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")));
|
||||
if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== 0) {
|
||||
$ERROR('#1.1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === 0. Actual: ' + (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")));
|
||||
} else {
|
||||
if (1/Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#1.2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === +0. Actual: -0');
|
||||
}
|
||||
if (1/Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#1.2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#2
|
||||
|
@ -23,7 +23,7 @@ if (Number(" ") !== 0) {
|
|||
} else {
|
||||
if (1/Number(" ") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#2.2: Number(" ") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#3
|
||||
|
@ -32,7 +32,7 @@ if (Number("\t") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\t") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#3.2: Number("\\t") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#4
|
||||
|
@ -41,7 +41,7 @@ if (Number("\r") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\r") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#4.2: Number("\\r") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#5
|
||||
|
@ -50,7 +50,7 @@ if (Number("\n") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\n") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#5.2: Number("\\n") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#6
|
||||
|
@ -59,7 +59,7 @@ if (Number("\f") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\f") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#6.2: Number("\\f") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#7
|
||||
|
@ -68,7 +68,7 @@ if (Number("\u0009") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u0009") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#7.2: Number("\\u0009") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#8
|
||||
|
@ -77,7 +77,7 @@ if (Number("\u000A") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u000A") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#8.2: Number("\\u000A") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#9
|
||||
|
@ -86,7 +86,7 @@ if (Number("\u000B") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u000B") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#9.1.2: Number("\\u000B") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#10
|
||||
|
@ -95,7 +95,7 @@ if (Number("\u000C") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u000C") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#10.2: Number("\\u000C") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#11
|
||||
|
@ -104,7 +104,7 @@ if (Number("\u000D") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u000D") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#11.2: Number("\\u000D") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#12
|
||||
|
@ -113,7 +113,7 @@ if (Number("\u00A0") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u00A0") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#12.2: Number("\\u00A0") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#13
|
||||
|
@ -122,7 +122,7 @@ if (Number("\u0020") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u0020") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#13.2: Number("\\u0020") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#14
|
||||
|
@ -131,7 +131,7 @@ if (Number("\u2028") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2028") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#14.2: Number("\\u2028") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#15
|
||||
|
@ -140,7 +140,7 @@ if (Number("\u2029") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2029") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#15.2: Number("\\u2029") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#16
|
||||
|
@ -149,16 +149,12 @@ if (Number("\u1680") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u1680") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#16.2: Number("\\u1680") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#17
|
||||
if (Number("\u180E") !== 0) {
|
||||
$ERROR('#17.1: Number("\\u180E") === 0. Actual: ' + (Number("\u180E")));
|
||||
} else {
|
||||
if (1/Number("\u180E") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#17.2: Number("\\u180E") === +0. Actual: -0');
|
||||
}
|
||||
if (!Number.isNaN(Number("\u180E"))) {
|
||||
$ERROR('#17.1: !Number.isNaN(Number("\\u180E")). Actual: ' + (Number("\u180E")));
|
||||
}
|
||||
|
||||
// CHECK#18
|
||||
|
@ -167,7 +163,7 @@ if (Number("\u2000") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2000") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#18.2: Number("\\u2000") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#19
|
||||
|
@ -176,7 +172,7 @@ if (Number("\u2001") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2001") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#19.2: Number("\\u2001") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#20
|
||||
|
@ -185,7 +181,7 @@ if (Number("\u2002") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2002") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#20.2: Number("\\u2002") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#21
|
||||
|
@ -194,7 +190,7 @@ if (Number("\u2003") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2003") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#21.2: Number("\\u2003") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#22
|
||||
|
@ -203,7 +199,7 @@ if (Number("\u2004") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2004") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#22.2: Number("\\u2004") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#23
|
||||
|
@ -212,7 +208,7 @@ if (Number("\u2005") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2005") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#23.2: Number("\\u2005") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#24
|
||||
|
@ -221,7 +217,7 @@ if (Number("\u2006") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2006") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#24.2: Number("\\u2006") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#25
|
||||
|
@ -230,7 +226,7 @@ if (Number("\u2007") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2007") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#25.2: Number("\\u2007") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#26
|
||||
|
@ -239,7 +235,7 @@ if (Number("\u2008") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2008") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#26.2: Number("\\u2008") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#27
|
||||
|
@ -248,7 +244,7 @@ if (Number("\u2009") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u2009") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#27.2: Number("\\u2009") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#28
|
||||
|
@ -257,7 +253,7 @@ if (Number("\u200A") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u200A") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#28.2: Number("\\u200A") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#29
|
||||
|
@ -266,7 +262,7 @@ if (Number("\u202F") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u202F") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#29.2: Number("\\u202F") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#30
|
||||
|
@ -275,15 +271,11 @@ if (Number("\u205F") !== 0) {
|
|||
} else {
|
||||
if (1/Number("\u205F") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#30.2: Number("\\u205F") === +0. Actual: -0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK#31
|
||||
if (Number("\u3000") !== 0) {
|
||||
$ERROR('#31.1: Number("\\u3000") === 0. Actual: ' + (Number("\u3000")));
|
||||
} else {
|
||||
if (1/Number("\u3000") !== Number.POSITIVE_INFINITY) {
|
||||
$ERROR('#31.2: Number("\\u3000") === +0. Actual: -0');
|
||||
}
|
||||
if (Number("\u3000") === NaN) {
|
||||
$ERROR('#31.1: Number("\\u3000") === NaN. Actual: ' + (Number("\u3000")));
|
||||
}
|
||||
|
||||
|
|
|
@ -9,22 +9,22 @@
|
|||
*/
|
||||
|
||||
// CHECK#1
|
||||
if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("")) {
|
||||
$ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
|
||||
if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("")) {
|
||||
$ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
|
||||
}
|
||||
|
||||
// CHECK#2
|
||||
if (Number("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u30001234567890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("1234567890")) {
|
||||
$ERROR('#2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u30001234567890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
|
||||
if (Number("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u30001234567890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("1234567890")) {
|
||||
$ERROR('#2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u30001234567890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
|
||||
}
|
||||
|
||||
// CHECK#3
|
||||
if (!(+("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number("Infinity"))) {
|
||||
$ERROR('#3: +("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
|
||||
if (!(+("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number("Infinity"))) {
|
||||
$ERROR('#3: +("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
|
||||
}
|
||||
|
||||
// CHECK#4
|
||||
if (!(Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000-Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number(-"Infinity"))) {
|
||||
$ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000-Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
|
||||
if (!(Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000-Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number(-"Infinity"))) {
|
||||
$ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000-Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
|
||||
}
|
||||
|
||||
|
|
|
@ -13,22 +13,22 @@ function dynaString(s1, s2){
|
|||
}
|
||||
|
||||
// CHECK#1
|
||||
if (Number(dynaString("\u0009\u000C\u0020\u00A0\u000B", "\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("")) {
|
||||
$ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B"+"\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
|
||||
if (Number(dynaString("\u0009\u000C\u0020\u00A0\u000B", "\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("")) {
|
||||
$ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B"+"\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
|
||||
}
|
||||
|
||||
// CHECK#2
|
||||
if (+(dynaString("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B12345", "67890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("1234567890")) {
|
||||
$ERROR('#2: +("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B12345"+"67890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
|
||||
if (+(dynaString("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B12345", "67890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("1234567890")) {
|
||||
$ERROR('#2: +("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B12345"+"67890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
|
||||
}
|
||||
|
||||
// CHECK#3
|
||||
if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number("Infinity"))) {
|
||||
$ERROR('#3: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
|
||||
if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number("Infinity"))) {
|
||||
$ERROR('#3: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
|
||||
}
|
||||
|
||||
// CHECK#4
|
||||
if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029-Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number(-"Infinity"))) {
|
||||
$ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029-Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
|
||||
if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029-Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number(-"Infinity"))) {
|
||||
$ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029-Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
|
||||
}
|
||||
|
||||
|
|
|
@ -103,15 +103,15 @@ class CharacterInfo {
|
|||
}
|
||||
};
|
||||
|
||||
extern const uint8_t index1[];
|
||||
extern const uint8_t index2[];
|
||||
extern const uint16_t index1[];
|
||||
extern const uint16_t index2[];
|
||||
extern const CharacterInfo js_charinfo[];
|
||||
|
||||
inline const CharacterInfo&
|
||||
CharInfo(char16_t code)
|
||||
{
|
||||
const size_t shift = 5;
|
||||
size_t index = index1[code >> shift];
|
||||
const size_t shift = 6;
|
||||
uint16_t index = index1[code >> shift];
|
||||
index = index2[(index << shift) + (code & ((1 << shift) - 1))];
|
||||
|
||||
return js_charinfo[index];
|
||||
|
|
|
@ -427,7 +427,7 @@ if (typeof reportCompare === "function")
|
|||
index1, index2, shift = splitbins(index)
|
||||
|
||||
# Don't forget to update CharInfo in Unicode.cpp if you need to change this
|
||||
assert shift == 5
|
||||
assert shift == 6
|
||||
|
||||
same_upper_index1, same_upper_index2, same_upper_shift = splitbins(same_upper_index)
|
||||
|
||||
|
@ -527,13 +527,16 @@ if (typeof reportCompare === "function")
|
|||
data_file.write('\n')
|
||||
|
||||
def dump(data, name, file):
|
||||
file.write('const uint8_t unicode::' + name + '[] = {\n')
|
||||
size = 'uint8_t'
|
||||
if name == 'index1' or name == 'index2':
|
||||
size = 'uint16_t'
|
||||
file.write('const ' + size + ' unicode::' + name + '[] = {\n')
|
||||
|
||||
line = pad = ' ' * 4
|
||||
lines = []
|
||||
for entry in data:
|
||||
assert entry < 256
|
||||
s = str(entry)
|
||||
assert len(s) <= 3
|
||||
s = s.rjust(3)
|
||||
|
||||
if len(line + s) + 5 > 99:
|
||||
|
|
Загрузка…
Ссылка в новой задаче