Skip to content

Commit 3ae38fa

Browse files
committed
Add tests for generic startsWith/endsWith
1 parent 49b26b2 commit 3ae38fa

10 files changed

+401
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
tests/cases/compiler/stringEndsWith.ts(9,46): error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
2+
tests/cases/compiler/stringEndsWith.ts(10,46): error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
3+
tests/cases/compiler/stringEndsWith.ts(11,56): error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
4+
tests/cases/compiler/stringEndsWith.ts(12,56): error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
5+
6+
7+
==== tests/cases/compiler/stringEndsWith.ts (4 errors) ====
8+
declare var test: string;
9+
declare function requirePostfix(input: `${string}test`): void;
10+
11+
// works
12+
if (test.endsWith('test')) requirePostfix(test);
13+
if (test.endsWith('test', undefined)) requirePostfix(test);
14+
15+
// errors
16+
if (test.endsWith('test', 0)) requirePostfix(test);
17+
~~~~
18+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
19+
if (test.endsWith('test', 1)) requirePostfix(test);
20+
~~~~
21+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
22+
if (test.endsWith('test', 0 as number)) requirePostfix(test);
23+
~~~~
24+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
25+
if (test.endsWith('test', 1 as number)) requirePostfix(test);
26+
~~~~
27+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`${string}test`'.
28+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//// [stringEndsWith.ts]
2+
declare var test: string;
3+
declare function requirePostfix(input: `${string}test`): void;
4+
5+
// works
6+
if (test.endsWith('test')) requirePostfix(test);
7+
if (test.endsWith('test', undefined)) requirePostfix(test);
8+
9+
// errors
10+
if (test.endsWith('test', 0)) requirePostfix(test);
11+
if (test.endsWith('test', 1)) requirePostfix(test);
12+
if (test.endsWith('test', 0 as number)) requirePostfix(test);
13+
if (test.endsWith('test', 1 as number)) requirePostfix(test);
14+
15+
16+
//// [stringEndsWith.js]
17+
// works
18+
if (test.endsWith('test'))
19+
requirePostfix(test);
20+
if (test.endsWith('test', undefined))
21+
requirePostfix(test);
22+
// errors
23+
if (test.endsWith('test', 0))
24+
requirePostfix(test);
25+
if (test.endsWith('test', 1))
26+
requirePostfix(test);
27+
if (test.endsWith('test', 0))
28+
requirePostfix(test);
29+
if (test.endsWith('test', 1))
30+
requirePostfix(test);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
=== tests/cases/compiler/stringEndsWith.ts ===
2+
declare var test: string;
3+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
4+
5+
declare function requirePostfix(input: `${string}test`): void;
6+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
7+
>input : Symbol(input, Decl(stringEndsWith.ts, 1, 32))
8+
9+
// works
10+
if (test.endsWith('test')) requirePostfix(test);
11+
>test.endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
12+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
13+
>endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
14+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
15+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
16+
17+
if (test.endsWith('test', undefined)) requirePostfix(test);
18+
>test.endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
19+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
20+
>endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
21+
>undefined : Symbol(undefined)
22+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
23+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
24+
25+
// errors
26+
if (test.endsWith('test', 0)) requirePostfix(test);
27+
>test.endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
28+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
29+
>endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
30+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
31+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
32+
33+
if (test.endsWith('test', 1)) requirePostfix(test);
34+
>test.endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
35+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
36+
>endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
37+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
38+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
39+
40+
if (test.endsWith('test', 0 as number)) requirePostfix(test);
41+
>test.endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
42+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
43+
>endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
44+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
45+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
46+
47+
if (test.endsWith('test', 1 as number)) requirePostfix(test);
48+
>test.endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
49+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
50+
>endsWith : Symbol(String.endsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
51+
>requirePostfix : Symbol(requirePostfix, Decl(stringEndsWith.ts, 0, 25))
52+
>test : Symbol(test, Decl(stringEndsWith.ts, 0, 11))
53+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
=== tests/cases/compiler/stringEndsWith.ts ===
2+
declare var test: string;
3+
>test : string
4+
5+
declare function requirePostfix(input: `${string}test`): void;
6+
>requirePostfix : (input: `${string}test`) => void
7+
>input : `${string}test`
8+
9+
// works
10+
if (test.endsWith('test')) requirePostfix(test);
11+
>test.endsWith('test') : boolean
12+
>test.endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
13+
>test : string
14+
>endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
15+
>'test' : "test"
16+
>requirePostfix(test) : void
17+
>requirePostfix : (input: `${string}test`) => void
18+
>test : `${string}test`
19+
20+
if (test.endsWith('test', undefined)) requirePostfix(test);
21+
>test.endsWith('test', undefined) : boolean
22+
>test.endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
23+
>test : string
24+
>endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
25+
>'test' : "test"
26+
>undefined : undefined
27+
>requirePostfix(test) : void
28+
>requirePostfix : (input: `${string}test`) => void
29+
>test : `${string}test`
30+
31+
// errors
32+
if (test.endsWith('test', 0)) requirePostfix(test);
33+
>test.endsWith('test', 0) : boolean
34+
>test.endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
35+
>test : string
36+
>endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
37+
>'test' : "test"
38+
>0 : 0
39+
>requirePostfix(test) : void
40+
>requirePostfix : (input: `${string}test`) => void
41+
>test : string
42+
43+
if (test.endsWith('test', 1)) requirePostfix(test);
44+
>test.endsWith('test', 1) : boolean
45+
>test.endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
46+
>test : string
47+
>endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
48+
>'test' : "test"
49+
>1 : 1
50+
>requirePostfix(test) : void
51+
>requirePostfix : (input: `${string}test`) => void
52+
>test : string
53+
54+
if (test.endsWith('test', 0 as number)) requirePostfix(test);
55+
>test.endsWith('test', 0 as number) : boolean
56+
>test.endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
57+
>test : string
58+
>endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
59+
>'test' : "test"
60+
>0 as number : number
61+
>0 : 0
62+
>requirePostfix(test) : void
63+
>requirePostfix : (input: `${string}test`) => void
64+
>test : string
65+
66+
if (test.endsWith('test', 1 as number)) requirePostfix(test);
67+
>test.endsWith('test', 1 as number) : boolean
68+
>test.endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
69+
>test : string
70+
>endsWith : { <T extends string>(searchString: T, endPosition?: undefined): this is `${string}${T}`; (searchString: string, endPosition?: number): boolean; }
71+
>'test' : "test"
72+
>1 as number : number
73+
>1 : 1
74+
>requirePostfix(test) : void
75+
>requirePostfix : (input: `${string}test`) => void
76+
>test : string
77+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
tests/cases/compiler/stringStartsWith.ts(10,47): error TS2345: Argument of type 'string' is not assignable to parameter of type '`test${string}`'.
2+
tests/cases/compiler/stringStartsWith.ts(11,57): error TS2345: Argument of type 'string' is not assignable to parameter of type '`test${string}`'.
3+
tests/cases/compiler/stringStartsWith.ts(12,57): error TS2345: Argument of type 'string' is not assignable to parameter of type '`test${string}`'.
4+
5+
6+
==== tests/cases/compiler/stringStartsWith.ts (3 errors) ====
7+
declare var test: string;
8+
declare function requirePrefix(input: `test${string}`): void;
9+
10+
// works
11+
if (test.startsWith('test')) requirePrefix(test);
12+
if (test.startsWith('test', undefined)) requirePrefix(test);
13+
if (test.startsWith('test', 0)) requirePrefix(test);
14+
15+
// errors
16+
if (test.startsWith('test', 1)) requirePrefix(test);
17+
~~~~
18+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`test${string}`'.
19+
if (test.startsWith('test', 0 as number)) requirePrefix(test);
20+
~~~~
21+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`test${string}`'.
22+
if (test.startsWith('test', 1 as number)) requirePrefix(test);
23+
~~~~
24+
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type '`test${string}`'.
25+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//// [stringStartsWith.ts]
2+
declare var test: string;
3+
declare function requirePrefix(input: `test${string}`): void;
4+
5+
// works
6+
if (test.startsWith('test')) requirePrefix(test);
7+
if (test.startsWith('test', undefined)) requirePrefix(test);
8+
if (test.startsWith('test', 0)) requirePrefix(test);
9+
10+
// errors
11+
if (test.startsWith('test', 1)) requirePrefix(test);
12+
if (test.startsWith('test', 0 as number)) requirePrefix(test);
13+
if (test.startsWith('test', 1 as number)) requirePrefix(test);
14+
15+
16+
//// [stringStartsWith.js]
17+
// works
18+
if (test.startsWith('test'))
19+
requirePrefix(test);
20+
if (test.startsWith('test', undefined))
21+
requirePrefix(test);
22+
if (test.startsWith('test', 0))
23+
requirePrefix(test);
24+
// errors
25+
if (test.startsWith('test', 1))
26+
requirePrefix(test);
27+
if (test.startsWith('test', 0))
28+
requirePrefix(test);
29+
if (test.startsWith('test', 1))
30+
requirePrefix(test);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
=== tests/cases/compiler/stringStartsWith.ts ===
2+
declare var test: string;
3+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
4+
5+
declare function requirePrefix(input: `test${string}`): void;
6+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
7+
>input : Symbol(input, Decl(stringStartsWith.ts, 1, 31))
8+
9+
// works
10+
if (test.startsWith('test')) requirePrefix(test);
11+
>test.startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
12+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
13+
>startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
14+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
15+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
16+
17+
if (test.startsWith('test', undefined)) requirePrefix(test);
18+
>test.startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
19+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
20+
>startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
21+
>undefined : Symbol(undefined)
22+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
23+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
24+
25+
if (test.startsWith('test', 0)) requirePrefix(test);
26+
>test.startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
27+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
28+
>startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
29+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
30+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
31+
32+
// errors
33+
if (test.startsWith('test', 1)) requirePrefix(test);
34+
>test.startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
35+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
36+
>startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
37+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
38+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
39+
40+
if (test.startsWith('test', 0 as number)) requirePrefix(test);
41+
>test.startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
42+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
43+
>startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
44+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
45+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
46+
47+
if (test.startsWith('test', 1 as number)) requirePrefix(test);
48+
>test.startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
49+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
50+
>startsWith : Symbol(String.startsWith, Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
51+
>requirePrefix : Symbol(requirePrefix, Decl(stringStartsWith.ts, 0, 25))
52+
>test : Symbol(test, Decl(stringStartsWith.ts, 0, 11))
53+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
=== tests/cases/compiler/stringStartsWith.ts ===
2+
declare var test: string;
3+
>test : string
4+
5+
declare function requirePrefix(input: `test${string}`): void;
6+
>requirePrefix : (input: `test${string}`) => void
7+
>input : `test${string}`
8+
9+
// works
10+
if (test.startsWith('test')) requirePrefix(test);
11+
>test.startsWith('test') : boolean
12+
>test.startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
13+
>test : string
14+
>startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
15+
>'test' : "test"
16+
>requirePrefix(test) : void
17+
>requirePrefix : (input: `test${string}`) => void
18+
>test : `test${string}`
19+
20+
if (test.startsWith('test', undefined)) requirePrefix(test);
21+
>test.startsWith('test', undefined) : boolean
22+
>test.startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
23+
>test : string
24+
>startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
25+
>'test' : "test"
26+
>undefined : undefined
27+
>requirePrefix(test) : void
28+
>requirePrefix : (input: `test${string}`) => void
29+
>test : `test${string}`
30+
31+
if (test.startsWith('test', 0)) requirePrefix(test);
32+
>test.startsWith('test', 0) : boolean
33+
>test.startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
34+
>test : string
35+
>startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
36+
>'test' : "test"
37+
>0 : 0
38+
>requirePrefix(test) : void
39+
>requirePrefix : (input: `test${string}`) => void
40+
>test : `test${string}`
41+
42+
// errors
43+
if (test.startsWith('test', 1)) requirePrefix(test);
44+
>test.startsWith('test', 1) : boolean
45+
>test.startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
46+
>test : string
47+
>startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
48+
>'test' : "test"
49+
>1 : 1
50+
>requirePrefix(test) : void
51+
>requirePrefix : (input: `test${string}`) => void
52+
>test : string
53+
54+
if (test.startsWith('test', 0 as number)) requirePrefix(test);
55+
>test.startsWith('test', 0 as number) : boolean
56+
>test.startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
57+
>test : string
58+
>startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
59+
>'test' : "test"
60+
>0 as number : number
61+
>0 : 0
62+
>requirePrefix(test) : void
63+
>requirePrefix : (input: `test${string}`) => void
64+
>test : string
65+
66+
if (test.startsWith('test', 1 as number)) requirePrefix(test);
67+
>test.startsWith('test', 1 as number) : boolean
68+
>test.startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
69+
>test : string
70+
>startsWith : { <T extends string>(searchString: T, position?: 0): this is `${T}${string}`; (searchString: string, position?: number): boolean; }
71+
>'test' : "test"
72+
>1 as number : number
73+
>1 : 1
74+
>requirePrefix(test) : void
75+
>requirePrefix : (input: `test${string}`) => void
76+
>test : string
77+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// @target: es2015
2+
3+
declare var test: string;
4+
declare function requirePostfix(input: `${string}test`): void;
5+
6+
// works
7+
if (test.endsWith('test')) requirePostfix(test);
8+
if (test.endsWith('test', undefined)) requirePostfix(test);
9+
10+
// errors
11+
if (test.endsWith('test', 0)) requirePostfix(test);
12+
if (test.endsWith('test', 1)) requirePostfix(test);
13+
if (test.endsWith('test', 0 as number)) requirePostfix(test);
14+
if (test.endsWith('test', 1 as number)) requirePostfix(test);

0 commit comments

Comments
 (0)