Skip to content

Commit 2970c5d

Browse files
authoredSep 16, 2022
make RegExpExecArray always include index 0 (#50713)
* make `RegExpExecArray` always include index 0 * update baseline * remove `BaseRegExpArray` interface * add test Co-authored-by: DetachHead <detachhead@users.noreply.github.com>
1 parent 01cae69 commit 2970c5d

31 files changed

+671
-43
lines changed
 

‎src/lib/es5.d.ts

+4
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,10 @@ interface RegExpExecArray extends Array<string> {
940940
* A copy of the search string.
941941
*/
942942
input: string;
943+
/**
944+
* The first match. This will always be present because `null` will be returned if there are no matches.
945+
*/
946+
0: string;
943947
}
944948

945949
interface RegExp {

‎tests/baselines/reference/destructuringParameterDeclaration4.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration4.ts(
4141
a1(...array2); // Error parameter type is (number|string)[]
4242
~~~~~~
4343
!!! error TS2552: Cannot find name 'array2'. Did you mean 'Array'?
44-
!!! related TS2728 /.ts/lib.es5.d.ts:1490:13: 'Array' is declared here.
44+
!!! related TS2728 /.ts/lib.es5.d.ts:1494:13: 'Array' is declared here.
4545
a5([1, 2, "string", false, true]); // Error, parameter type is [any, any, [[any]]]
4646
~~~~~~~~
4747
!!! error TS2322: Type 'string' is not assignable to type '[[any]]'.

‎tests/baselines/reference/destructuringTuple.errors.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ tests/cases/compiler/destructuringTuple.ts(11,60): error TS2769: No overload mat
3333
!!! error TS2769: Overload 2 of 3, '(callbackfn: (previousValue: [], currentValue: number, currentIndex: number, array: number[]) => [], initialValue: []): []', gave the following error.
3434
!!! error TS2769: Type 'never[]' is not assignable to type '[]'.
3535
!!! error TS2769: Target allows only 0 element(s) but source may have more.
36-
!!! related TS6502 /.ts/lib.es5.d.ts:1455:24: The expected type comes from the return type of this signature.
37-
!!! related TS6502 /.ts/lib.es5.d.ts:1461:27: The expected type comes from the return type of this signature.
36+
!!! related TS6502 /.ts/lib.es5.d.ts:1459:24: The expected type comes from the return type of this signature.
37+
!!! related TS6502 /.ts/lib.es5.d.ts:1465:27: The expected type comes from the return type of this signature.
3838
~~
3939
!!! error TS2769: No overload matches this call.
4040
!!! error TS2769: Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.

‎tests/baselines/reference/duplicateNumericIndexers.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ tests/cases/conformance/types/members/duplicateNumericIndexers.ts(25,5): error T
1111
tests/cases/conformance/types/members/duplicateNumericIndexers.ts(29,5): error TS2374: Duplicate index signature for type 'number'.
1212
tests/cases/conformance/types/members/duplicateNumericIndexers.ts(30,5): error TS2374: Duplicate index signature for type 'number'.
1313
lib.es5.d.ts(517,5): error TS2374: Duplicate index signature for type 'number'.
14-
lib.es5.d.ts(1476,5): error TS2374: Duplicate index signature for type 'number'.
14+
lib.es5.d.ts(1480,5): error TS2374: Duplicate index signature for type 'number'.
1515

1616

1717
==== tests/cases/conformance/types/members/duplicateNumericIndexers.ts (12 errors) ====

‎tests/baselines/reference/mappedTypeWithAsClauseAndLateBoundProperty.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ tests/cases/compiler/mappedTypeWithAsClauseAndLateBoundProperty.ts(3,1): error T
77
tgt2 = src2; // Should error
88
~~~~
99
!!! error TS2741: Property 'length' is missing in type '{ [x: number]: number; toString: () => string; toLocaleString: () => string; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray<number>[]): number[]; (...items: (number | ConcatArray<number>)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => number[]; splice: { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }; unshift: (...items: number[]) => number; indexOf: (searchElement: number, fromIndex?: number) => number; lastIndexOf: (searchElement: number, fromIndex?: number) => number; every: { <S extends number>(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): boolean; }; some: (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => boolean; forEach: (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void; map: <U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]; filter: { <S extends number>(predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S[]; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number[]; }; reduce: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; <U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; reduceRight: { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; <U>(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; }; find: { <S extends number>(predicate: (this: void, value: number, index: number, obj: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any): number; }; findIndex: (predicate: (value: number, index: number, obj: number[]) => unknown, thisArg?: any) => number; fill: (value: number, start?: number, end?: number) => number[]; copyWithin: (target: number, start: number, end?: number) => number[]; entries: () => IterableIterator<[number, number]>; keys: () => IterableIterator<number>; values: () => IterableIterator<number>; includes: (searchElement: number, fromIndex?: number) => boolean; flatMap: <U, This = undefined>(callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[]; flat: <A, D extends number = 1>(this: A, depth?: D) => FlatArray<A, D>[]; [iterator]: () => IterableIterator<number>; [unscopables]: () => { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }' but required in type 'number[]'.
10-
!!! related TS2728 /.ts/lib.es5.d.ts:1299:5: 'length' is declared here.
10+
!!! related TS2728 /.ts/lib.es5.d.ts:1303:5: 'length' is declared here.
1111

‎tests/baselines/reference/narrowExceptionVariableInCatchClause.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ tests/cases/conformance/types/any/narrowExceptionVariableInCatchClause.ts(16,17)
2424
err.massage; // ERROR: Property 'massage' does not exist on type 'Error'
2525
~~~~~~~
2626
!!! error TS2551: Property 'massage' does not exist on type 'Error'. Did you mean 'message'?
27-
!!! related TS2728 /.ts/lib.es5.d.ts:1049:5: 'message' is declared here.
27+
!!! related TS2728 /.ts/lib.es5.d.ts:1053:5: 'message' is declared here.
2828
}
2929

3030
else {

‎tests/baselines/reference/narrowFromAnyWithInstanceof.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ tests/cases/conformance/types/any/narrowFromAnyWithInstanceof.ts(22,7): error TS
2222
x.mesage;
2323
~~~~~~
2424
!!! error TS2551: Property 'mesage' does not exist on type 'Error'. Did you mean 'message'?
25-
!!! related TS2728 /.ts/lib.es5.d.ts:1049:5: 'message' is declared here.
25+
!!! related TS2728 /.ts/lib.es5.d.ts:1053:5: 'message' is declared here.
2626
}
2727

2828
if (x instanceof Date) {

‎tests/baselines/reference/narrowFromAnyWithTypePredicate.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ tests/cases/conformance/types/any/narrowFromAnyWithTypePredicate.ts(33,7): error
4141
x.mesage;
4242
~~~~~~
4343
!!! error TS2551: Property 'mesage' does not exist on type 'Error'. Did you mean 'message'?
44-
!!! related TS2728 /.ts/lib.es5.d.ts:1049:5: 'message' is declared here.
44+
!!! related TS2728 /.ts/lib.es5.d.ts:1053:5: 'message' is declared here.
4545
}
4646

4747
if (isDate(x)) {

‎tests/baselines/reference/parserRegularExpressionDivideAmbiguity1.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ tests/cases/conformance/parser/ecmascript5/RegularExpressions/parserRegularExpre
77
/notregexp/a.foo();
88
~~~~~~~~~
99
!!! error TS2552: Cannot find name 'notregexp'. Did you mean 'RegExp'?
10-
!!! related TS2728 /.ts/lib.es5.d.ts:1045:13: 'RegExp' is declared here.
10+
!!! related TS2728 /.ts/lib.es5.d.ts:1049:13: 'RegExp' is declared here.
1111
~
1212
!!! error TS2304: Cannot find name 'a'.

‎tests/baselines/reference/parserRegularExpressionDivideAmbiguity2.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ tests/cases/conformance/parser/ecmascript5/RegularExpressions/parserRegularExpre
66
(1) /notregexp/a.foo();
77
~~~~~~~~~
88
!!! error TS2552: Cannot find name 'notregexp'. Did you mean 'RegExp'?
9-
!!! related TS2728 /.ts/lib.es5.d.ts:1045:13: 'RegExp' is declared here.
9+
!!! related TS2728 /.ts/lib.es5.d.ts:1049:13: 'RegExp' is declared here.
1010
~
1111
!!! error TS2304: Cannot find name 'a'.

‎tests/baselines/reference/parserS7.2_A1.5_T2.errors.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ tests/cases/conformance/parser/ecmascript5/parserS7.2_A1.5_T2.ts(20,3): error TS
1919
$ERROR('#1: eval("\\u00A0var x\\u00A0= 1\\u00A0"); x === 1. Actual: ' + (x));
2020
~~~~~~
2121
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
22-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
22+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
2323
}
2424

2525
//CHECK#2
@@ -28,7 +28,7 @@ tests/cases/conformance/parser/ecmascript5/parserS7.2_A1.5_T2.ts(20,3): error TS
2828
$ERROR('#2:  var x = 1 ; x === 1. Actual: ' + (x));
2929
~~~~~~
3030
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
31-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
31+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
3232
}
3333

3434

‎tests/baselines/reference/parserS7.3_A1.1_T2.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ tests/cases/conformance/parser/ecmascript5/parserS7.3_A1.1_T2.ts(17,3): error TS
2121
$ERROR('#1: var\\nx\\n=\\n1\\n; x === 1. Actual: ' + (x));
2222
~~~~~~
2323
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
24-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
24+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
2525
}
2626

