@typescript-deploys/pr-build 5.3.0-pr-55576-6 → 5.3.0-pr-55600-13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/tsc.js +989 -79
- package/lib/tsserver.js +1033 -84
- package/lib/typescript.d.ts +27 -1
- package/lib/typescript.js +1032 -86
- package/lib/typingsInstaller.js +988 -78
- package/package.json +2 -2
package/lib/typingsInstaller.js
CHANGED
|
@@ -54,7 +54,7 @@ var path = __toESM(require("path"));
|
|
|
54
54
|
|
|
55
55
|
// src/compiler/corePublic.ts
|
|
56
56
|
var versionMajorMinor = "5.3";
|
|
57
|
-
var version = `${versionMajorMinor}.0-insiders.
|
|
57
|
+
var version = `${versionMajorMinor}.0-insiders.20230901`;
|
|
58
58
|
|
|
59
59
|
// src/compiler/core.ts
|
|
60
60
|
var emptyArray = [];
|
|
@@ -3197,6 +3197,24 @@ var ScriptKind = /* @__PURE__ */ ((ScriptKind3) => {
|
|
|
3197
3197
|
ScriptKind3[ScriptKind3["Deferred"] = 7] = "Deferred";
|
|
3198
3198
|
return ScriptKind3;
|
|
3199
3199
|
})(ScriptKind || {});
|
|
3200
|
+
var ScriptTarget = /* @__PURE__ */ ((ScriptTarget3) => {
|
|
3201
|
+
ScriptTarget3[ScriptTarget3["ES3"] = 0] = "ES3";
|
|
3202
|
+
ScriptTarget3[ScriptTarget3["ES5"] = 1] = "ES5";
|
|
3203
|
+
ScriptTarget3[ScriptTarget3["ES2015"] = 2] = "ES2015";
|
|
3204
|
+
ScriptTarget3[ScriptTarget3["ES2016"] = 3] = "ES2016";
|
|
3205
|
+
ScriptTarget3[ScriptTarget3["ES2017"] = 4] = "ES2017";
|
|
3206
|
+
ScriptTarget3[ScriptTarget3["ES2018"] = 5] = "ES2018";
|
|
3207
|
+
ScriptTarget3[ScriptTarget3["ES2019"] = 6] = "ES2019";
|
|
3208
|
+
ScriptTarget3[ScriptTarget3["ES2020"] = 7] = "ES2020";
|
|
3209
|
+
ScriptTarget3[ScriptTarget3["ES2021"] = 8] = "ES2021";
|
|
3210
|
+
ScriptTarget3[ScriptTarget3["ES2022"] = 9] = "ES2022";
|
|
3211
|
+
ScriptTarget3[ScriptTarget3["ES2023"] = 10] = "ES2023";
|
|
3212
|
+
ScriptTarget3[ScriptTarget3["ES2024"] = 11] = "ES2024";
|
|
3213
|
+
ScriptTarget3[ScriptTarget3["ESNext"] = 99] = "ESNext";
|
|
3214
|
+
ScriptTarget3[ScriptTarget3["JSON"] = 100] = "JSON";
|
|
3215
|
+
ScriptTarget3[ScriptTarget3["Latest"] = 99 /* ESNext */] = "Latest";
|
|
3216
|
+
return ScriptTarget3;
|
|
3217
|
+
})(ScriptTarget || {});
|
|
3200
3218
|
var TransformFlags = /* @__PURE__ */ ((TransformFlags3) => {
|
|
3201
3219
|
TransformFlags3[TransformFlags3["None"] = 0] = "None";
|
|
3202
3220
|
TransformFlags3[TransformFlags3["ContainsTypeScript"] = 1] = "ContainsTypeScript";
|
|
@@ -5468,6 +5486,43 @@ var Diagnostics = {
|
|
|
5468
5486
|
The_left_hand_side_of_a_for_in_statement_cannot_be_a_using_declaration: diag(1493, 1 /* Error */, "The_left_hand_side_of_a_for_in_statement_cannot_be_a_using_declaration_1493", "The left-hand side of a 'for...in' statement cannot be a 'using' declaration."),
|
|
5469
5487
|
The_left_hand_side_of_a_for_in_statement_cannot_be_an_await_using_declaration: diag(1494, 1 /* Error */, "The_left_hand_side_of_a_for_in_statement_cannot_be_an_await_using_declaration_1494", "The left-hand side of a 'for...in' statement cannot be an 'await using' declaration."),
|
|
5470
5488
|
_0_modifier_cannot_appear_on_an_await_using_declaration: diag(1495, 1 /* Error */, "_0_modifier_cannot_appear_on_an_await_using_declaration_1495", "'{0}' modifier cannot appear on an 'await using' declaration."),
|
|
5489
|
+
_0_is_not_a_valid_character_escape: diag(1496, 1 /* Error */, "_0_is_not_a_valid_character_escape_1496", "'\\{0}' is not a valid character escape."),
|
|
5490
|
+
Unknown_regular_expression_flag: diag(1497, 1 /* Error */, "Unknown_regular_expression_flag_1497", "Unknown regular expression flag."),
|
|
5491
|
+
Duplicate_regular_expression_flag: diag(1498, 1 /* Error */, "Duplicate_regular_expression_flag_1498", "Duplicate regular expression flag."),
|
|
5492
|
+
This_regular_expression_flag_is_only_available_when_targeting_0_or_later: diag(1499, 1 /* Error */, "This_regular_expression_flag_is_only_available_when_targeting_0_or_later_1499", "This regular expression flag is only available when targeting '{0}' or later."),
|
|
5493
|
+
The_Unicode_u_flag_and_the_Unicode_Sets_v_flag_cannot_be_set_simultaneously: diag(1500, 1 /* Error */, "The_Unicode_u_flag_and_the_Unicode_Sets_v_flag_cannot_be_set_simultaneously_1500", "The Unicode (u) flag and the Unicode Sets (v) flag cannot be set simultaneously."),
|
|
5494
|
+
Named_capturing_groups_are_only_available_when_targeting_ES2018_or_later: diag(1501, 1 /* Error */, "Named_capturing_groups_are_only_available_when_targeting_ES2018_or_later_1501", "Named capturing groups are only available when targeting 'ES2018' or later."),
|
|
5495
|
+
Subpattern_flags_must_be_present_when_there_is_a_minus_sign: diag(1502, 1 /* Error */, "Subpattern_flags_must_be_present_when_there_is_a_minus_sign_1502", "Subpattern flags must be present when there is a minus sign."),
|
|
5496
|
+
Incomplete_quantifier_Digit_expected: diag(1503, 1 /* Error */, "Incomplete_quantifier_Digit_expected_1503", "Incomplete quantifier. Digit expected."),
|
|
5497
|
+
Numbers_out_of_order_in_quantifier: diag(1504, 1 /* Error */, "Numbers_out_of_order_in_quantifier_1504", "Numbers out of order in quantifier."),
|
|
5498
|
+
There_is_nothing_available_for_repetition: diag(1505, 1 /* Error */, "There_is_nothing_available_for_repetition_1505", "There is nothing available for repetition."),
|
|
5499
|
+
Unexpected_0_Did_you_mean_to_escape_it_with_backslash: diag(1506, 1 /* Error */, "Unexpected_0_Did_you_mean_to_escape_it_with_backslash_1506", "Unexpected '{0}'. Did you mean to escape it with backslash?"),
|
|
5500
|
+
This_regular_expression_flag_cannot_be_toggled_within_a_subpattern: diag(1507, 1 /* Error */, "This_regular_expression_flag_cannot_be_toggled_within_a_subpattern_1507", "This regular expression flag cannot be toggled within a subpattern."),
|
|
5501
|
+
k_must_be_followed_by_a_capturing_group_name_enclosed_in_angle_brackets: diag(1508, 1 /* Error */, "k_must_be_followed_by_a_capturing_group_name_enclosed_in_angle_brackets_1508", "'\\k' must be followed by a capturing group name enclosed in angle brackets."),
|
|
5502
|
+
q_is_only_available_inside_character_class: diag(1509, 1 /* Error */, "q_is_only_available_inside_character_class_1509", "'\\q' is only available inside character class."),
|
|
5503
|
+
c_must_be_followed_by_an_ASCII_letter: diag(1510, 1 /* Error */, "c_must_be_followed_by_an_ASCII_letter_1510", "'\\c' must be followed by an ASCII letter."),
|
|
5504
|
+
Undetermined_character_escape: diag(1511, 1 /* Error */, "Undetermined_character_escape_1511", "Undetermined character escape."),
|
|
5505
|
+
Expected_a_capturing_group_name: diag(1512, 1 /* Error */, "Expected_a_capturing_group_name_1512", "Expected a capturing group name."),
|
|
5506
|
+
Named_capturing_groups_with_the_same_name_must_be_mutually_exclusive_to_each_other: diag(1513, 1 /* Error */, "Named_capturing_groups_with_the_same_name_must_be_mutually_exclusive_to_each_other_1513", "Named capturing groups with the same name must be mutually exclusive to each other."),
|
|
5507
|
+
A_character_class_range_must_not_be_bounded_by_another_character_class: diag(1514, 1 /* Error */, "A_character_class_range_must_not_be_bounded_by_another_character_class_1514", "A character class range must not be bounded by another character class."),
|
|
5508
|
+
Range_out_of_order_in_character_class: diag(1515, 1 /* Error */, "Range_out_of_order_in_character_class_1515", "Range out of order in character class."),
|
|
5509
|
+
Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class: diag(1516, 1 /* Error */, "Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_characte_1516", "Anything that would possibly match more than a single character is invalid inside a negated character class."),
|
|
5510
|
+
Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead: diag(1517, 1 /* Error */, "Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead_1517", "Operators must not be mixed within a character class. Wrap it in a nested class instead."),
|
|
5511
|
+
Expected_a_class_set_oprand: diag(1518, 1 /* Error */, "Expected_a_class_set_oprand_1518", "Expected a class set oprand."),
|
|
5512
|
+
q_must_be_followed_by_string_alternatives_enclosed_in_braces: diag(1519, 1 /* Error */, "q_must_be_followed_by_string_alternatives_enclosed_in_braces_1519", "'\\q' must be followed by string alternatives enclosed in braces."),
|
|
5513
|
+
A_character_class_must_not_contain_a_reserved_double_punctuator_Did_you_mean_to_escape_it_with_backslash: diag(1520, 1 /* Error */, "A_character_class_must_not_contain_a_reserved_double_punctuator_Did_you_mean_to_escape_it_with_backs_1520", "A character class must not contain a reserved double punctuator. Did you mean to escape it with backslash?"),
|
|
5514
|
+
Expected_a_Unicode_property_name: diag(1521, 1 /* Error */, "Expected_a_Unicode_property_name_1521", "Expected a Unicode property name."),
|
|
5515
|
+
Unknown_Unicode_property_name: diag(1522, 1 /* Error */, "Unknown_Unicode_property_name_1522", "Unknown Unicode property name."),
|
|
5516
|
+
Expected_a_Unicode_property_value: diag(1523, 1 /* Error */, "Expected_a_Unicode_property_value_1523", "Expected a Unicode property value."),
|
|
5517
|
+
Unknown_Unicode_property_value: diag(1524, 1 /* Error */, "Unknown_Unicode_property_value_1524", "Unknown Unicode property value."),
|
|
5518
|
+
Expected_a_Unicode_property_name_or_value: diag(1525, 1 /* Error */, "Expected_a_Unicode_property_name_or_value_1525", "Expected a Unicode property name or value."),
|
|
5519
|
+
Any_Unicode_property_that_would_possibly_match_more_than_a_single_character_is_only_available_when_the_Unicode_Sets_v_flag_is_set: diag(1526, 1 /* Error */, "Any_Unicode_property_that_would_possibly_match_more_than_a_single_character_is_only_available_when_t_1526", "Any Unicode property that would possibly match more than a single character is only available when the Unicode Sets (v) flag is set."),
|
|
5520
|
+
Unknown_Unicode_property_name_or_value: diag(1527, 1 /* Error */, "Unknown_Unicode_property_name_or_value_1527", "Unknown Unicode property name or value."),
|
|
5521
|
+
Unicode_property_value_expressions_are_only_available_when_the_Unicode_u_flag_or_the_Unicode_Sets_v_flag_is_set: diag(1528, 1 /* Error */, "Unicode_property_value_expressions_are_only_available_when_the_Unicode_u_flag_or_the_Unicode_Sets_v__1528", "Unicode property value expressions are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set."),
|
|
5522
|
+
_0_must_be_followed_by_a_Unicode_property_value_expression_enclosed_in_braces: diag(1529, 1 /* Error */, "_0_must_be_followed_by_a_Unicode_property_value_expression_enclosed_in_braces_1529", "'\\{0}' must be followed by a Unicode property value expression enclosed in braces."),
|
|
5523
|
+
There_is_no_capturing_group_named_0_in_this_regular_expression: diag(1530, 1 /* Error */, "There_is_no_capturing_group_named_0_in_this_regular_expression_1530", "There is no capturing group named '{0}' in this regular expression."),
|
|
5524
|
+
A_decimal_escape_must_refer_to_an_existent_capturing_group_There_are_only_0_capturing_groups_in_this_regular_expression: diag(1531, 1 /* Error */, "A_decimal_escape_must_refer_to_an_existent_capturing_group_There_are_only_0_capturing_groups_in_this_1531", "A decimal escape must refer to an existent capturing group. There are only {0} capturing groups in this regular expression."),
|
|
5525
|
+
Decimal_escapes_are_invalid_when_there_are_no_capturing_groups_in_a_regular_expression: diag(1532, 1 /* Error */, "Decimal_escapes_are_invalid_when_there_are_no_capturing_groups_in_a_regular_expression_1532", "Decimal escapes are invalid when there are no capturing groups in a regular expression."),
|
|
5471
5526
|
The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."),
|
|
5472
5527
|
The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."),
|
|
5473
5528
|
Call_signature_return_types_0_and_1_are_incompatible: diag(
|
|
@@ -7301,6 +7356,26 @@ var textToToken = new Map(Object.entries({
|
|
|
7301
7356
|
"#": 63 /* HashToken */,
|
|
7302
7357
|
"`": 62 /* BacktickToken */
|
|
7303
7358
|
}));
|
|
7359
|
+
var charToRegExpFlag = new Map(Object.entries({
|
|
7360
|
+
d: 1 /* HasIndices */,
|
|
7361
|
+
g: 2 /* Global */,
|
|
7362
|
+
i: 4 /* IgnoreCase */,
|
|
7363
|
+
m: 8 /* Multiline */,
|
|
7364
|
+
s: 16 /* DotAll */,
|
|
7365
|
+
u: 32 /* Unicode */,
|
|
7366
|
+
v: 64 /* UnicodeSets */,
|
|
7367
|
+
y: 128 /* Sticky */
|
|
7368
|
+
}));
|
|
7369
|
+
var regExpFlagToFirstAvailableLanguageVersion = /* @__PURE__ */ new Map([
|
|
7370
|
+
[1 /* HasIndices */, 9 /* ES2022 */],
|
|
7371
|
+
[2 /* Global */, 0 /* ES3 */],
|
|
7372
|
+
[4 /* IgnoreCase */, 0 /* ES3 */],
|
|
7373
|
+
[8 /* Multiline */, 0 /* ES3 */],
|
|
7374
|
+
[16 /* DotAll */, 5 /* ES2018 */],
|
|
7375
|
+
[32 /* Unicode */, 2 /* ES2015 */],
|
|
7376
|
+
[64 /* UnicodeSets */, 11 /* ES2024 */],
|
|
7377
|
+
[128 /* Sticky */, 2 /* ES2015 */]
|
|
7378
|
+
]);
|
|
7304
7379
|
var unicodeES3IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1649, 1747, 1749, 1749, 1765, 1766, 1786, 1788, 1808, 1808, 1810, 1836, 1920, 1957, 2309, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2784, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, 4176, 4181, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6067, 6176, 6263, 6272, 6312, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8319, 8319, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12346, 12353, 12436, 12445, 12446, 12449, 12538, 12540, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65138, 65140, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500];
|
|
7305
7380
|
var unicodeES3IdentifierPart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 543, 546, 563, 592, 685, 688, 696, 699, 705, 720, 721, 736, 740, 750, 750, 768, 846, 864, 866, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, 974, 976, 983, 986, 1011, 1024, 1153, 1155, 1158, 1164, 1220, 1223, 1224, 1227, 1228, 1232, 1269, 1272, 1273, 1329, 1366, 1369, 1369, 1377, 1415, 1425, 1441, 1443, 1465, 1467, 1469, 1471, 1471, 1473, 1474, 1476, 1476, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1621, 1632, 1641, 1648, 1747, 1749, 1756, 1759, 1768, 1770, 1773, 1776, 1788, 1808, 1836, 1840, 1866, 1920, 1968, 2305, 2307, 2309, 2361, 2364, 2381, 2384, 2388, 2392, 2403, 2406, 2415, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2492, 2494, 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2562, 2562, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2649, 2652, 2654, 2654, 2662, 2676, 2689, 2691, 2693, 2699, 2701, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2784, 2790, 2799, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2870, 2873, 2876, 2883, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2913, 2918, 2927, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 2997, 2999, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3031, 3031, 3047, 3055, 3073, 3075, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3134, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3168, 3169, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3262, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3297, 3302, 3311, 3330, 3331, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3390, 3395, 3398, 3400, 3402, 3405, 3415, 3415, 3424, 3425, 3430, 3439, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3805, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3946, 3953, 3972, 3974, 3979, 3984, 3991, 3993, 4028, 4038, 4038, 4096, 4129, 4131, 4135, 4137, 4138, 4140, 4146, 4150, 4153, 4160, 4169, 4176, 4185, 4256, 4293, 4304, 4342, 4352, 4441, 4447, 4514, 4520, 4601, 4608, 4614, 4616, 4678, 4680, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4742, 4744, 4744, 4746, 4749, 4752, 4782, 4784, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4814, 4816, 4822, 4824, 4846, 4848, 4878, 4880, 4880, 4882, 4885, 4888, 4894, 4896, 4934, 4936, 4954, 4969, 4977, 5024, 5108, 5121, 5740, 5743, 5750, 5761, 5786, 5792, 5866, 6016, 6099, 6112, 6121, 6160, 6169, 6176, 6263, 6272, 6313, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8319, 8319, 8400, 8412, 8417, 8417, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8497, 8499, 8505, 8544, 8579, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12346, 12353, 12436, 12441, 12442, 12445, 12446, 12449, 12542, 12549, 12588, 12593, 12686, 12704, 12727, 13312, 19893, 19968, 40869, 40960, 42124, 44032, 55203, 63744, 64045, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65056, 65059, 65075, 65076, 65101, 65103, 65136, 65138, 65140, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65381, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500];
|
|
7306
7381
|
var unicodeES5IdentifierStart = [170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6e3, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43e3, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500];
|
|
@@ -7350,6 +7425,13 @@ function tokenToString(t) {
|
|
|
7350
7425
|
function stringToToken(s) {
|
|
7351
7426
|
return textToToken.get(s);
|
|
7352
7427
|
}
|
|
7428
|
+
var regExpFlagChars = makeReverseMap(charToRegExpFlag);
|
|
7429
|
+
function characterToRegularExpressionFlag(c) {
|
|
7430
|
+
return charToRegExpFlag.get(c);
|
|
7431
|
+
}
|
|
7432
|
+
function regularExpressionFlagToFirstAvailableLanguageVersion(f) {
|
|
7433
|
+
return regExpFlagToFirstAvailableLanguageVersion.get(f);
|
|
7434
|
+
}
|
|
7353
7435
|
function computeLineStarts(text) {
|
|
7354
7436
|
const result = [];
|
|
7355
7437
|
let pos = 0;
|
|
@@ -7413,8 +7495,11 @@ function isDigit(ch) {
|
|
|
7413
7495
|
function isHexDigit(ch) {
|
|
7414
7496
|
return isDigit(ch) || ch >= 65 /* A */ && ch <= 70 /* F */ || ch >= 97 /* a */ && ch <= 102 /* f */;
|
|
7415
7497
|
}
|
|
7416
|
-
function
|
|
7417
|
-
return
|
|
7498
|
+
function isASCIILetter(ch) {
|
|
7499
|
+
return ch >= 65 /* A */ && ch <= 90 /* Z */ || ch >= 97 /* a */ && ch <= 122 /* z */;
|
|
7500
|
+
}
|
|
7501
|
+
function isWordCharacter(ch) {
|
|
7502
|
+
return isASCIILetter(ch) || isDigit(ch) || ch === 95 /* _ */;
|
|
7418
7503
|
}
|
|
7419
7504
|
function isOctalDigit(ch) {
|
|
7420
7505
|
return ch >= 48 /* _0 */ && ch <= 55 /* _7 */;
|
|
@@ -7708,10 +7793,10 @@ function getShebang(text) {
|
|
|
7708
7793
|
}
|
|
7709
7794
|
}
|
|
7710
7795
|
function isIdentifierStart(ch, languageVersion) {
|
|
7711
|
-
return ch
|
|
7796
|
+
return isASCIILetter(ch) || ch === 36 /* $ */ || ch === 95 /* _ */ || ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierStart(ch, languageVersion);
|
|
7712
7797
|
}
|
|
7713
7798
|
function isIdentifierPart(ch, languageVersion, identifierVariant) {
|
|
7714
|
-
return ch
|
|
7799
|
+
return isWordCharacter(ch) || ch === 36 /* $ */ || // "-" and ":" are valid in JSX Identifiers
|
|
7715
7800
|
(identifierVariant === 1 /* JSX */ ? ch === 45 /* minus */ || ch === 58 /* colon */ : false) || ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierPart(ch, languageVersion);
|
|
7716
7801
|
}
|
|
7717
7802
|
function isIdentifierText(name, languageVersion, identifierVariant) {
|
|
@@ -7797,13 +7882,8 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
7797
7882
|
});
|
|
7798
7883
|
}
|
|
7799
7884
|
return scanner;
|
|
7800
|
-
function error(message, errPos = pos, length3,
|
|
7801
|
-
|
|
7802
|
-
const oldPos = pos;
|
|
7803
|
-
pos = errPos;
|
|
7804
|
-
onError(message, length3 || 0, arg0);
|
|
7805
|
-
pos = oldPos;
|
|
7806
|
-
}
|
|
7885
|
+
function error(message, errPos = pos, length3 = 0, ...args) {
|
|
7886
|
+
return onError == null ? void 0 : onError(message, errPos, length3, ...args);
|
|
7807
7887
|
}
|
|
7808
7888
|
function scanNumberFragment() {
|
|
7809
7889
|
let start2 = pos;
|
|
@@ -8028,7 +8108,9 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8028
8108
|
result += text.substring(start2, pos);
|
|
8029
8109
|
result += scanEscapeSequence(
|
|
8030
8110
|
/*shouldEmitInvalidEscapeError*/
|
|
8031
|
-
true
|
|
8111
|
+
true,
|
|
8112
|
+
/*isRegularExpression*/
|
|
8113
|
+
false
|
|
8032
8114
|
);
|
|
8033
8115
|
start2 = pos;
|
|
8034
8116
|
continue;
|
|
@@ -8072,7 +8154,11 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8072
8154
|
}
|
|
8073
8155
|
if (currChar === 92 /* backslash */) {
|
|
8074
8156
|
contents += text.substring(start2, pos);
|
|
8075
|
-
contents += scanEscapeSequence(
|
|
8157
|
+
contents += scanEscapeSequence(
|
|
8158
|
+
shouldEmitInvalidEscapeError,
|
|
8159
|
+
/*isRegularExpression*/
|
|
8160
|
+
false
|
|
8161
|
+
);
|
|
8076
8162
|
start2 = pos;
|
|
8077
8163
|
continue;
|
|
8078
8164
|
}
|
|
@@ -8092,7 +8178,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8092
8178
|
tokenValue = contents;
|
|
8093
8179
|
return resultingToken;
|
|
8094
8180
|
}
|
|
8095
|
-
function scanEscapeSequence(shouldEmitInvalidEscapeError) {
|
|
8181
|
+
function scanEscapeSequence(shouldEmitInvalidEscapeError, isRegularExpression) {
|
|
8096
8182
|
const start2 = pos;
|
|
8097
8183
|
pos++;
|
|
8098
8184
|
if (pos >= end) {
|
|
@@ -8151,45 +8237,9 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8151
8237
|
case 34 /* doubleQuote */:
|
|
8152
8238
|
return '"';
|
|
8153
8239
|
case 117 /* u */:
|
|
8154
|
-
if (pos < end && text.charCodeAt(pos) === 123 /* openBrace */) {
|
|
8155
|
-
pos
|
|
8156
|
-
|
|
8157
|
-
1,
|
|
8158
|
-
/*canHaveSeparators*/
|
|
8159
|
-
false
|
|
8160
|
-
);
|
|
8161
|
-
const escapedValue = escapedValueString ? parseInt(escapedValueString, 16) : -1;
|
|
8162
|
-
if (escapedValue < 0) {
|
|
8163
|
-
tokenFlags |= 2048 /* ContainsInvalidEscape */;
|
|
8164
|
-
if (shouldEmitInvalidEscapeError) {
|
|
8165
|
-
error(Diagnostics.Hexadecimal_digit_expected);
|
|
8166
|
-
}
|
|
8167
|
-
return text.substring(start2, pos);
|
|
8168
|
-
}
|
|
8169
|
-
if (!isCodePoint(escapedValue)) {
|
|
8170
|
-
tokenFlags |= 2048 /* ContainsInvalidEscape */;
|
|
8171
|
-
if (shouldEmitInvalidEscapeError) {
|
|
8172
|
-
error(Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive);
|
|
8173
|
-
}
|
|
8174
|
-
return text.substring(start2, pos);
|
|
8175
|
-
}
|
|
8176
|
-
if (pos >= end) {
|
|
8177
|
-
tokenFlags |= 2048 /* ContainsInvalidEscape */;
|
|
8178
|
-
if (shouldEmitInvalidEscapeError) {
|
|
8179
|
-
error(Diagnostics.Unexpected_end_of_text);
|
|
8180
|
-
}
|
|
8181
|
-
return text.substring(start2, pos);
|
|
8182
|
-
}
|
|
8183
|
-
if (text.charCodeAt(pos) !== 125 /* closeBrace */) {
|
|
8184
|
-
tokenFlags |= 2048 /* ContainsInvalidEscape */;
|
|
8185
|
-
if (shouldEmitInvalidEscapeError) {
|
|
8186
|
-
error(Diagnostics.Unterminated_Unicode_escape_sequence);
|
|
8187
|
-
}
|
|
8188
|
-
return text.substring(start2, pos);
|
|
8189
|
-
}
|
|
8190
|
-
pos++;
|
|
8191
|
-
tokenFlags |= 8 /* ExtendedUnicodeEscape */;
|
|
8192
|
-
return utf16EncodeAsString(escapedValue);
|
|
8240
|
+
if ((!isRegularExpression || shouldEmitInvalidEscapeError) && pos < end && text.charCodeAt(pos) === 123 /* openBrace */) {
|
|
8241
|
+
pos -= 2;
|
|
8242
|
+
return scanExtendedUnicodeEscape(shouldEmitInvalidEscapeError);
|
|
8193
8243
|
}
|
|
8194
8244
|
for (; pos < start2 + 6; pos++) {
|
|
8195
8245
|
if (!(pos < end && isHexDigit(text.charCodeAt(pos)))) {
|
|
@@ -8201,7 +8251,23 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8201
8251
|
}
|
|
8202
8252
|
}
|
|
8203
8253
|
tokenFlags |= 1024 /* UnicodeEscape */;
|
|
8204
|
-
|
|
8254
|
+
const escapedValue = parseInt(text.substring(start2 + 2, pos), 16);
|
|
8255
|
+
const escapedValueString = String.fromCharCode(escapedValue);
|
|
8256
|
+
if (isRegularExpression && shouldEmitInvalidEscapeError && escapedValue >= 55296 && escapedValue <= 56319 && pos + 6 < end && text.substring(pos, pos + 2) === "\\u" && text.charCodeAt(pos + 2) !== 123 /* openBrace */) {
|
|
8257
|
+
const nextStart = pos;
|
|
8258
|
+
let nextPos = pos + 2;
|
|
8259
|
+
for (; nextPos < nextStart + 6; nextPos++) {
|
|
8260
|
+
if (!isHexDigit(text.charCodeAt(pos))) {
|
|
8261
|
+
return escapedValueString;
|
|
8262
|
+
}
|
|
8263
|
+
}
|
|
8264
|
+
const nextEscapedValue = parseInt(text.substring(nextStart + 2, nextPos), 16);
|
|
8265
|
+
if (nextEscapedValue >= 56320 && nextEscapedValue <= 57343) {
|
|
8266
|
+
pos = nextPos;
|
|
8267
|
+
return escapedValueString + String.fromCharCode(nextEscapedValue);
|
|
8268
|
+
}
|
|
8269
|
+
}
|
|
8270
|
+
return escapedValueString;
|
|
8205
8271
|
case 120 /* x */:
|
|
8206
8272
|
for (; pos < start2 + 4; pos++) {
|
|
8207
8273
|
if (!(pos < end && isHexDigit(text.charCodeAt(pos)))) {
|
|
@@ -8223,10 +8289,16 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8223
8289
|
case 8233 /* paragraphSeparator */:
|
|
8224
8290
|
return "";
|
|
8225
8291
|
default:
|
|
8292
|
+
if (isRegularExpression && (shouldEmitInvalidEscapeError || isIdentifierPart(ch, languageVersion))) {
|
|
8293
|
+
error(Diagnostics._0_is_not_a_valid_character_escape, pos - 2, 2, String.fromCharCode(ch));
|
|
8294
|
+
}
|
|
8226
8295
|
return String.fromCharCode(ch);
|
|
8227
8296
|
}
|
|
8228
8297
|
}
|
|
8229
|
-
function scanExtendedUnicodeEscape() {
|
|
8298
|
+
function scanExtendedUnicodeEscape(shouldEmitInvalidEscapeError = true) {
|
|
8299
|
+
const start2 = pos;
|
|
8300
|
+
pos += 3;
|
|
8301
|
+
const escapedStart = pos;
|
|
8230
8302
|
const escapedValueString = scanMinimumNumberOfHexDigits(
|
|
8231
8303
|
1,
|
|
8232
8304
|
/*canHaveSeparators*/
|
|
@@ -8235,24 +8307,34 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8235
8307
|
const escapedValue = escapedValueString ? parseInt(escapedValueString, 16) : -1;
|
|
8236
8308
|
let isInvalidExtendedEscape = false;
|
|
8237
8309
|
if (escapedValue < 0) {
|
|
8238
|
-
|
|
8310
|
+
if (shouldEmitInvalidEscapeError) {
|
|
8311
|
+
error(Diagnostics.Hexadecimal_digit_expected);
|
|
8312
|
+
}
|
|
8239
8313
|
isInvalidExtendedEscape = true;
|
|
8240
8314
|
} else if (escapedValue > 1114111) {
|
|
8241
|
-
|
|
8315
|
+
if (shouldEmitInvalidEscapeError) {
|
|
8316
|
+
error(Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive, escapedStart, pos - escapedStart);
|
|
8317
|
+
}
|
|
8242
8318
|
isInvalidExtendedEscape = true;
|
|
8243
8319
|
}
|
|
8244
8320
|
if (pos >= end) {
|
|
8245
|
-
|
|
8321
|
+
if (shouldEmitInvalidEscapeError) {
|
|
8322
|
+
error(Diagnostics.Unexpected_end_of_text);
|
|
8323
|
+
}
|
|
8246
8324
|
isInvalidExtendedEscape = true;
|
|
8247
8325
|
} else if (text.charCodeAt(pos) === 125 /* closeBrace */) {
|
|
8248
8326
|
pos++;
|
|
8249
8327
|
} else {
|
|
8250
|
-
|
|
8328
|
+
if (shouldEmitInvalidEscapeError) {
|
|
8329
|
+
error(Diagnostics.Unterminated_Unicode_escape_sequence);
|
|
8330
|
+
}
|
|
8251
8331
|
isInvalidExtendedEscape = true;
|
|
8252
8332
|
}
|
|
8253
8333
|
if (isInvalidExtendedEscape) {
|
|
8254
|
-
|
|
8334
|
+
tokenFlags |= 2048 /* ContainsInvalidEscape */;
|
|
8335
|
+
return text.substring(start2, pos);
|
|
8255
8336
|
}
|
|
8337
|
+
tokenFlags |= 8 /* ExtendedUnicodeEscape */;
|
|
8256
8338
|
return utf16EncodeAsString(escapedValue);
|
|
8257
8339
|
}
|
|
8258
8340
|
function peekUnicodeEscape() {
|
|
@@ -8294,8 +8376,6 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8294
8376
|
} else if (ch === 92 /* backslash */) {
|
|
8295
8377
|
ch = peekExtendedUnicodeEscape();
|
|
8296
8378
|
if (ch >= 0 && isIdentifierPart(ch, languageVersion)) {
|
|
8297
|
-
pos += 3;
|
|
8298
|
-
tokenFlags |= 8 /* ExtendedUnicodeEscape */;
|
|
8299
8379
|
result += scanExtendedUnicodeEscape();
|
|
8300
8380
|
start2 = pos;
|
|
8301
8381
|
continue;
|
|
@@ -8765,8 +8845,6 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8765
8845
|
case 92 /* backslash */:
|
|
8766
8846
|
const extendedCookedChar = peekExtendedUnicodeEscape();
|
|
8767
8847
|
if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar, languageVersion)) {
|
|
8768
|
-
pos += 3;
|
|
8769
|
-
tokenFlags |= 8 /* ExtendedUnicodeEscape */;
|
|
8770
8848
|
tokenValue = scanExtendedUnicodeEscape() + scanIdentifierParts();
|
|
8771
8849
|
return token = getIdentifierToken();
|
|
8772
8850
|
}
|
|
@@ -8782,7 +8860,7 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8782
8860
|
return token = 0 /* Unknown */;
|
|
8783
8861
|
case 35 /* hash */:
|
|
8784
8862
|
if (pos !== 0 && text[pos + 1] === "!") {
|
|
8785
|
-
error(Diagnostics.can_only_be_used_at_the_start_of_a_file);
|
|
8863
|
+
error(Diagnostics.can_only_be_used_at_the_start_of_a_file, pos, 2);
|
|
8786
8864
|
pos++;
|
|
8787
8865
|
return token = 0 /* Unknown */;
|
|
8788
8866
|
}
|
|
@@ -8791,8 +8869,6 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8791
8869
|
pos++;
|
|
8792
8870
|
const extendedCookedChar2 = peekExtendedUnicodeEscape();
|
|
8793
8871
|
if (extendedCookedChar2 >= 0 && isIdentifierStart(extendedCookedChar2, languageVersion)) {
|
|
8794
|
-
pos += 3;
|
|
8795
|
-
tokenFlags |= 8 /* ExtendedUnicodeEscape */;
|
|
8796
8872
|
tokenValue = "#" + scanExtendedUnicodeEscape() + scanIdentifierParts();
|
|
8797
8873
|
return token = 81 /* PrivateIdentifier */;
|
|
8798
8874
|
}
|
|
@@ -8915,14 +8991,831 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
8915
8991
|
}
|
|
8916
8992
|
p++;
|
|
8917
8993
|
}
|
|
8918
|
-
|
|
8994
|
+
const isUnterminated = !!(tokenFlags & 4 /* Unterminated */);
|
|
8995
|
+
const endOfBody = p - (isUnterminated ? 0 : 1);
|
|
8996
|
+
let regExpFlags = 0 /* None */;
|
|
8997
|
+
while (p < end) {
|
|
8998
|
+
const ch = text.charCodeAt(p);
|
|
8999
|
+
if (!isIdentifierPart(ch, languageVersion)) {
|
|
9000
|
+
break;
|
|
9001
|
+
}
|
|
9002
|
+
const flag = characterToRegularExpressionFlag(String.fromCharCode(ch));
|
|
9003
|
+
if (flag === void 0) {
|
|
9004
|
+
error(Diagnostics.Unknown_regular_expression_flag, p, 1);
|
|
9005
|
+
} else if (regExpFlags & flag) {
|
|
9006
|
+
error(Diagnostics.Duplicate_regular_expression_flag, p, 1);
|
|
9007
|
+
} else if (((regExpFlags | flag) & 96 /* UnicodeMode */) === 96 /* UnicodeMode */) {
|
|
9008
|
+
error(Diagnostics.The_Unicode_u_flag_and_the_Unicode_Sets_v_flag_cannot_be_set_simultaneously, p, 1);
|
|
9009
|
+
} else {
|
|
9010
|
+
regExpFlags |= flag;
|
|
9011
|
+
const availableFrom = regularExpressionFlagToFirstAvailableLanguageVersion(flag);
|
|
9012
|
+
if (languageVersion < availableFrom) {
|
|
9013
|
+
error(Diagnostics.This_regular_expression_flag_is_only_available_when_targeting_0_or_later, p, 1, ScriptTarget[availableFrom]);
|
|
9014
|
+
}
|
|
9015
|
+
}
|
|
8919
9016
|
p++;
|
|
8920
9017
|
}
|
|
8921
|
-
pos =
|
|
9018
|
+
pos = tokenStart + 1;
|
|
9019
|
+
const saveTokenPos = tokenStart;
|
|
9020
|
+
const saveTokenFlags = tokenFlags;
|
|
9021
|
+
scanRegularExpressionWorker(text.slice(0, endOfBody), endOfBody, regExpFlags, isUnterminated);
|
|
9022
|
+
if (!isUnterminated) {
|
|
9023
|
+
pos = p;
|
|
9024
|
+
}
|
|
9025
|
+
tokenStart = saveTokenPos;
|
|
9026
|
+
tokenFlags = saveTokenFlags;
|
|
8922
9027
|
tokenValue = text.substring(tokenStart, pos);
|
|
8923
9028
|
token = 14 /* RegularExpressionLiteral */;
|
|
8924
9029
|
}
|
|
8925
9030
|
return token;
|
|
9031
|
+
function scanRegularExpressionWorker(text2, end2, regExpFlags, isUnterminated) {
|
|
9032
|
+
const unicodeMode = !!(regExpFlags & 96 /* UnicodeMode */);
|
|
9033
|
+
const unicodeSetsMode = !!(regExpFlags & 64 /* UnicodeSets */);
|
|
9034
|
+
let mayContainStrings = false;
|
|
9035
|
+
let numberOfCapturingGroups = 0;
|
|
9036
|
+
const groupSpecifiers = /* @__PURE__ */ new Set();
|
|
9037
|
+
const groupNameReferences = [];
|
|
9038
|
+
const decimalEscapes = [];
|
|
9039
|
+
const namedCapturingGroups = [];
|
|
9040
|
+
function scanDisjunction(isInGroup) {
|
|
9041
|
+
while (true) {
|
|
9042
|
+
namedCapturingGroups.push(/* @__PURE__ */ new Set());
|
|
9043
|
+
scanAlternative(isInGroup);
|
|
9044
|
+
namedCapturingGroups.pop();
|
|
9045
|
+
if (text2.charCodeAt(pos) !== 124 /* bar */) {
|
|
9046
|
+
return;
|
|
9047
|
+
}
|
|
9048
|
+
pos++;
|
|
9049
|
+
}
|
|
9050
|
+
}
|
|
9051
|
+
function scanAlternative(isInGroup) {
|
|
9052
|
+
let isPreviousTermQuantifiable = false;
|
|
9053
|
+
while (pos < end2) {
|
|
9054
|
+
const start2 = pos;
|
|
9055
|
+
const ch = text2.charCodeAt(pos);
|
|
9056
|
+
switch (ch) {
|
|
9057
|
+
case 94 /* caret */:
|
|
9058
|
+
case 36 /* $ */:
|
|
9059
|
+
pos++;
|
|
9060
|
+
isPreviousTermQuantifiable = false;
|
|
9061
|
+
break;
|
|
9062
|
+
case 92 /* backslash */:
|
|
9063
|
+
pos++;
|
|
9064
|
+
switch (text2.charCodeAt(pos)) {
|
|
9065
|
+
case 98 /* b */:
|
|
9066
|
+
case 66 /* B */:
|
|
9067
|
+
pos++;
|
|
9068
|
+
isPreviousTermQuantifiable = false;
|
|
9069
|
+
break;
|
|
9070
|
+
default:
|
|
9071
|
+
scanAtomEscape();
|
|
9072
|
+
isPreviousTermQuantifiable = true;
|
|
9073
|
+
break;
|
|
9074
|
+
}
|
|
9075
|
+
break;
|
|
9076
|
+
case 40 /* openParen */:
|
|
9077
|
+
pos++;
|
|
9078
|
+
if (text2.charCodeAt(pos) === 63 /* question */) {
|
|
9079
|
+
pos++;
|
|
9080
|
+
switch (text2.charCodeAt(pos)) {
|
|
9081
|
+
case 61 /* equals */:
|
|
9082
|
+
case 33 /* exclamation */:
|
|
9083
|
+
pos++;
|
|
9084
|
+
isPreviousTermQuantifiable = false;
|
|
9085
|
+
break;
|
|
9086
|
+
case 60 /* lessThan */:
|
|
9087
|
+
const groupNameStart = pos;
|
|
9088
|
+
pos++;
|
|
9089
|
+
switch (text2.charCodeAt(pos)) {
|
|
9090
|
+
case 61 /* equals */:
|
|
9091
|
+
case 33 /* exclamation */:
|
|
9092
|
+
pos++;
|
|
9093
|
+
isPreviousTermQuantifiable = false;
|
|
9094
|
+
break;
|
|
9095
|
+
default:
|
|
9096
|
+
scanGroupName(
|
|
9097
|
+
/*isReference*/
|
|
9098
|
+
false
|
|
9099
|
+
);
|
|
9100
|
+
scanExpectedChar(62 /* greaterThan */);
|
|
9101
|
+
if (languageVersion < 5 /* ES2018 */) {
|
|
9102
|
+
error(Diagnostics.Named_capturing_groups_are_only_available_when_targeting_ES2018_or_later, groupNameStart, pos - groupNameStart);
|
|
9103
|
+
}
|
|
9104
|
+
numberOfCapturingGroups++;
|
|
9105
|
+
isPreviousTermQuantifiable = true;
|
|
9106
|
+
break;
|
|
9107
|
+
}
|
|
9108
|
+
break;
|
|
9109
|
+
default:
|
|
9110
|
+
const start3 = pos;
|
|
9111
|
+
const setFlags = scanPatternModifiers();
|
|
9112
|
+
if (text2.charCodeAt(pos) === 45 /* minus */) {
|
|
9113
|
+
pos++;
|
|
9114
|
+
scanPatternModifiers(setFlags);
|
|
9115
|
+
if (pos === start3 + 1) {
|
|
9116
|
+
error(Diagnostics.Subpattern_flags_must_be_present_when_there_is_a_minus_sign, start3, pos - start3);
|
|
9117
|
+
}
|
|
9118
|
+
}
|
|
9119
|
+
scanExpectedChar(58 /* colon */);
|
|
9120
|
+
isPreviousTermQuantifiable = true;
|
|
9121
|
+
break;
|
|
9122
|
+
}
|
|
9123
|
+
} else {
|
|
9124
|
+
numberOfCapturingGroups++;
|
|
9125
|
+
isPreviousTermQuantifiable = true;
|
|
9126
|
+
}
|
|
9127
|
+
scanDisjunction(
|
|
9128
|
+
/*isInGroup*/
|
|
9129
|
+
true
|
|
9130
|
+
);
|
|
9131
|
+
scanExpectedChar(41 /* closeParen */);
|
|
9132
|
+
break;
|
|
9133
|
+
case 123 /* openBrace */:
|
|
9134
|
+
pos++;
|
|
9135
|
+
const digitsStart = pos;
|
|
9136
|
+
scanDigits();
|
|
9137
|
+
const min2 = tokenValue;
|
|
9138
|
+
if (!min2) {
|
|
9139
|
+
error(Diagnostics.Incomplete_quantifier_Digit_expected);
|
|
9140
|
+
}
|
|
9141
|
+
if (text2.charCodeAt(pos) === 44 /* comma */) {
|
|
9142
|
+
pos++;
|
|
9143
|
+
scanDigits();
|
|
9144
|
+
const max = tokenValue;
|
|
9145
|
+
if (max && Number.parseInt(min2) > Number.parseInt(max)) {
|
|
9146
|
+
error(Diagnostics.Numbers_out_of_order_in_quantifier, digitsStart, pos - digitsStart);
|
|
9147
|
+
}
|
|
9148
|
+
}
|
|
9149
|
+
scanExpectedChar(125 /* closeBrace */);
|
|
9150
|
+
pos--;
|
|
9151
|
+
case 42 /* asterisk */:
|
|
9152
|
+
case 43 /* plus */:
|
|
9153
|
+
case 63 /* question */:
|
|
9154
|
+
pos++;
|
|
9155
|
+
if (text2.charCodeAt(pos) === 63 /* question */) {
|
|
9156
|
+
pos++;
|
|
9157
|
+
}
|
|
9158
|
+
if (!isPreviousTermQuantifiable) {
|
|
9159
|
+
error(Diagnostics.There_is_nothing_available_for_repetition, start2, pos - start2);
|
|
9160
|
+
}
|
|
9161
|
+
isPreviousTermQuantifiable = false;
|
|
9162
|
+
break;
|
|
9163
|
+
case 46 /* dot */:
|
|
9164
|
+
pos++;
|
|
9165
|
+
isPreviousTermQuantifiable = true;
|
|
9166
|
+
break;
|
|
9167
|
+
case 91 /* openBracket */:
|
|
9168
|
+
pos++;
|
|
9169
|
+
if (unicodeSetsMode) {
|
|
9170
|
+
scanClassSetExpression();
|
|
9171
|
+
} else {
|
|
9172
|
+
scanClassRanges();
|
|
9173
|
+
}
|
|
9174
|
+
scanExpectedChar(93 /* closeBracket */);
|
|
9175
|
+
isPreviousTermQuantifiable = true;
|
|
9176
|
+
break;
|
|
9177
|
+
case 41 /* closeParen */:
|
|
9178
|
+
if (isInGroup) {
|
|
9179
|
+
return;
|
|
9180
|
+
}
|
|
9181
|
+
case 93 /* closeBracket */:
|
|
9182
|
+
case 125 /* closeBrace */:
|
|
9183
|
+
if (isUnterminated && !isInGroup) {
|
|
9184
|
+
return;
|
|
9185
|
+
}
|
|
9186
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos, 1, String.fromCharCode(ch));
|
|
9187
|
+
pos++;
|
|
9188
|
+
isPreviousTermQuantifiable = true;
|
|
9189
|
+
break;
|
|
9190
|
+
case 47 /* slash */:
|
|
9191
|
+
case 124 /* bar */:
|
|
9192
|
+
return;
|
|
9193
|
+
default:
|
|
9194
|
+
if (isLineBreak(ch)) {
|
|
9195
|
+
return;
|
|
9196
|
+
}
|
|
9197
|
+
scanSourceCharacter();
|
|
9198
|
+
isPreviousTermQuantifiable = true;
|
|
9199
|
+
break;
|
|
9200
|
+
}
|
|
9201
|
+
}
|
|
9202
|
+
}
|
|
9203
|
+
function scanPatternModifiers(currFlags = 0 /* None */) {
|
|
9204
|
+
while (pos < end2) {
|
|
9205
|
+
const ch = text2.charCodeAt(pos);
|
|
9206
|
+
if (!isIdentifierPart(ch, languageVersion)) {
|
|
9207
|
+
break;
|
|
9208
|
+
}
|
|
9209
|
+
const flag = characterToRegularExpressionFlag(String.fromCharCode(ch));
|
|
9210
|
+
if (flag === void 0) {
|
|
9211
|
+
error(Diagnostics.Unknown_regular_expression_flag, pos, 1);
|
|
9212
|
+
} else if (currFlags & flag) {
|
|
9213
|
+
error(Diagnostics.Duplicate_regular_expression_flag, pos, 1);
|
|
9214
|
+
} else if (!(flag & 28 /* Modifiers */)) {
|
|
9215
|
+
error(Diagnostics.This_regular_expression_flag_cannot_be_toggled_within_a_subpattern, pos, 1);
|
|
9216
|
+
} else {
|
|
9217
|
+
currFlags |= flag;
|
|
9218
|
+
const availableFrom = regularExpressionFlagToFirstAvailableLanguageVersion(flag);
|
|
9219
|
+
if (languageVersion < availableFrom) {
|
|
9220
|
+
error(Diagnostics.This_regular_expression_flag_is_only_available_when_targeting_0_or_later, pos, 1, ScriptTarget[availableFrom]);
|
|
9221
|
+
}
|
|
9222
|
+
}
|
|
9223
|
+
pos++;
|
|
9224
|
+
}
|
|
9225
|
+
return currFlags;
|
|
9226
|
+
}
|
|
9227
|
+
function scanAtomEscape() {
|
|
9228
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 92 /* backslash */);
|
|
9229
|
+
switch (text2.charCodeAt(pos)) {
|
|
9230
|
+
case 107 /* k */:
|
|
9231
|
+
pos++;
|
|
9232
|
+
if (text2.charCodeAt(pos) === 60 /* lessThan */) {
|
|
9233
|
+
pos++;
|
|
9234
|
+
scanGroupName(
|
|
9235
|
+
/*isReference*/
|
|
9236
|
+
true
|
|
9237
|
+
);
|
|
9238
|
+
scanExpectedChar(62 /* greaterThan */);
|
|
9239
|
+
} else if (unicodeMode) {
|
|
9240
|
+
error(Diagnostics.k_must_be_followed_by_a_capturing_group_name_enclosed_in_angle_brackets, pos - 2, 2);
|
|
9241
|
+
}
|
|
9242
|
+
break;
|
|
9243
|
+
case 113 /* q */:
|
|
9244
|
+
if (unicodeSetsMode) {
|
|
9245
|
+
pos++;
|
|
9246
|
+
error(Diagnostics.q_is_only_available_inside_character_class, pos - 2, 2);
|
|
9247
|
+
break;
|
|
9248
|
+
}
|
|
9249
|
+
default:
|
|
9250
|
+
scanCharacterClassEscape() || scanDecimalEscape() || scanCharacterEscape();
|
|
9251
|
+
break;
|
|
9252
|
+
}
|
|
9253
|
+
}
|
|
9254
|
+
function scanDecimalEscape() {
|
|
9255
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 92 /* backslash */);
|
|
9256
|
+
const ch = text2.charCodeAt(pos);
|
|
9257
|
+
if (ch >= 49 /* _1 */ && ch <= 57 /* _9 */) {
|
|
9258
|
+
const start2 = pos;
|
|
9259
|
+
scanDigits();
|
|
9260
|
+
decimalEscapes.push({ pos: start2, end: pos, value: +tokenValue });
|
|
9261
|
+
return true;
|
|
9262
|
+
}
|
|
9263
|
+
return false;
|
|
9264
|
+
}
|
|
9265
|
+
function scanCharacterEscape() {
|
|
9266
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 92 /* backslash */);
|
|
9267
|
+
let ch = text2.charCodeAt(pos);
|
|
9268
|
+
switch (ch) {
|
|
9269
|
+
case 99 /* c */:
|
|
9270
|
+
pos++;
|
|
9271
|
+
ch = text2.charCodeAt(pos);
|
|
9272
|
+
if (isASCIILetter(ch)) {
|
|
9273
|
+
pos++;
|
|
9274
|
+
return String.fromCharCode(ch & 31);
|
|
9275
|
+
}
|
|
9276
|
+
if (unicodeMode) {
|
|
9277
|
+
error(Diagnostics.c_must_be_followed_by_an_ASCII_letter, pos - 2, 2);
|
|
9278
|
+
}
|
|
9279
|
+
return String.fromCharCode(ch);
|
|
9280
|
+
case 94 /* caret */:
|
|
9281
|
+
case 36 /* $ */:
|
|
9282
|
+
case 47 /* slash */:
|
|
9283
|
+
case 92 /* backslash */:
|
|
9284
|
+
case 46 /* dot */:
|
|
9285
|
+
case 42 /* asterisk */:
|
|
9286
|
+
case 43 /* plus */:
|
|
9287
|
+
case 63 /* question */:
|
|
9288
|
+
case 40 /* openParen */:
|
|
9289
|
+
case 41 /* closeParen */:
|
|
9290
|
+
case 91 /* openBracket */:
|
|
9291
|
+
case 93 /* closeBracket */:
|
|
9292
|
+
case 123 /* openBrace */:
|
|
9293
|
+
case 125 /* closeBrace */:
|
|
9294
|
+
case 124 /* bar */:
|
|
9295
|
+
pos++;
|
|
9296
|
+
return String.fromCharCode(ch);
|
|
9297
|
+
default:
|
|
9298
|
+
if (pos >= end2 || isLineBreak(ch)) {
|
|
9299
|
+
error(Diagnostics.Undetermined_character_escape, pos - 1, 1, ch);
|
|
9300
|
+
return "\\";
|
|
9301
|
+
}
|
|
9302
|
+
pos--;
|
|
9303
|
+
return scanEscapeSequence(
|
|
9304
|
+
/*shouldEmitInvalidEscapeError*/
|
|
9305
|
+
unicodeMode,
|
|
9306
|
+
/*isRegularExpression*/
|
|
9307
|
+
true
|
|
9308
|
+
);
|
|
9309
|
+
}
|
|
9310
|
+
}
|
|
9311
|
+
function scanGroupName(isReference) {
|
|
9312
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 60 /* lessThan */);
|
|
9313
|
+
tokenStart = pos;
|
|
9314
|
+
scanIdentifier(codePointAt(text2, pos), languageVersion);
|
|
9315
|
+
if (pos === tokenStart) {
|
|
9316
|
+
error(Diagnostics.Expected_a_capturing_group_name);
|
|
9317
|
+
} else if (isReference) {
|
|
9318
|
+
groupNameReferences.push({ pos: tokenStart, end: pos, name: tokenValue });
|
|
9319
|
+
} else if (namedCapturingGroups.some((group2) => group2.has(tokenValue))) {
|
|
9320
|
+
error(Diagnostics.Named_capturing_groups_with_the_same_name_must_be_mutually_exclusive_to_each_other, tokenStart, pos - tokenStart);
|
|
9321
|
+
} else {
|
|
9322
|
+
last(namedCapturingGroups).add(tokenValue);
|
|
9323
|
+
groupSpecifiers.add(tokenValue);
|
|
9324
|
+
}
|
|
9325
|
+
}
|
|
9326
|
+
function isClassContentExit(ch) {
|
|
9327
|
+
return ch === 93 /* closeBracket */ || pos >= end2 || isLineBreak(ch);
|
|
9328
|
+
}
|
|
9329
|
+
function scanClassRanges() {
|
|
9330
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 91 /* openBracket */);
|
|
9331
|
+
if (text2.charCodeAt(pos) === 94 /* caret */) {
|
|
9332
|
+
pos++;
|
|
9333
|
+
}
|
|
9334
|
+
while (pos < end2) {
|
|
9335
|
+
const ch = text2.charCodeAt(pos);
|
|
9336
|
+
if (isClassContentExit(ch)) {
|
|
9337
|
+
return;
|
|
9338
|
+
}
|
|
9339
|
+
const minStart = pos;
|
|
9340
|
+
const minCharacter = scanClassAtom();
|
|
9341
|
+
if (text2.charCodeAt(pos) === 45 /* minus */) {
|
|
9342
|
+
pos++;
|
|
9343
|
+
const ch2 = text2.charCodeAt(pos);
|
|
9344
|
+
if (isClassContentExit(ch2)) {
|
|
9345
|
+
return;
|
|
9346
|
+
}
|
|
9347
|
+
if (!minCharacter) {
|
|
9348
|
+
error(Diagnostics.A_character_class_range_must_not_be_bounded_by_another_character_class, minStart, pos - 1 - minStart);
|
|
9349
|
+
}
|
|
9350
|
+
const maxStart = pos;
|
|
9351
|
+
const maxCharacter = scanClassAtom();
|
|
9352
|
+
if (!maxCharacter) {
|
|
9353
|
+
error(Diagnostics.A_character_class_range_must_not_be_bounded_by_another_character_class, maxStart, pos - maxStart);
|
|
9354
|
+
continue;
|
|
9355
|
+
}
|
|
9356
|
+
if (!minCharacter) {
|
|
9357
|
+
continue;
|
|
9358
|
+
}
|
|
9359
|
+
const minCharacterValue = codePointAt(minCharacter, 0);
|
|
9360
|
+
const maxCharacterValue = codePointAt(maxCharacter, 0);
|
|
9361
|
+
if (minCharacter.length === charSize(minCharacterValue) && maxCharacter.length === charSize(maxCharacterValue) && minCharacterValue > maxCharacterValue) {
|
|
9362
|
+
error(Diagnostics.Range_out_of_order_in_character_class, minStart, pos - minStart);
|
|
9363
|
+
}
|
|
9364
|
+
}
|
|
9365
|
+
}
|
|
9366
|
+
}
|
|
9367
|
+
function scanClassSetExpression() {
|
|
9368
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 91 /* openBracket */);
|
|
9369
|
+
let isCharacterComplement = false;
|
|
9370
|
+
if (text2.charCodeAt(pos) === 94 /* caret */) {
|
|
9371
|
+
pos++;
|
|
9372
|
+
isCharacterComplement = true;
|
|
9373
|
+
}
|
|
9374
|
+
let expressionMayContainStrings = false;
|
|
9375
|
+
let ch = text2.charCodeAt(pos);
|
|
9376
|
+
if (isClassContentExit(ch)) {
|
|
9377
|
+
return;
|
|
9378
|
+
}
|
|
9379
|
+
let start2 = pos;
|
|
9380
|
+
let oprand;
|
|
9381
|
+
switch (text2.slice(pos, pos + 2)) {
|
|
9382
|
+
case "--":
|
|
9383
|
+
case "&&":
|
|
9384
|
+
error(Diagnostics.Expected_a_class_set_oprand);
|
|
9385
|
+
mayContainStrings = false;
|
|
9386
|
+
break;
|
|
9387
|
+
default:
|
|
9388
|
+
oprand = scanClassSetOprand();
|
|
9389
|
+
break;
|
|
9390
|
+
}
|
|
9391
|
+
switch (text2.charCodeAt(pos)) {
|
|
9392
|
+
case 45 /* minus */:
|
|
9393
|
+
if (text2.charCodeAt(pos + 1) === 45 /* minus */) {
|
|
9394
|
+
if (isCharacterComplement && mayContainStrings) {
|
|
9395
|
+
error(Diagnostics.Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class, start2, pos - start2);
|
|
9396
|
+
}
|
|
9397
|
+
expressionMayContainStrings = mayContainStrings;
|
|
9398
|
+
scanClassSetSubExpression(3 /* ClassSubtraction */);
|
|
9399
|
+
mayContainStrings = !isCharacterComplement && expressionMayContainStrings;
|
|
9400
|
+
return;
|
|
9401
|
+
}
|
|
9402
|
+
break;
|
|
9403
|
+
case 38 /* ampersand */:
|
|
9404
|
+
if (text2.charCodeAt(pos + 1) === 38 /* ampersand */) {
|
|
9405
|
+
scanClassSetSubExpression(2 /* ClassIntersection */);
|
|
9406
|
+
if (isCharacterComplement && mayContainStrings) {
|
|
9407
|
+
error(Diagnostics.Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class, start2, pos - start2);
|
|
9408
|
+
}
|
|
9409
|
+
expressionMayContainStrings = mayContainStrings;
|
|
9410
|
+
mayContainStrings = !isCharacterComplement && expressionMayContainStrings;
|
|
9411
|
+
return;
|
|
9412
|
+
} else {
|
|
9413
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos, 1, String.fromCharCode(ch));
|
|
9414
|
+
}
|
|
9415
|
+
break;
|
|
9416
|
+
default:
|
|
9417
|
+
if (isCharacterComplement && mayContainStrings) {
|
|
9418
|
+
error(Diagnostics.Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class, start2, pos - start2);
|
|
9419
|
+
}
|
|
9420
|
+
expressionMayContainStrings = mayContainStrings;
|
|
9421
|
+
break;
|
|
9422
|
+
}
|
|
9423
|
+
while (pos < end2) {
|
|
9424
|
+
ch = text2.charCodeAt(pos);
|
|
9425
|
+
switch (ch) {
|
|
9426
|
+
case 45 /* minus */:
|
|
9427
|
+
pos++;
|
|
9428
|
+
ch = text2.charCodeAt(pos);
|
|
9429
|
+
if (isClassContentExit(ch)) {
|
|
9430
|
+
mayContainStrings = !isCharacterComplement && expressionMayContainStrings;
|
|
9431
|
+
return;
|
|
9432
|
+
}
|
|
9433
|
+
if (ch === 45 /* minus */) {
|
|
9434
|
+
pos++;
|
|
9435
|
+
error(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos - 2, 2);
|
|
9436
|
+
start2 = pos - 2;
|
|
9437
|
+
oprand = text2.slice(start2, pos);
|
|
9438
|
+
continue;
|
|
9439
|
+
} else {
|
|
9440
|
+
if (!oprand) {
|
|
9441
|
+
error(Diagnostics.A_character_class_range_must_not_be_bounded_by_another_character_class, start2, pos - 1 - start2);
|
|
9442
|
+
}
|
|
9443
|
+
const secondStart = pos;
|
|
9444
|
+
const secondOprand = scanClassSetOprand();
|
|
9445
|
+
if (isCharacterComplement && mayContainStrings) {
|
|
9446
|
+
error(Diagnostics.Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class, secondStart, pos - secondStart);
|
|
9447
|
+
}
|
|
9448
|
+
expressionMayContainStrings || (expressionMayContainStrings = mayContainStrings);
|
|
9449
|
+
if (!secondOprand) {
|
|
9450
|
+
error(Diagnostics.A_character_class_range_must_not_be_bounded_by_another_character_class, secondStart, pos - secondStart);
|
|
9451
|
+
break;
|
|
9452
|
+
}
|
|
9453
|
+
if (!oprand) {
|
|
9454
|
+
break;
|
|
9455
|
+
}
|
|
9456
|
+
const minCharacterValue = codePointAt(oprand, 0);
|
|
9457
|
+
const maxCharacterValue = codePointAt(secondOprand, 0);
|
|
9458
|
+
if (oprand.length === charSize(minCharacterValue) && secondOprand.length === charSize(maxCharacterValue) && minCharacterValue > maxCharacterValue) {
|
|
9459
|
+
error(Diagnostics.Range_out_of_order_in_character_class, start2, pos - start2);
|
|
9460
|
+
}
|
|
9461
|
+
}
|
|
9462
|
+
break;
|
|
9463
|
+
case 38 /* ampersand */:
|
|
9464
|
+
start2 = pos;
|
|
9465
|
+
pos++;
|
|
9466
|
+
if (text2.charCodeAt(pos) === 38 /* ampersand */) {
|
|
9467
|
+
pos++;
|
|
9468
|
+
error(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos - 2, 2);
|
|
9469
|
+
if (text2.charCodeAt(pos) === 38 /* ampersand */) {
|
|
9470
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos, 1, String.fromCharCode(ch));
|
|
9471
|
+
pos++;
|
|
9472
|
+
}
|
|
9473
|
+
} else {
|
|
9474
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos - 1, 1, String.fromCharCode(ch));
|
|
9475
|
+
}
|
|
9476
|
+
oprand = text2.slice(start2, pos);
|
|
9477
|
+
continue;
|
|
9478
|
+
}
|
|
9479
|
+
if (isClassContentExit(text2.charCodeAt(pos))) {
|
|
9480
|
+
break;
|
|
9481
|
+
}
|
|
9482
|
+
start2 = pos;
|
|
9483
|
+
switch (text2.slice(pos, pos + 2)) {
|
|
9484
|
+
case "--":
|
|
9485
|
+
case "&&":
|
|
9486
|
+
error(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos, 2);
|
|
9487
|
+
pos += 2;
|
|
9488
|
+
oprand = text2.slice(start2, pos);
|
|
9489
|
+
break;
|
|
9490
|
+
default:
|
|
9491
|
+
oprand = scanClassSetOprand();
|
|
9492
|
+
break;
|
|
9493
|
+
}
|
|
9494
|
+
}
|
|
9495
|
+
mayContainStrings = !isCharacterComplement && expressionMayContainStrings;
|
|
9496
|
+
}
|
|
9497
|
+
function scanClassSetSubExpression(expressionType) {
|
|
9498
|
+
let expressionMayContainStrings = mayContainStrings;
|
|
9499
|
+
while (pos < end2) {
|
|
9500
|
+
let ch = text2.charCodeAt(pos);
|
|
9501
|
+
if (isClassContentExit(ch)) {
|
|
9502
|
+
break;
|
|
9503
|
+
}
|
|
9504
|
+
switch (ch) {
|
|
9505
|
+
case 45 /* minus */:
|
|
9506
|
+
pos++;
|
|
9507
|
+
if (text2.charCodeAt(pos) === 45 /* minus */) {
|
|
9508
|
+
pos++;
|
|
9509
|
+
if (expressionType !== 3 /* ClassSubtraction */) {
|
|
9510
|
+
error(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos - 2, 2);
|
|
9511
|
+
}
|
|
9512
|
+
} else {
|
|
9513
|
+
error(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos - 1, 1);
|
|
9514
|
+
}
|
|
9515
|
+
break;
|
|
9516
|
+
case 38 /* ampersand */:
|
|
9517
|
+
pos++;
|
|
9518
|
+
if (text2.charCodeAt(pos) === 38 /* ampersand */) {
|
|
9519
|
+
pos++;
|
|
9520
|
+
if (expressionType !== 2 /* ClassIntersection */) {
|
|
9521
|
+
error(Diagnostics.Operators_must_not_be_mixed_within_a_character_class_Wrap_it_in_a_nested_class_instead, pos - 2, 2);
|
|
9522
|
+
}
|
|
9523
|
+
if (text2.charCodeAt(pos) === 38 /* ampersand */) {
|
|
9524
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos, 1, String.fromCharCode(ch));
|
|
9525
|
+
pos++;
|
|
9526
|
+
}
|
|
9527
|
+
} else {
|
|
9528
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos - 1, 1, String.fromCharCode(ch));
|
|
9529
|
+
}
|
|
9530
|
+
break;
|
|
9531
|
+
default:
|
|
9532
|
+
switch (expressionType) {
|
|
9533
|
+
case 3 /* ClassSubtraction */:
|
|
9534
|
+
error(Diagnostics._0_expected, pos, 0, "--");
|
|
9535
|
+
break;
|
|
9536
|
+
case 2 /* ClassIntersection */:
|
|
9537
|
+
error(Diagnostics._0_expected, pos, 0, "&&");
|
|
9538
|
+
break;
|
|
9539
|
+
default:
|
|
9540
|
+
break;
|
|
9541
|
+
}
|
|
9542
|
+
break;
|
|
9543
|
+
}
|
|
9544
|
+
ch = text2.charCodeAt(pos);
|
|
9545
|
+
if (isClassContentExit(ch)) {
|
|
9546
|
+
error(Diagnostics.Expected_a_class_set_oprand);
|
|
9547
|
+
break;
|
|
9548
|
+
}
|
|
9549
|
+
scanClassSetOprand();
|
|
9550
|
+
expressionMayContainStrings && (expressionMayContainStrings = mayContainStrings);
|
|
9551
|
+
}
|
|
9552
|
+
mayContainStrings = expressionMayContainStrings;
|
|
9553
|
+
}
|
|
9554
|
+
function scanClassSetOprand() {
|
|
9555
|
+
mayContainStrings = false;
|
|
9556
|
+
switch (text2.charCodeAt(pos)) {
|
|
9557
|
+
case 91 /* openBracket */:
|
|
9558
|
+
pos++;
|
|
9559
|
+
scanClassSetExpression();
|
|
9560
|
+
scanExpectedChar(93 /* closeBracket */);
|
|
9561
|
+
return "";
|
|
9562
|
+
case 92 /* backslash */:
|
|
9563
|
+
pos++;
|
|
9564
|
+
if (scanCharacterClassEscape()) {
|
|
9565
|
+
return "";
|
|
9566
|
+
} else if (text2.charCodeAt(pos) === 113 /* q */) {
|
|
9567
|
+
pos++;
|
|
9568
|
+
if (text2.charCodeAt(pos) === 123 /* openBrace */) {
|
|
9569
|
+
pos++;
|
|
9570
|
+
scanClassStringDisjunctionContents();
|
|
9571
|
+
scanExpectedChar(125 /* closeBrace */);
|
|
9572
|
+
return "";
|
|
9573
|
+
} else {
|
|
9574
|
+
error(Diagnostics.q_must_be_followed_by_string_alternatives_enclosed_in_braces, pos - 2, 2);
|
|
9575
|
+
return "q";
|
|
9576
|
+
}
|
|
9577
|
+
}
|
|
9578
|
+
pos--;
|
|
9579
|
+
default:
|
|
9580
|
+
return scanClassSetCharacter();
|
|
9581
|
+
}
|
|
9582
|
+
}
|
|
9583
|
+
function scanClassStringDisjunctionContents() {
|
|
9584
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 123 /* openBrace */);
|
|
9585
|
+
let characterCount = 0;
|
|
9586
|
+
while (pos < end2) {
|
|
9587
|
+
const ch = text2.charCodeAt(pos);
|
|
9588
|
+
switch (ch) {
|
|
9589
|
+
case 125 /* closeBrace */:
|
|
9590
|
+
if (characterCount !== 1) {
|
|
9591
|
+
mayContainStrings = true;
|
|
9592
|
+
}
|
|
9593
|
+
return;
|
|
9594
|
+
case 124 /* bar */:
|
|
9595
|
+
if (characterCount !== 1) {
|
|
9596
|
+
mayContainStrings = true;
|
|
9597
|
+
}
|
|
9598
|
+
pos++;
|
|
9599
|
+
start = pos;
|
|
9600
|
+
characterCount = 0;
|
|
9601
|
+
break;
|
|
9602
|
+
default:
|
|
9603
|
+
if (isLineBreak(ch)) {
|
|
9604
|
+
break;
|
|
9605
|
+
}
|
|
9606
|
+
scanClassSetCharacter();
|
|
9607
|
+
characterCount++;
|
|
9608
|
+
break;
|
|
9609
|
+
}
|
|
9610
|
+
}
|
|
9611
|
+
}
|
|
9612
|
+
function scanClassSetCharacter() {
|
|
9613
|
+
const ch = text2.charCodeAt(pos);
|
|
9614
|
+
if (ch === 92 /* backslash */) {
|
|
9615
|
+
pos++;
|
|
9616
|
+
const ch2 = text2.charCodeAt(pos);
|
|
9617
|
+
switch (ch2) {
|
|
9618
|
+
case 98 /* b */:
|
|
9619
|
+
pos++;
|
|
9620
|
+
return "\b";
|
|
9621
|
+
case 38 /* ampersand */:
|
|
9622
|
+
case 45 /* minus */:
|
|
9623
|
+
case 33 /* exclamation */:
|
|
9624
|
+
case 35 /* hash */:
|
|
9625
|
+
case 37 /* percent */:
|
|
9626
|
+
case 44 /* comma */:
|
|
9627
|
+
case 58 /* colon */:
|
|
9628
|
+
case 59 /* semicolon */:
|
|
9629
|
+
case 60 /* lessThan */:
|
|
9630
|
+
case 61 /* equals */:
|
|
9631
|
+
case 62 /* greaterThan */:
|
|
9632
|
+
case 64 /* at */:
|
|
9633
|
+
case 96 /* backtick */:
|
|
9634
|
+
case 126 /* tilde */:
|
|
9635
|
+
pos++;
|
|
9636
|
+
return String.fromCharCode(ch2);
|
|
9637
|
+
default:
|
|
9638
|
+
return scanCharacterEscape();
|
|
9639
|
+
}
|
|
9640
|
+
} else if (ch === text2.charCodeAt(pos + 1)) {
|
|
9641
|
+
switch (ch) {
|
|
9642
|
+
case 38 /* ampersand */:
|
|
9643
|
+
case 33 /* exclamation */:
|
|
9644
|
+
case 35 /* hash */:
|
|
9645
|
+
case 37 /* percent */:
|
|
9646
|
+
case 42 /* asterisk */:
|
|
9647
|
+
case 43 /* plus */:
|
|
9648
|
+
case 44 /* comma */:
|
|
9649
|
+
case 46 /* dot */:
|
|
9650
|
+
case 58 /* colon */:
|
|
9651
|
+
case 59 /* semicolon */:
|
|
9652
|
+
case 60 /* lessThan */:
|
|
9653
|
+
case 61 /* equals */:
|
|
9654
|
+
case 62 /* greaterThan */:
|
|
9655
|
+
case 63 /* question */:
|
|
9656
|
+
case 64 /* at */:
|
|
9657
|
+
case 96 /* backtick */:
|
|
9658
|
+
case 126 /* tilde */:
|
|
9659
|
+
error(Diagnostics.A_character_class_must_not_contain_a_reserved_double_punctuator_Did_you_mean_to_escape_it_with_backslash, pos, 2);
|
|
9660
|
+
pos += 2;
|
|
9661
|
+
return text2.substring(pos - 2, pos);
|
|
9662
|
+
}
|
|
9663
|
+
}
|
|
9664
|
+
switch (ch) {
|
|
9665
|
+
case 47 /* slash */:
|
|
9666
|
+
case 40 /* openParen */:
|
|
9667
|
+
case 41 /* closeParen */:
|
|
9668
|
+
case 91 /* openBracket */:
|
|
9669
|
+
case 93 /* closeBracket */:
|
|
9670
|
+
case 123 /* openBrace */:
|
|
9671
|
+
case 125 /* closeBrace */:
|
|
9672
|
+
case 45 /* minus */:
|
|
9673
|
+
case 124 /* bar */:
|
|
9674
|
+
error(Diagnostics.Unexpected_0_Did_you_mean_to_escape_it_with_backslash, pos, 1, String.fromCharCode(ch));
|
|
9675
|
+
pos++;
|
|
9676
|
+
return String.fromCharCode(ch);
|
|
9677
|
+
}
|
|
9678
|
+
return scanSourceCharacter();
|
|
9679
|
+
}
|
|
9680
|
+
function scanClassAtom() {
|
|
9681
|
+
if (text2.charCodeAt(pos) === 92 /* backslash */) {
|
|
9682
|
+
pos++;
|
|
9683
|
+
const ch = text2.charCodeAt(pos);
|
|
9684
|
+
switch (ch) {
|
|
9685
|
+
case 98 /* b */:
|
|
9686
|
+
pos++;
|
|
9687
|
+
return "\b";
|
|
9688
|
+
case 45 /* minus */:
|
|
9689
|
+
pos++;
|
|
9690
|
+
return String.fromCharCode(ch);
|
|
9691
|
+
default:
|
|
9692
|
+
if (scanCharacterClassEscape()) {
|
|
9693
|
+
return "";
|
|
9694
|
+
}
|
|
9695
|
+
return scanCharacterEscape();
|
|
9696
|
+
}
|
|
9697
|
+
} else {
|
|
9698
|
+
return scanSourceCharacter();
|
|
9699
|
+
}
|
|
9700
|
+
}
|
|
9701
|
+
function scanCharacterClassEscape() {
|
|
9702
|
+
Debug.assertEqual(text2.charCodeAt(pos - 1), 92 /* backslash */);
|
|
9703
|
+
let isCharacterComplement = false;
|
|
9704
|
+
const start2 = pos - 1;
|
|
9705
|
+
const ch = text2.charCodeAt(pos);
|
|
9706
|
+
switch (ch) {
|
|
9707
|
+
case 100 /* d */:
|
|
9708
|
+
case 68 /* D */:
|
|
9709
|
+
case 115 /* s */:
|
|
9710
|
+
case 83 /* S */:
|
|
9711
|
+
case 119 /* w */:
|
|
9712
|
+
case 87 /* W */:
|
|
9713
|
+
pos++;
|
|
9714
|
+
return true;
|
|
9715
|
+
case 80 /* P */:
|
|
9716
|
+
isCharacterComplement = true;
|
|
9717
|
+
case 112 /* p */:
|
|
9718
|
+
pos++;
|
|
9719
|
+
if (text2.charCodeAt(pos) === 123 /* openBrace */) {
|
|
9720
|
+
pos++;
|
|
9721
|
+
const propertyNameOrValueStart = pos;
|
|
9722
|
+
const propertyNameOrValue = scanWordCharacters();
|
|
9723
|
+
if (text2.charCodeAt(pos) === 61 /* equals */) {
|
|
9724
|
+
const propertyName = nonBinaryUnicodeProperties.get(propertyNameOrValue);
|
|
9725
|
+
if (pos === propertyNameOrValueStart) {
|
|
9726
|
+
error(Diagnostics.Expected_a_Unicode_property_name);
|
|
9727
|
+
} else if (propertyName === void 0) {
|
|
9728
|
+
error(Diagnostics.Unknown_Unicode_property_name, propertyNameOrValueStart, pos - propertyNameOrValueStart);
|
|
9729
|
+
const suggestion = getSpellingSuggestion(propertyNameOrValue, nonBinaryUnicodeProperties.keys(), identity);
|
|
9730
|
+
if (suggestion) {
|
|
9731
|
+
error(Diagnostics.Did_you_mean_0, propertyNameOrValueStart, pos - propertyNameOrValueStart, suggestion);
|
|
9732
|
+
}
|
|
9733
|
+
}
|
|
9734
|
+
pos++;
|
|
9735
|
+
const propertyValueStart = pos;
|
|
9736
|
+
const propertyValue = scanWordCharacters();
|
|
9737
|
+
if (pos === propertyValueStart) {
|
|
9738
|
+
error(Diagnostics.Expected_a_Unicode_property_value);
|
|
9739
|
+
} else if (propertyName !== void 0 && !valuesOfNonBinaryUnicodeProperties[propertyName].has(propertyValue)) {
|
|
9740
|
+
error(Diagnostics.Unknown_Unicode_property_value, propertyValueStart, pos - propertyValueStart);
|
|
9741
|
+
const suggestion = getSpellingSuggestion(propertyValue, valuesOfNonBinaryUnicodeProperties[propertyName], identity);
|
|
9742
|
+
if (suggestion) {
|
|
9743
|
+
error(Diagnostics.Did_you_mean_0, propertyValueStart, pos - propertyValueStart, suggestion);
|
|
9744
|
+
}
|
|
9745
|
+
}
|
|
9746
|
+
} else {
|
|
9747
|
+
if (pos === propertyNameOrValueStart) {
|
|
9748
|
+
error(Diagnostics.Expected_a_Unicode_property_name_or_value);
|
|
9749
|
+
} else if (binaryUnicodePropertiesOfStrings.has(propertyNameOrValue)) {
|
|
9750
|
+
if (!unicodeSetsMode) {
|
|
9751
|
+
error(Diagnostics.Any_Unicode_property_that_would_possibly_match_more_than_a_single_character_is_only_available_when_the_Unicode_Sets_v_flag_is_set, propertyNameOrValueStart, pos - propertyNameOrValueStart);
|
|
9752
|
+
} else if (isCharacterComplement) {
|
|
9753
|
+
error(Diagnostics.Anything_that_would_possibly_match_more_than_a_single_character_is_invalid_inside_a_negated_character_class, propertyNameOrValueStart, pos - propertyNameOrValueStart);
|
|
9754
|
+
} else {
|
|
9755
|
+
mayContainStrings = true;
|
|
9756
|
+
}
|
|
9757
|
+
} else if (!valuesOfNonBinaryUnicodeProperties.General_Category.has(propertyNameOrValue) && !binaryUnicodeProperties.has(propertyNameOrValue)) {
|
|
9758
|
+
error(Diagnostics.Unknown_Unicode_property_name_or_value, propertyNameOrValueStart, pos - propertyNameOrValueStart);
|
|
9759
|
+
const suggestion = getSpellingSuggestion(propertyNameOrValue, [...valuesOfNonBinaryUnicodeProperties.General_Category, ...binaryUnicodeProperties, ...binaryUnicodePropertiesOfStrings], identity);
|
|
9760
|
+
if (suggestion) {
|
|
9761
|
+
error(Diagnostics.Did_you_mean_0, propertyNameOrValueStart, pos - propertyNameOrValueStart, suggestion);
|
|
9762
|
+
}
|
|
9763
|
+
}
|
|
9764
|
+
}
|
|
9765
|
+
scanExpectedChar(125 /* closeBrace */);
|
|
9766
|
+
if (!unicodeMode) {
|
|
9767
|
+
error(Diagnostics.Unicode_property_value_expressions_are_only_available_when_the_Unicode_u_flag_or_the_Unicode_Sets_v_flag_is_set, start2, pos - start2);
|
|
9768
|
+
}
|
|
9769
|
+
} else if (unicodeMode) {
|
|
9770
|
+
error(Diagnostics._0_must_be_followed_by_a_Unicode_property_value_expression_enclosed_in_braces, pos - 2, 2, String.fromCharCode(ch));
|
|
9771
|
+
}
|
|
9772
|
+
return true;
|
|
9773
|
+
}
|
|
9774
|
+
return false;
|
|
9775
|
+
}
|
|
9776
|
+
function scanWordCharacters() {
|
|
9777
|
+
let value = "";
|
|
9778
|
+
while (pos < end2) {
|
|
9779
|
+
const ch = text2.charCodeAt(pos);
|
|
9780
|
+
if (!isWordCharacter(ch)) {
|
|
9781
|
+
break;
|
|
9782
|
+
}
|
|
9783
|
+
value += String.fromCharCode(ch);
|
|
9784
|
+
pos++;
|
|
9785
|
+
}
|
|
9786
|
+
return value;
|
|
9787
|
+
}
|
|
9788
|
+
function scanSourceCharacter() {
|
|
9789
|
+
const size = unicodeMode ? charSize(codePointAt(text2, pos)) : 1;
|
|
9790
|
+
pos += size;
|
|
9791
|
+
return text2.substring(pos - size, pos);
|
|
9792
|
+
}
|
|
9793
|
+
function scanExpectedChar(ch) {
|
|
9794
|
+
if (text2.charCodeAt(pos) === ch) {
|
|
9795
|
+
pos++;
|
|
9796
|
+
} else {
|
|
9797
|
+
error(Diagnostics._0_expected, pos, 0, String.fromCharCode(ch));
|
|
9798
|
+
}
|
|
9799
|
+
}
|
|
9800
|
+
scanDisjunction(
|
|
9801
|
+
/*isInGroup*/
|
|
9802
|
+
false
|
|
9803
|
+
);
|
|
9804
|
+
forEach(groupNameReferences, (reference) => {
|
|
9805
|
+
if (!groupSpecifiers.has(reference.name)) {
|
|
9806
|
+
error(Diagnostics.There_is_no_capturing_group_named_0_in_this_regular_expression, reference.pos, reference.end - reference.pos, reference.name);
|
|
9807
|
+
}
|
|
9808
|
+
});
|
|
9809
|
+
forEach(decimalEscapes, (escape) => {
|
|
9810
|
+
if (escape.value > numberOfCapturingGroups) {
|
|
9811
|
+
if (numberOfCapturingGroups) {
|
|
9812
|
+
error(Diagnostics.A_decimal_escape_must_refer_to_an_existent_capturing_group_There_are_only_0_capturing_groups_in_this_regular_expression, escape.pos, escape.end - escape.pos, numberOfCapturingGroups);
|
|
9813
|
+
} else {
|
|
9814
|
+
error(Diagnostics.Decimal_escapes_are_invalid_when_there_are_no_capturing_groups_in_a_regular_expression, escape.pos, escape.end - escape.pos);
|
|
9815
|
+
}
|
|
9816
|
+
}
|
|
9817
|
+
});
|
|
9818
|
+
}
|
|
8926
9819
|
}
|
|
8927
9820
|
function appendIfCommentDirective(commentDirectives2, text2, commentDirectiveRegEx, lineStart) {
|
|
8928
9821
|
const type = getDirectiveFromComment(text2.trimStart(), commentDirectiveRegEx);
|
|
@@ -9145,8 +10038,6 @@ function createScanner(languageVersion, skipTrivia2, languageVariant = 0 /* Stan
|
|
|
9145
10038
|
pos--;
|
|
9146
10039
|
const extendedCookedChar = peekExtendedUnicodeEscape();
|
|
9147
10040
|
if (extendedCookedChar >= 0 && isIdentifierStart(extendedCookedChar, languageVersion)) {
|
|
9148
|
-
pos += 3;
|
|
9149
|
-
tokenFlags |= 8 /* ExtendedUnicodeEscape */;
|
|
9150
10041
|
tokenValue = scanExtendedUnicodeEscape() + scanIdentifierParts();
|
|
9151
10042
|
return token = getIdentifierToken();
|
|
9152
10043
|
}
|
|
@@ -9281,6 +10172,22 @@ var utf16EncodeAsStringWorker = String.fromCodePoint ? (codePoint) => String.fro
|
|
|
9281
10172
|
function utf16EncodeAsString(codePoint) {
|
|
9282
10173
|
return utf16EncodeAsStringWorker(codePoint);
|
|
9283
10174
|
}
|
|
10175
|
+
var nonBinaryUnicodeProperties = new Map(Object.entries({
|
|
10176
|
+
General_Category: "General_Category",
|
|
10177
|
+
gc: "General_Category",
|
|
10178
|
+
Script: "Script",
|
|
10179
|
+
sc: "Script",
|
|
10180
|
+
Script_Extensions: "Script_Extensions",
|
|
10181
|
+
scx: "Script_Extensions"
|
|
10182
|
+
}));
|
|
10183
|
+
var binaryUnicodeProperties = /* @__PURE__ */ new Set(["ASCII", "ASCII_Hex_Digit", "AHex", "Alphabetic", "Alpha", "Any", "Assigned", "Bidi_Control", "Bidi_C", "Bidi_Mirrored", "Bidi_M", "Case_Ignorable", "CI", "Cased", "Changes_When_Casefolded", "CWCF", "Changes_When_Casemapped", "CWCM", "Changes_When_Lowercased", "CWL", "Changes_When_NFKC_Casefolded", "CWKCF", "Changes_When_Titlecased", "CWT", "Changes_When_Uppercased", "CWU", "Dash", "Default_Ignorable_Code_Point", "DI", "Deprecated", "Dep", "Diacritic", "Dia", "Emoji", "Emoji_Component", "EComp", "Emoji_Modifier", "EMod", "Emoji_Modifier_Base", "EBase", "Emoji_Presentation", "EPres", "Extended_Pictographic", "ExtPict", "Extender", "Ext", "Grapheme_Base", "Gr_Base", "Grapheme_Extend", "Gr_Ext", "Hex_Digit", "Hex", "IDS_Binary_Operator", "IDSB", "IDS_Trinary_Operator", "IDST", "ID_Continue", "IDC", "ID_Start", "IDS", "Ideographic", "Ideo", "Join_Control", "Join_C", "Logical_Order_Exception", "LOE", "Lowercase", "Lower", "Math", "Noncharacter_Code_Point", "NChar", "Pattern_Syntax", "Pat_Syn", "Pattern_White_Space", "Pat_WS", "Quotation_Mark", "QMark", "Radical", "Regional_Indicator", "RI", "Sentence_Terminal", "STerm", "Soft_Dotted", "SD", "Terminal_Punctuation", "Term", "Unified_Ideograph", "UIdeo", "Uppercase", "Upper", "Variation_Selector", "VS", "White_Space", "space", "XID_Continue", "XIDC", "XID_Start", "XIDS"]);
|
|
10184
|
+
var binaryUnicodePropertiesOfStrings = /* @__PURE__ */ new Set(["Basic_Emoji", "Emoji_Keycap_Sequence", "RGI_Emoji_Modifier_Sequence", "RGI_Emoji_Flag_Sequence", "RGI_Emoji_Tag_Sequence", "RGI_Emoji_ZWJ_Sequence", "RGI_Emoji"]);
|
|
10185
|
+
var valuesOfNonBinaryUnicodeProperties = {
|
|
10186
|
+
General_Category: /* @__PURE__ */ new Set(["C", "Other", "Cc", "Control", "cntrl", "Cf", "Format", "Cn", "Unassigned", "Co", "Private_Use", "Cs", "Surrogate", "L", "Letter", "LC", "Cased_Letter", "Ll", "Lowercase_Letter", "Lm", "Modifier_Letter", "Lo", "Other_Letter", "Lt", "Titlecase_Letter", "Lu", "Uppercase_Letter", "M", "Mark", "Combining_Mark", "Mc", "Spacing_Mark", "Me", "Enclosing_Mark", "Mn", "Nonspacing_Mark", "N", "Number", "Nd", "Decimal_Number", "digit", "Nl", "Letter_Number", "No", "Other_Number", "P", "Punctuation", "punct", "Pc", "Connector_Punctuation", "Pd", "Dash_Punctuation", "Pe", "Close_Punctuation", "Pf", "Final_Punctuation", "Pi", "Initial_Punctuation", "Po", "Other_Punctuation", "Ps", "Open_Punctuation", "S", "Symbol", "Sc", "Currency_Symbol", "Sk", "Modifier_Symbol", "Sm", "Math_Symbol", "So", "Other_Symbol", "Z", "Separator", "Zl", "Line_Separator", "Zp", "Paragraph_Separator", "Zs", "Space_Separator"]),
|
|
10187
|
+
Script: /* @__PURE__ */ new Set(["Adlm", "Adlam", "Aghb", "Caucasian_Albanian", "Ahom", "Ahom", "Arab", "Arabic", "Armi", "Imperial_Aramaic", "Armn", "Armenian", "Avst", "Avestan", "Bali", "Balinese", "Bamu", "Bamum", "Bass", "Bassa_Vah", "Batk", "Batak", "Beng", "Bengali", "Bhks", "Bhaiksuki", "Bopo", "Bopomofo", "Brah", "Brahmi", "Brai", "Braille", "Bugi", "Buginese", "Buhd", "Buhid", "Cakm", "Chakma", "Cans", "Canadian_Aboriginal", "Cari", "Carian", "Cham", "Cham", "Cher", "Cherokee", "Chrs", "Chorasmian", "Copt", "Coptic", "Qaac", "Cpmn", "Cypro_Minoan", "Cprt", "Cypriot", "Cyrl", "Cyrillic", "Deva", "Devanagari", "Diak", "Dives_Akuru", "Dogr", "Dogra", "Dsrt", "Deseret", "Dupl", "Duployan", "Egyp", "Egyptian_Hieroglyphs", "Elba", "Elbasan", "Elym", "Elymaic", "Ethi", "Ethiopic", "Geor", "Georgian", "Glag", "Glagolitic", "Gong", "Gunjala_Gondi", "Gonm", "Masaram_Gondi", "Goth", "Gothic", "Gran", "Grantha", "Grek", "Greek", "Gujr", "Gujarati", "Guru", "Gurmukhi", "Hang", "Hangul", "Hani", "Han", "Hano", "Hanunoo", "Hatr", "Hatran", "Hebr", "Hebrew", "Hira", "Hiragana", "Hluw", "Anatolian_Hieroglyphs", "Hmng", "Pahawh_Hmong", "Hmnp", "Nyiakeng_Puachue_Hmong", "Hrkt", "Katakana_Or_Hiragana", "Hung", "Old_Hungarian", "Ital", "Old_Italic", "Java", "Javanese", "Kali", "Kayah_Li", "Kana", "Katakana", "Kawi", "Kawi", "Khar", "Kharoshthi", "Khmr", "Khmer", "Khoj", "Khojki", "Kits", "Khitan_Small_Script", "Knda", "Kannada", "Kthi", "Kaithi", "Lana", "Tai_Tham", "Laoo", "Lao", "Latn", "Latin", "Lepc", "Lepcha", "Limb", "Limbu", "Lina", "Linear_A", "Linb", "Linear_B", "Lisu", "Lisu", "Lyci", "Lycian", "Lydi", "Lydian", "Mahj", "Mahajani", "Maka", "Makasar", "Mand", "Mandaic", "Mani", "Manichaean", "Marc", "Marchen", "Medf", "Medefaidrin", "Mend", "Mende_Kikakui", "Merc", "Meroitic_Cursive", "Mero", "Meroitic_Hieroglyphs", "Mlym", "Malayalam", "Modi", "Modi", "Mong", "Mongolian", "Mroo", "Mro", "Mtei", "Meetei_Mayek", "Mult", "Multani", "Mymr", "Myanmar", "Nagm", "Nag_Mundari", "Nand", "Nandinagari", "Narb", "Old_North_Arabian", "Nbat", "Nabataean", "Newa", "Newa", "Nkoo", "Nko", "Nshu", "Nushu", "Ogam", "Ogham", "Olck", "Ol_Chiki", "Orkh", "Old_Turkic", "Orya", "Oriya", "Osge", "Osage", "Osma", "Osmanya", "Ougr", "Old_Uyghur", "Palm", "Palmyrene", "Pauc", "Pau_Cin_Hau", "Perm", "Old_Permic", "Phag", "Phags_Pa", "Phli", "Inscriptional_Pahlavi", "Phlp", "Psalter_Pahlavi", "Phnx", "Phoenician", "Plrd", "Miao", "Prti", "Inscriptional_Parthian", "Rjng", "Rejang", "Rohg", "Hanifi_Rohingya", "Runr", "Runic", "Samr", "Samaritan", "Sarb", "Old_South_Arabian", "Saur", "Saurashtra", "Sgnw", "SignWriting", "Shaw", "Shavian", "Shrd", "Sharada", "Sidd", "Siddham", "Sind", "Khudawadi", "Sinh", "Sinhala", "Sogd", "Sogdian", "Sogo", "Old_Sogdian", "Sora", "Sora_Sompeng", "Soyo", "Soyombo", "Sund", "Sundanese", "Sylo", "Syloti_Nagri", "Syrc", "Syriac", "Tagb", "Tagbanwa", "Takr", "Takri", "Tale", "Tai_Le", "Talu", "New_Tai_Lue", "Taml", "Tamil", "Tang", "Tangut", "Tavt", "Tai_Viet", "Telu", "Telugu", "Tfng", "Tifinagh", "Tglg", "Tagalog", "Thaa", "Thaana", "Thai", "Thai", "Tibt", "Tibetan", "Tirh", "Tirhuta", "Tnsa", "Tangsa", "Toto", "Toto", "Ugar", "Ugaritic", "Vaii", "Vai", "Vith", "Vithkuqi", "Wara", "Warang_Citi", "Wcho", "Wancho", "Xpeo", "Old_Persian", "Xsux", "Cuneiform", "Yezi", "Yezidi", "Yiii", "Yi", "Zanb", "Zanabazar_Square", "Zinh", "Inherited", "Qaai", "Zyyy", "Common", "Zzzz", "Unknown"]),
|
|
10188
|
+
Script_Extensions: /* @__PURE__ */ new Set()
|
|
10189
|
+
// Currently empty
|
|
10190
|
+
};
|
|
9284
10191
|
|
|
9285
10192
|
// src/compiler/utilitiesPublic.ts
|
|
9286
10193
|
function isExternalModuleNameRelative(moduleName) {
|
|
@@ -11115,7 +12022,7 @@ var objectAllocator = {
|
|
|
11115
12022
|
getSourceMapSourceConstructor: () => SourceMapSource
|
|
11116
12023
|
};
|
|
11117
12024
|
function formatStringFromArgs(text, args) {
|
|
11118
|
-
return text.replace(
|
|
12025
|
+
return text.replace(/\{(\d+)\}/g, (_match, index) => "" + Debug.checkDefined(args[+index]));
|
|
11119
12026
|
}
|
|
11120
12027
|
var localizedDiagnosticMessages;
|
|
11121
12028
|
function getLocaleSpecificMessage(message) {
|
|
@@ -18719,7 +19626,10 @@ var Parser;
|
|
|
18719
19626
|
function parseErrorAtPosition(start, length2, message, ...args) {
|
|
18720
19627
|
const lastError = lastOrUndefined(parseDiagnostics);
|
|
18721
19628
|
let result;
|
|
18722
|
-
if (
|
|
19629
|
+
if (message.category === 3 /* Message */ && lastError && start === lastError.start && length2 === lastError.length) {
|
|
19630
|
+
result = createDetachedDiagnostic(fileName, sourceText, start, length2, message, ...args);
|
|
19631
|
+
addRelatedInfo(lastError, result);
|
|
19632
|
+
} else if (!lastError || start !== lastError.start) {
|
|
18723
19633
|
result = createDetachedDiagnostic(fileName, sourceText, start, length2, message, ...args);
|
|
18724
19634
|
parseDiagnostics.push(result);
|
|
18725
19635
|
}
|
|
@@ -18730,10 +19640,10 @@ var Parser;
|
|
|
18730
19640
|
return parseErrorAtPosition(start, end - start, message, ...args);
|
|
18731
19641
|
}
|
|
18732
19642
|
function parseErrorAtRange(range, message, ...args) {
|
|
18733
|
-
parseErrorAt(range.pos, range.end, message, ...args);
|
|
19643
|
+
return parseErrorAt(range.pos, range.end, message, ...args);
|
|
18734
19644
|
}
|
|
18735
|
-
function scanError(message, length2,
|
|
18736
|
-
parseErrorAtPosition(
|
|
19645
|
+
function scanError(message, pos, length2, ...args) {
|
|
19646
|
+
return parseErrorAtPosition(pos, length2, message, ...args);
|
|
18737
19647
|
}
|
|
18738
19648
|
function getNodePos() {
|
|
18739
19649
|
return scanner.getTokenFullStart();
|
|
@@ -18875,7 +19785,7 @@ var Parser;
|
|
|
18875
19785
|
parseErrorForInvalidName(Diagnostics.Type_alias_name_cannot_be_0, Diagnostics.Type_alias_must_be_given_a_name, 64 /* EqualsToken */);
|
|
18876
19786
|
return;
|
|
18877
19787
|
}
|
|
18878
|
-
const suggestion = getSpellingSuggestion(expressionText, viableKeywordSuggestions,
|
|
19788
|
+
const suggestion = getSpellingSuggestion(expressionText, viableKeywordSuggestions, identity) ?? getSpaceSuggestion(expressionText);
|
|
18879
19789
|
if (suggestion) {
|
|
18880
19790
|
parseErrorAt(pos, node.end, Diagnostics.Unknown_keyword_or_identifier_Did_you_mean_0, suggestion);
|
|
18881
19791
|
return;
|