@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.
@@ -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.20230830`;
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 isCodePoint(code) {
7417
- return code <= 1114111;
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 >= 65 /* A */ && ch <= 90 /* Z */ || ch >= 97 /* a */ && ch <= 122 /* z */ || ch === 36 /* $ */ || ch === 95 /* _ */ || ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierStart(ch, languageVersion);
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 >= 65 /* A */ && ch <= 90 /* Z */ || ch >= 97 /* a */ && ch <= 122 /* z */ || ch >= 48 /* _0 */ && ch <= 57 /* _9 */ || ch === 36 /* $ */ || ch === 95 /* _ */ || // "-" and ":" are valid in JSX Identifiers
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, arg0) {
7801
- if (onError) {
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(shouldEmitInvalidEscapeError);
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
- const escapedValueString = scanMinimumNumberOfHexDigits(
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
- return String.fromCharCode(parseInt(text.substring(start2 + 2, pos), 16));
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
- error(Diagnostics.Hexadecimal_digit_expected);
8310
+ if (shouldEmitInvalidEscapeError) {
8311
+ error(Diagnostics.Hexadecimal_digit_expected);
8312
+ }
8239
8313
  isInvalidExtendedEscape = true;
8240
8314
  } else if (escapedValue > 1114111) {
8241
- error(Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive);
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
- error(Diagnostics.Unexpected_end_of_text);
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
- error(Diagnostics.Unterminated_Unicode_escape_sequence);
8328
+ if (shouldEmitInvalidEscapeError) {
8329
+ error(Diagnostics.Unterminated_Unicode_escape_sequence);
8330
+ }
8251
8331
  isInvalidExtendedEscape = true;
8252
8332
  }
8253
8333
  if (isInvalidExtendedEscape) {
8254
- return "";
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
- while (p < end && isIdentifierPart(text.charCodeAt(p), languageVersion)) {
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 = p;
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(/{(\d+)}/g, (_match, index) => "" + Debug.checkDefined(args[+index]));
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 (!lastError || start !== lastError.start) {
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, arg0) {
18736
- parseErrorAtPosition(scanner.getTokenEnd(), length2, message, arg0);
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, (n) => n) ?? getSpaceSuggestion(expressionText);
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;