2727

‎tests/baselines/reference/parserS7.6_A4.2_T1.errors.txt

+10-10
Original file line numberDiff line numberDiff line change
@@ -50,70 +50,70 @@ tests/cases/conformance/parser/ecmascript5/parserS7.6_A4.2_T1.ts(142,3): error T
5050
$ERROR('#А');
5151
~~~~~~
5252
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
53-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
53+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
5454
}
5555
var \u0411 = 1;
5656
if (Б !== 1) {
5757
$ERROR('#Б');
5858
~~~~~~
5959
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
60-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
60+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
6161
}
6262
var \u0412 = 1;
6363
if (В !== 1) {
6464
$ERROR('#В');
6565
~~~~~~
6666
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
67-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
67+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
6868
}
6969
var \u0413 = 1;
7070
if (Г !== 1) {
7171
$ERROR('#Г');
7272
~~~~~~
7373
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
74-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
74+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
7575
}
7676
var \u0414 = 1;
7777
if (Д !== 1) {
7878
$ERROR('#Д');
7979
~~~~~~
8080
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
81-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
81+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
8282
}
8383
var \u0415 = 1;
8484
if (Е !== 1) {
8585
$ERROR('#Е');
8686
~~~~~~
8787
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
88-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
88+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
8989
}
9090
var \u0416 = 1;
9191
if (Ж !== 1) {
9292
$ERROR('#Ж');
9393
~~~~~~
9494
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
95-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
95+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
9696
}
9797
var \u0417 = 1;
9898
if (З !== 1) {
9999
$ERROR('#З');
100100
~~~~~~
101101
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
102-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
102+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
103103
}
104104
var \u0418 = 1;
105105
if (И !== 1) {
106106
$ERROR('#И');
107107
~~~~~~
108108
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
109-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
109+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
110110
}
111111
var \u0419 = 1;
112112
if (Й !== 1) {
113113
$ERROR('#Й');
114114
~~~~~~
115115
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
116-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
116+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
117117
}
118118
var \u041A = 1;
119119
if (К !== 1) {

‎tests/baselines/reference/parserUnicode1.errors.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ tests/cases/conformance/parser/ecmascript5/parserUnicode1.ts(10,5): error TS2552
1111
$ERROR('#6.1: var \\u0078x = 1; xx === 6. Actual: ' + (xx));
1212
~~~~~~
1313
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
14-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
14+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
1515
}
1616
}
1717
catch (e) {
1818
$ERROR('#6.2: var \\u0078x = 1; xx === 6. Actual: ' + (xx));
1919
~~~~~~
2020
!!! error TS2552: Cannot find name '$ERROR'. Did you mean 'Error'?
21-
!!! related TS2728 /.ts/lib.es5.d.ts:1059:13: 'Error' is declared here.
21+
!!! related TS2728 /.ts/lib.es5.d.ts:1063:13: 'Error' is declared here.
2222

2323
}

