Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tsc/internal/diagnostics/diagnosticMessages.generated.json
Original file line number Diff line number Diff line change
Expand Up @@ -1975,6 +1975,7 @@
"This_relative_import_path_is_unsafe_to_rewrite_because_it_appears_not_to_match_the_content_mapper_s__18139": "This relative import path is unsafe to rewrite because it appears not to match the content mapper's 'include', but does after resolution with 'rootDirs' and 'moduleSuffixes'.",
"File_0_has_a_registered_content_mapper_extension_but_does_not_match_any_content_mapper_s_include_18140": "File '{0}' has a registered content mapper extension but does not match any content mapper's 'include'.",
"Content_mapper_0_must_specify_extensions_in_tsconfig_or_its_package_manifest_18141": "Content mapper '{0}' must specify 'extensions' in tsconfig or its package manifest.",
"Regular_expression_buffer_boundary_assertions_are_only_available_when_targeting_esnext_18142": "Regular expression buffer boundary assertions are only available when targeting 'esnext'.",
"nodenext_if_module_is_nodenext_node16_if_module_is_node16_or_node18_otherwise_bundler_69010": "`nodenext` if `module` is `nodenext`; `node16` if `module` is `node16` or `node18`; otherwise, `bundler`.",
"File_is_a_CommonJS_module_it_may_be_converted_to_an_ES_module_80001": "File is a CommonJS module; it may be converted to an ES module.",
"This_constructor_function_may_be_converted_to_a_class_declaration_80002": "This constructor function may be converted to a class declaration.",
Expand Down
4 changes: 4 additions & 0 deletions tsc/internal/diagnostics/diagnosticMessages.json
Original file line number Diff line number Diff line change
Expand Up @@ -9019,5 +9019,9 @@
"File '{0}' has a registered content mapper extension but does not match any content mapper's 'include'.": {
"category": "Error",
"code": 18140
},
"Regular expression buffer boundary assertions are only available when targeting 'esnext'.": {
"category": "Error",
"code": 18142
}
}
3 changes: 3 additions & 0 deletions tsc/internal/diagnostics/diagnostics_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions tsc/internal/scanner/regexp.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,9 @@ func (p *regExpParser) scanDisjunction(isInGroup bool) {
// | '(?!' Disjunction ')'
// | '(?<=' Disjunction ')'
// | '(?<!' Disjunction ')'
// | '\A'
// | '\z'
// | '\Z'
//
// Quantifier ::= QuantifierPrefix '?'?
// QuantifierPrefix ::=
Expand Down Expand Up @@ -236,6 +239,16 @@ func (p *regExpParser) scanAlternative(isInGroup bool) {
case 'b', 'B':
p.incPos(1)
isPreviousTermQuantifiable = false
case 'A', 'z', 'Z':
if p.anyUnicodeMode {
p.incPos(1)
if p.scanner.languageVersion() < core.ScriptTargetESNext {
p.error(diagnostics.Regular_expression_buffer_boundary_assertions_are_only_available_when_targeting_esnext, start, p.pos()-start)
}
isPreviousTermQuantifiable = false
break
}
fallthrough
default:
p.scanAtomEscape()
isPreviousTermQuantifiable = true
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
regularExpressionAssertions.ts(2,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(3,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(4,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(5,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(6,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(7,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(8,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(8,11): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(9,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(9,11): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(10,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(10,11): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(11,10): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(11,15): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(12,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(12,15): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(13,10): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(13,19): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(14,9): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(14,14): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(15,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(15,10): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(26,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(26,8): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(27,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(27,8): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(28,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(28,8): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(29,7): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(29,9): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(30,7): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(30,9): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(31,7): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(31,9): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(32,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(32,8): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(33,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(33,8): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(34,6): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(34,8): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(35,7): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(35,9): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(36,7): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(36,9): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(37,7): error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
regularExpressionAssertions.ts(37,9): error TS1507: There is nothing available for repetition.
regularExpressionAssertions.ts(39,7): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(40,7): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(41,7): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(42,7): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(43,7): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(44,7): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(45,8): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(46,10): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(46,13): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(46,16): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(48,6): error TS1535: This character cannot be escaped in a regular expression.
regularExpressionAssertions.ts(49,6): error TS1535: This character cannot be escaped in a regular expression.


==== regularExpressionAssertions.ts (58 errors) ====
const regexes: RegExp[] = [
/\A/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\z/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Z/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\A/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\z/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Z/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Afoo\z/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Afoo\Z/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Afoo\Z/gimsuy,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/(?m:\Afoo\z)/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Afoo|bar\z/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/(?<=\A)foo(?=\z)/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/(?:\Afoo\Z)+/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
/\Aa+\z/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.

/\A\z\Z/,
/\A*\z+\Z{1,2}?/,
/[\A\z\Z]/,
/[\A-\Z]/,

/\\A+\\z+\\Z+/u,
/[\\A\\z\\Z]/v,
/\u0041+\u007a+\u005a+/u,

/\A*/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~
!!! error TS1507: There is nothing available for repetition.
/\z+/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~
!!! error TS1507: There is nothing available for repetition.
/\Z?/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~
!!! error TS1507: There is nothing available for repetition.
/a\A{1}/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~~
!!! error TS1507: There is nothing available for repetition.
/a\z{1,}/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~~~
!!! error TS1507: There is nothing available for repetition.
/a\Z{1,2}?/u,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~~~~~
!!! error TS1507: There is nothing available for repetition.
/\A*?/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS1507: There is nothing available for repetition.
/\z+?/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS1507: There is nothing available for repetition.
/\Z??/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~
!!! error TS1507: There is nothing available for repetition.
/a\A{1}/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~~
!!! error TS1507: There is nothing available for repetition.
/a\z{1,}/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~~~
!!! error TS1507: There is nothing available for repetition.
/a\Z{1,2}/v,
~~
!!! error TS18142: Regular expression buffer boundary assertions are only available when targeting 'esnext'.
~~~~~
!!! error TS1507: There is nothing available for repetition.

/[\A]/u,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[\z]/u,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[\Z]/u,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[\A]/v,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[\z]/v,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[\Z]/v,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[[\A]&&[a]]/v,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/[\q{\A|\z|\Z}]/v,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
~~
!!! error TS1535: This character cannot be escaped in a regular expression.

/\a/u,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
/\a/v,
~~
!!! error TS1535: This character cannot be escaped in a regular expression.
];

Loading