mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-30 01:04:49 -05:00
Provide User-Friendly Message for Extended Unicode Escapes in Regular Expressions in Non-Unicode Modes (#58981)
Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
This commit is contained in:
@@ -1805,6 +1805,10 @@
|
||||
"category": "Error",
|
||||
"code": 1537
|
||||
},
|
||||
"Unicode escape sequences are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.": {
|
||||
"category": "Error",
|
||||
"code": 1538
|
||||
},
|
||||
|
||||
"The types of '{0}' are incompatible between these types.": {
|
||||
"category": "Error",
|
||||
|
||||
@@ -1006,7 +1006,7 @@ const enum EscapeSequenceScanningFlags {
|
||||
AtomEscape = 1 << 5,
|
||||
|
||||
ReportInvalidEscapeErrors = RegularExpression | ReportErrors,
|
||||
ScanExtendedUnicodeEscape = String | AnyUnicodeMode,
|
||||
AllowExtendedUnicodeEscape = String | AnyUnicodeMode,
|
||||
}
|
||||
|
||||
const enum ClassSetExpressionType {
|
||||
@@ -1609,13 +1609,17 @@ export function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean
|
||||
case CharacterCodes.doubleQuote:
|
||||
return '"';
|
||||
case CharacterCodes.u:
|
||||
if (
|
||||
flags & EscapeSequenceScanningFlags.ScanExtendedUnicodeEscape &&
|
||||
pos < end && charCodeUnchecked(pos) === CharacterCodes.openBrace
|
||||
) {
|
||||
if (pos < end && charCodeUnchecked(pos) === CharacterCodes.openBrace) {
|
||||
// '\u{DDDDDD}'
|
||||
pos -= 2;
|
||||
return scanExtendedUnicodeEscape(!!(flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors));
|
||||
const result = scanExtendedUnicodeEscape(!!(flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors));
|
||||
if (!(flags & EscapeSequenceScanningFlags.AllowExtendedUnicodeEscape)) {
|
||||
tokenFlags |= TokenFlags.ContainsInvalidEscape;
|
||||
if (flags & EscapeSequenceScanningFlags.ReportInvalidEscapeErrors) {
|
||||
error(Diagnostics.Unicode_escape_sequences_are_only_available_when_the_Unicode_u_flag_or_the_Unicode_Sets_v_flag_is_set, start, pos - start);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// '\uDDDD'
|
||||
for (; pos < start + 6; pos++) {
|
||||
|
||||
Reference in New Issue
Block a user