‎tests/baselines/reference/promisePermutations.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2769: No overload m
447447
!!! error TS2769: The last overload gave the following error.
448448
!!! error TS2769: Argument of type '(x: any) => IPromise<string>' is not assignable to parameter of type '(error: any) => Promise<number>'.
449449
!!! error TS2769: Property 'catch' is missing in type 'IPromise<string>' but required in type 'Promise<number>'.
450-
!!! related TS2728 /.ts/lib.es5.d.ts:1535:5: 'catch' is declared here.
450+
!!! related TS2728 /.ts/lib.es5.d.ts:1539:5: 'catch' is declared here.
451451
!!! related TS2771 tests/cases/compiler/promisePermutations.ts:5:5: The last overload is declared here.
452452
var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok
453453

‎tests/baselines/reference/promisePermutations2.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of
351351
~~~~~~~~~
352352
!!! error TS2345: Argument of type '(x: any) => IPromise<string>' is not assignable to parameter of type '(error: any) => Promise<number>'.
353353
!!! error TS2345: Property 'catch' is missing in type 'IPromise<string>' but required in type 'Promise<number>'.
354-
!!! related TS2728 /.ts/lib.es5.d.ts:1535:5: 'catch' is declared here.
354+
!!! related TS2728 /.ts/lib.es5.d.ts:1539:5: 'catch' is declared here.
355355
var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok
356356

357357
var r11: IPromise<number>;

