Skip to content

Commit f41a5f5

Browse files
authored
Preserve separators in numeric literals with target=ES2021+ (#57144)
1 parent da5f0fe commit f41a5f5

11 files changed

+198
-1
lines changed

src/compiler/emitter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5657,7 +5657,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
56575657
const flags = (neverAsciiEscape ? GetLiteralTextFlags.NeverAsciiEscape : 0)
56585658
| (jsxAttributeEscape ? GetLiteralTextFlags.JsxAttributeEscape : 0)
56595659
| (printerOptions.terminateUnterminatedLiterals ? GetLiteralTextFlags.TerminateUnterminatedLiterals : 0)
5660-
| (printerOptions.target && printerOptions.target === ScriptTarget.ESNext ? GetLiteralTextFlags.AllowNumericSeparator : 0);
5660+
| (printerOptions.target && printerOptions.target >= ScriptTarget.ES2021 ? GetLiteralTextFlags.AllowNumericSeparator : 0);
56615661

56625662
return getLiteralText(node, currentSourceFile, flags);
56635663
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//// [tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts] ////
2+
3+
//// [parser.numericSeparators.decimal.ts]
4+
1_000_000_000
5+
1.1_00_01
6+
1e1_0
7+
1e+1_0
8+
1e-1_0
9+
1.1e10_0
10+
1.1e+10_0
11+
1.1e-10_0
12+
12_34_56
13+
1_22_333
14+
1_2.3_4
15+
1_2.3_4e5_6
16+
1_2.3_4e+5_6
17+
1_2.3_4e-5_6
18+
19+
20+
//// [parser.numericSeparators.decimal.js]
21+
1_000_000_000;
22+
1.1_00_01;
23+
1e1_0;
24+
1e+1_0;
25+
1e-1_0;
26+
1.1e10_0;
27+
1.1e+10_0;
28+
1.1e-10_0;
29+
12_34_56;
30+
1_22_333;
31+
1_2.3_4;
32+
1_2.3_4e5_6;
33+
1_2.3_4e+5_6;
34+
1_2.3_4e-5_6;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//// [tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts] ////
2+
3+
=== parser.numericSeparators.decimal.ts ===
4+
5+
1_000_000_000
6+
1.1_00_01
7+
1e1_0
8+
1e+1_0
9+
1e-1_0
10+
1.1e10_0
11+
1.1e+10_0
12+
1.1e-10_0
13+
12_34_56
14+
1_22_333
15+
1_2.3_4
16+
1_2.3_4e5_6
17+
1_2.3_4e+5_6
18+
1_2.3_4e-5_6
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//// [tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts] ////
2+
3+
=== parser.numericSeparators.decimal.ts ===
4+
1_000_000_000
5+
>1_000_000_000 : 1000000000
6+
7+
1.1_00_01
8+
>1.1_00_01 : 1.10001
9+
10+
1e1_0
11+
>1e1_0 : 10000000000
12+
13+
1e+1_0
14+
>1e+1_0 : 10000000000
15+
16+
1e-1_0
17+
>1e-1_0 : 1e-10
18+
19+
1.1e10_0
20+
>1.1e10_0 : 1.1e+100
21+
22+
1.1e+10_0
23+
>1.1e+10_0 : 1.1e+100
24+
25+
1.1e-10_0
26+
>1.1e-10_0 : 1.1e-100
27+
28+
12_34_56
29+
>12_34_56 : 123456
30+
31+
1_22_333
32+
>1_22_333 : 122333
33+
34+
1_2.3_4
35+
>1_2.3_4 : 12.34
36+
37+
1_2.3_4e5_6
38+
>1_2.3_4e5_6 : 1.234e+57
39+
40+
1_2.3_4e+5_6
41+
>1_2.3_4e+5_6 : 1.234e+57
42+
43+
1_2.3_4e-5_6
44+
>1_2.3_4e-5_6 : 1.234e-55
45+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//// [tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts] ////
2+
3+
//// [parser.numericSeparators.decimal.ts]
4+
1_000_000_000
5+
1.1_00_01
6+
1e1_0
7+
1e+1_0
8+
1e-1_0
9+
1.1e10_0
10+
1.1e+10_0
11+
1.1e-10_0
12+
12_34_56
13+
1_22_333
14+
1_2.3_4
15+
1_2.3_4e5_6
16+
1_2.3_4e+5_6
17+
1_2.3_4e-5_6
18+
19+
20+
//// [parser.numericSeparators.decimal.js]
21+
1000000000;
22+
1.10001;
23+
10000000000;
24+
10000000000;
25+
1e-10;
26+
1.1e+100;
27+
1.1e+100;
28+
1.1e-100;
29+
123456;
30+
122333;
31+
12.34;
32+
1.234e+57;
33+
1.234e+57;
34+
1.234e-55;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//// [tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts] ////
2+
3+
=== parser.numericSeparators.decimal.ts ===
4+
5+
1_000_000_000
6+
1.1_00_01
7+
1e1_0
8+
1e+1_0
9+
1e-1_0
10+
1.1e10_0
11+
1.1e+10_0
12+
1.1e-10_0
13+
12_34_56
14+
1_22_333
15+
1_2.3_4
16+
1_2.3_4e5_6
17+
1_2.3_4e+5_6
18+
1_2.3_4e-5_6
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//// [tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts] ////
2+
3+
=== parser.numericSeparators.decimal.ts ===
4+
1_000_000_000
5+
>1_000_000_000 : 1000000000
6+
7+
1.1_00_01
8+
>1.1_00_01 : 1.10001
9+
10+
1e1_0
11+
>1e1_0 : 10000000000
12+
13+
1e+1_0
14+
>1e+1_0 : 10000000000
15+
16+
1e-1_0
17+
>1e-1_0 : 1e-10
18+
19+
1.1e10_0
20+
>1.1e10_0 : 1.1e+100
21+
22+
1.1e+10_0
23+
>1.1e+10_0 : 1.1e+100
24+
25+
1.1e-10_0
26+
>1.1e-10_0 : 1.1e-100
27+
28+
12_34_56
29+
>12_34_56 : 123456
30+
31+
1_22_333
32+
>1_22_333 : 122333
33+
34+
1_2.3_4
35+
>1_2.3_4 : 12.34
36+
37+
1_2.3_4e5_6
38+
>1_2.3_4e5_6 : 1.234e+57
39+
40+
1_2.3_4e+5_6
41+
>1_2.3_4e+5_6 : 1.234e+57
42+
43+
1_2.3_4e-5_6
44+
>1_2.3_4e-5_6 : 1.234e-55
45+

tests/cases/conformance/parser/ecmascript2021/numericSeparators/parser.numericSeparators.decimal.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// @target: es5, es2020, es2021
12
1_000_000_000
23
1.1_00_01
34
1e1_0

0 commit comments

Comments
 (0)