‎tests/baselines/reference/promisePermutations3.errors.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of
398398
!!! error TS2769: The last overload gave the following error.
399399
!!! error TS2769: Argument of type '(x: any) => IPromise<string>' is not assignable to parameter of type '(error: any) => Promise<number>'.
400400
!!! error TS2769: Property 'catch' is missing in type 'IPromise<string>' but required in type 'Promise<number>'.
401-
!!! related TS2728 /.ts/lib.es5.d.ts:1535:5: 'catch' is declared here.
401+
!!! related TS2728 /.ts/lib.es5.d.ts:1539:5: 'catch' is declared here.
402402
!!! related TS2771 tests/cases/compiler/promisePermutations3.ts:7:5: The last overload is declared here.
403403
var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok
404404

@@ -445,5 +445,5 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of
445445
~~~~~~~~~~~~~~~
446446
!!! error TS2345: Argument of type '{ <T>(x: T): IPromise<T>; <T>(x: T, y: T): Promise<T>; }' is not assignable to parameter of type '(value: (x: any) => any) => Promise<unknown>'.
447447
!!! error TS2345: Property 'catch' is missing in type 'IPromise<any>' but required in type 'Promise<unknown>'.
448-
!!! related TS2728 /.ts/lib.es5.d.ts:1535:5: 'catch' is declared here.
448+
!!! related TS2728 /.ts/lib.es5.d.ts:1539:5: 'catch' is declared here.
449449
var s12c = s12.then(testFunction12P, testFunction12, testFunction12); // ok

‎tests/baselines/reference/redefineArray.errors.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ tests/cases/compiler/redefineArray.ts(1,1): error TS2741: Property 'isArray' is
55
Array = function (n:number, s:string) {return n;};
66
~~~~~
77
!!! error TS2741: Property 'isArray' is missing in type '<T>(n: number, s: string) => number' but required in type 'ArrayConstructor'.
8-
!!! related TS2728 /.ts/lib.es5.d.ts:1486:5: 'isArray' is declared here.
8+
!!! related TS2728 /.ts/lib.es5.d.ts:1490:5: 'isArray' is declared here.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
error TS5052: Option 'exactOptionalPropertyTypes' cannot be specified without specifying option 'strictNullChecks'.
2+
3+
4+
!!! error TS5052: Option 'exactOptionalPropertyTypes' cannot be specified without specifying option 'strictNullChecks'.
5+
==== tests/cases/compiler/regexpExecAndMatchTypeUsages.ts (0 errors) ====
6+
export function foo(matchResult: RegExpExecArray, execResult: RegExpExecArray) {
7+
matchResult[0].length;
8+
matchResult[999].length;
9+
matchResult.index + 0;
10+
matchResult.input.length;
11+
matchResult.groups["someVariable"].length;
12+
matchResult.groups = undefined;
13+
14+
execResult[0].length;
15+
execResult[999].length;
16+
execResult.index + 0;
17+
execResult.input.length;
18+
execResult.groups["someVariable"].length;
19+
execResult.groups = undefined;
20+
21+
if (Math.random()) {
22+
matchResult = execResult;
23+
}
24+
else {
25+
execResult = matchResult
26+
}
27+
}
28+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
//// [regexpExecAndMatchTypeUsages.ts]
2+
export function foo(matchResult: RegExpExecArray, execResult: RegExpExecArray) {
3+
matchResult[0].length;
4+
matchResult[999].length;
5+
matchResult.index + 0;
6+
matchResult.input.length;
7+
matchResult.groups["someVariable"].length;
8+
matchResult.groups = undefined;
9+
10+
execResult[0].length;
11+
execResult[999].length;
12+
execResult.index + 0;
13+
execResult.input.length;
14+
execResult.groups["someVariable"].length;
15+
execResult.groups = undefined;
16+
17+
if (Math.random()) {
18+
matchResult = execResult;
19+
}
20+
else {
21+
execResult = matchResult
22+
}
23+
}
24+
25+
26+
//// [regexpExecAndMatchTypeUsages.js]
27+
"use strict";
28+
exports.__esModule = true;
29+
exports.foo = void 0;
30+
function foo(matchResult, execResult) {
31+
matchResult[0].length;
32+
matchResult[999].length;
33+
matchResult.index + 0;
34+
matchResult.input.length;
35+
matchResult.groups["someVariable"].length;
36+
matchResult.groups = undefined;
37+
execResult[0].length;
38+
execResult[999].length;
39+
execResult.index + 0;
40+
execResult.input.length;
41+
execResult.groups["someVariable"].length;
42+
execResult.groups = undefined;
43+
if (Math.random()) {
44+
matchResult = execResult;
45+
}
46+
else {
47+
execResult = matchResult;
48+
}
49+
}
50+
exports.foo = foo;

0 commit comments

Comments
 (0)
Please sign in to comment.