Skip to content

Commit f33a6a6

Browse files
committed
Add failing test for #61429
1 parent 29e6d66 commit f33a6a6

File tree

4 files changed

+428
-0
lines changed

4 files changed

+428
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
//// [tests/cases/compiler/bigintSubtypingTypeParameter.ts] ////
2+
3+
//// [bigintSubtypingTypeParameter.ts]
4+
function bigintSubtypeAdder<T extends bigint>(a: T, b: T): bigint {
5+
const sum = a + b;
6+
return sum;
7+
}
8+
9+
function bigintSubtypeDifference<T extends bigint>(a: T, b: T): bigint {
10+
const difference = a - b;
11+
return difference;
12+
}
13+
14+
function bigintSubtypeArithmeticNegation<T extends bigint>(a: T): bigint {
15+
const negation = -a;
16+
return negation;
17+
}
18+
19+
function bigintSubtypeBitInverse<T extends bigint>(a: T): bigint {
20+
const bitInverse = ~a;
21+
return bitInverse;
22+
}
23+
24+
function bigintSubtypeBitand<T extends bigint>(a: T, b: T): bigint {
25+
const bitand = a & b;
26+
return bitand;
27+
}
28+
29+
function bigintSubtypeBitor<T extends bigint>(a: T, b: T): bigint {
30+
const bitor = a | b;
31+
return bitor;
32+
}
33+
34+
function bigintSubtypeLeftshift<T extends bigint>(a: T, b: T): bigint {
35+
const leftshift = a << b;
36+
return leftshift;
37+
}
38+
39+
function bigintSubtypeRightshift<T extends bigint>(a: T, b: T): bigint {
40+
const rightshift = a >> b;
41+
return rightshift;
42+
}
43+
44+
45+
//// [bigintSubtypingTypeParameter.js]
46+
function bigintSubtypeAdder(a, b) {
47+
var sum = a + b;
48+
return sum;
49+
}
50+
function bigintSubtypeDifference(a, b) {
51+
var difference = a - b;
52+
return difference;
53+
}
54+
function bigintSubtypeArithmeticNegation(a) {
55+
var negation = -a;
56+
return negation;
57+
}
58+
function bigintSubtypeBitInverse(a) {
59+
var bitInverse = ~a;
60+
return bitInverse;
61+
}
62+
function bigintSubtypeBitand(a, b) {
63+
var bitand = a & b;
64+
return bitand;
65+
}
66+
function bigintSubtypeBitor(a, b) {
67+
var bitor = a | b;
68+
return bitor;
69+
}
70+
function bigintSubtypeLeftshift(a, b) {
71+
var leftshift = a << b;
72+
return leftshift;
73+
}
74+
function bigintSubtypeRightshift(a, b) {
75+
var rightshift = a >> b;
76+
return rightshift;
77+
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
//// [tests/cases/compiler/bigintSubtypingTypeParameter.ts] ////
2+
3+
=== bigintSubtypingTypeParameter.ts ===
4+
function bigintSubtypeAdder<T extends bigint>(a: T, b: T): bigint {
5+
>bigintSubtypeAdder : Symbol(bigintSubtypeAdder, Decl(bigintSubtypingTypeParameter.ts, 0, 0))
6+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 0, 28))
7+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 0, 46))
8+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 0, 28))
9+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 0, 51))
10+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 0, 28))
11+
12+
const sum = a + b;
13+
>sum : Symbol(sum, Decl(bigintSubtypingTypeParameter.ts, 1, 6))
14+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 0, 46))
15+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 0, 51))
16+
17+
return sum;
18+
>sum : Symbol(sum, Decl(bigintSubtypingTypeParameter.ts, 1, 6))
19+
}
20+
21+
function bigintSubtypeDifference<T extends bigint>(a: T, b: T): bigint {
22+
>bigintSubtypeDifference : Symbol(bigintSubtypeDifference, Decl(bigintSubtypingTypeParameter.ts, 3, 1))
23+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 5, 33))
24+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 5, 51))
25+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 5, 33))
26+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 5, 56))
27+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 5, 33))
28+
29+
const difference = a - b;
30+
>difference : Symbol(difference, Decl(bigintSubtypingTypeParameter.ts, 6, 6))
31+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 5, 51))
32+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 5, 56))
33+
34+
return difference;
35+
>difference : Symbol(difference, Decl(bigintSubtypingTypeParameter.ts, 6, 6))
36+
}
37+
38+
function bigintSubtypeArithmeticNegation<T extends bigint>(a: T): bigint {
39+
>bigintSubtypeArithmeticNegation : Symbol(bigintSubtypeArithmeticNegation, Decl(bigintSubtypingTypeParameter.ts, 8, 1))
40+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 10, 41))
41+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 10, 59))
42+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 10, 41))
43+
44+
const negation = -a;
45+
>negation : Symbol(negation, Decl(bigintSubtypingTypeParameter.ts, 11, 6))
46+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 10, 59))
47+
48+
return negation;
49+
>negation : Symbol(negation, Decl(bigintSubtypingTypeParameter.ts, 11, 6))
50+
}
51+
52+
function bigintSubtypeBitInverse<T extends bigint>(a: T): bigint {
53+
>bigintSubtypeBitInverse : Symbol(bigintSubtypeBitInverse, Decl(bigintSubtypingTypeParameter.ts, 13, 1))
54+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 15, 33))
55+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 15, 51))
56+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 15, 33))
57+
58+
const bitInverse = ~a;
59+
>bitInverse : Symbol(bitInverse, Decl(bigintSubtypingTypeParameter.ts, 16, 6))
60+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 15, 51))
61+
62+
return bitInverse;
63+
>bitInverse : Symbol(bitInverse, Decl(bigintSubtypingTypeParameter.ts, 16, 6))
64+
}
65+
66+
function bigintSubtypeBitand<T extends bigint>(a: T, b: T): bigint {
67+
>bigintSubtypeBitand : Symbol(bigintSubtypeBitand, Decl(bigintSubtypingTypeParameter.ts, 18, 1))
68+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 20, 29))
69+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 20, 47))
70+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 20, 29))
71+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 20, 52))
72+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 20, 29))
73+
74+
const bitand = a & b;
75+
>bitand : Symbol(bitand, Decl(bigintSubtypingTypeParameter.ts, 21, 6))
76+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 20, 47))
77+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 20, 52))
78+
79+
return bitand;
80+
>bitand : Symbol(bitand, Decl(bigintSubtypingTypeParameter.ts, 21, 6))
81+
}
82+
83+
function bigintSubtypeBitor<T extends bigint>(a: T, b: T): bigint {
84+
>bigintSubtypeBitor : Symbol(bigintSubtypeBitor, Decl(bigintSubtypingTypeParameter.ts, 23, 1))
85+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 25, 28))
86+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 25, 46))
87+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 25, 28))
88+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 25, 51))
89+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 25, 28))
90+
91+
const bitor = a | b;
92+
>bitor : Symbol(bitor, Decl(bigintSubtypingTypeParameter.ts, 26, 6))
93+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 25, 46))
94+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 25, 51))
95+
96+
return bitor;
97+
>bitor : Symbol(bitor, Decl(bigintSubtypingTypeParameter.ts, 26, 6))
98+
}
99+
100+
function bigintSubtypeLeftshift<T extends bigint>(a: T, b: T): bigint {
101+
>bigintSubtypeLeftshift : Symbol(bigintSubtypeLeftshift, Decl(bigintSubtypingTypeParameter.ts, 28, 1))
102+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 30, 32))
103+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 30, 50))
104+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 30, 32))
105+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 30, 55))
106+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 30, 32))
107+
108+
const leftshift = a << b;
109+
>leftshift : Symbol(leftshift, Decl(bigintSubtypingTypeParameter.ts, 31, 6))
110+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 30, 50))
111+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 30, 55))
112+
113+
return leftshift;
114+
>leftshift : Symbol(leftshift, Decl(bigintSubtypingTypeParameter.ts, 31, 6))
115+
}
116+
117+
function bigintSubtypeRightshift<T extends bigint>(a: T, b: T): bigint {
118+
>bigintSubtypeRightshift : Symbol(bigintSubtypeRightshift, Decl(bigintSubtypingTypeParameter.ts, 33, 1))
119+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 35, 33))
120+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 35, 51))
121+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 35, 33))
122+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 35, 56))
123+
>T : Symbol(T, Decl(bigintSubtypingTypeParameter.ts, 35, 33))
124+
125+
const rightshift = a >> b;
126+
>rightshift : Symbol(rightshift, Decl(bigintSubtypingTypeParameter.ts, 36, 6))
127+
>a : Symbol(a, Decl(bigintSubtypingTypeParameter.ts, 35, 51))
128+
>b : Symbol(b, Decl(bigintSubtypingTypeParameter.ts, 35, 56))
129+
130+
return rightshift;
131+
>rightshift : Symbol(rightshift, Decl(bigintSubtypingTypeParameter.ts, 36, 6))
132+
}
133+
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
//// [tests/cases/compiler/bigintSubtypingTypeParameter.ts] ////
2+
3+
=== bigintSubtypingTypeParameter.ts ===
4+
function bigintSubtypeAdder<T extends bigint>(a: T, b: T): bigint {
5+
>bigintSubtypeAdder : <T extends bigint>(a: T, b: T) => bigint
6+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
7+
>a : T
8+
> : ^
9+
>b : T
10+
> : ^
11+
12+
const sum = a + b;
13+
>sum : bigint
14+
> : ^^^^^^
15+
>a + b : bigint
16+
> : ^^^^^^
17+
>a : T
18+
> : ^
19+
>b : T
20+
> : ^
21+
22+
return sum;
23+
>sum : bigint
24+
> : ^^^^^^
25+
}
26+
27+
function bigintSubtypeDifference<T extends bigint>(a: T, b: T): bigint {
28+
>bigintSubtypeDifference : <T extends bigint>(a: T, b: T) => bigint
29+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
30+
>a : T
31+
> : ^
32+
>b : T
33+
> : ^
34+
35+
const difference = a - b;
36+
>difference : bigint
37+
> : ^^^^^^
38+
>a - b : bigint
39+
> : ^^^^^^
40+
>a : T
41+
> : ^
42+
>b : T
43+
> : ^
44+
45+
return difference;
46+
>difference : bigint
47+
> : ^^^^^^
48+
}
49+
50+
function bigintSubtypeArithmeticNegation<T extends bigint>(a: T): bigint {
51+
>bigintSubtypeArithmeticNegation : <T extends bigint>(a: T) => bigint
52+
> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^
53+
>a : T
54+
> : ^
55+
56+
const negation = -a;
57+
>negation : bigint
58+
> : ^^^^^^
59+
>-a : bigint
60+
> : ^^^^^^
61+
>a : T
62+
> : ^
63+
64+
return negation;
65+
>negation : bigint
66+
> : ^^^^^^
67+
}
68+
69+
function bigintSubtypeBitInverse<T extends bigint>(a: T): bigint {
70+
>bigintSubtypeBitInverse : <T extends bigint>(a: T) => bigint
71+
> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^
72+
>a : T
73+
> : ^
74+
75+
const bitInverse = ~a;
76+
>bitInverse : bigint
77+
> : ^^^^^^
78+
>~a : bigint
79+
> : ^^^^^^
80+
>a : T
81+
> : ^
82+
83+
return bitInverse;
84+
>bitInverse : bigint
85+
> : ^^^^^^
86+
}
87+
88+
function bigintSubtypeBitand<T extends bigint>(a: T, b: T): bigint {
89+
>bigintSubtypeBitand : <T extends bigint>(a: T, b: T) => bigint
90+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
91+
>a : T
92+
> : ^
93+
>b : T
94+
> : ^
95+
96+
const bitand = a & b;
97+
>bitand : bigint
98+
> : ^^^^^^
99+
>a & b : bigint
100+
> : ^^^^^^
101+
>a : T
102+
> : ^
103+
>b : T
104+
> : ^
105+
106+
return bitand;
107+
>bitand : bigint
108+
> : ^^^^^^
109+
}
110+
111+
function bigintSubtypeBitor<T extends bigint>(a: T, b: T): bigint {
112+
>bigintSubtypeBitor : <T extends bigint>(a: T, b: T) => bigint
113+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
114+
>a : T
115+
> : ^
116+
>b : T
117+
> : ^
118+
119+
const bitor = a | b;
120+
>bitor : bigint
121+
> : ^^^^^^
122+
>a | b : bigint
123+
> : ^^^^^^
124+
>a : T
125+
> : ^
126+
>b : T
127+
> : ^
128+
129+
return bitor;
130+
>bitor : bigint
131+
> : ^^^^^^
132+
}
133+
134+
function bigintSubtypeLeftshift<T extends bigint>(a: T, b: T): bigint {
135+
>bigintSubtypeLeftshift : <T extends bigint>(a: T, b: T) => bigint
136+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
137+
>a : T
138+
> : ^
139+
>b : T
140+
> : ^
141+
142+
const leftshift = a << b;
143+
>leftshift : bigint
144+
> : ^^^^^^
145+
>a << b : bigint
146+
> : ^^^^^^
147+
>a : T
148+
> : ^
149+
>b : T
150+
> : ^
151+
152+
return leftshift;
153+
>leftshift : bigint
154+
> : ^^^^^^
155+
}
156+
157+
function bigintSubtypeRightshift<T extends bigint>(a: T, b: T): bigint {
158+
>bigintSubtypeRightshift : <T extends bigint>(a: T, b: T) => bigint
159+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
160+
>a : T
161+
> : ^
162+
>b : T
163+
> : ^
164+
165+
const rightshift = a >> b;
166+
>rightshift : bigint
167+
> : ^^^^^^
168+
>a >> b : bigint
169+
> : ^^^^^^
170+
>a : T
171+
> : ^
172+
>b : T
173+
> : ^
174+
175+
return rightshift;
176+
>rightshift : bigint
177+
> : ^^^^^^
178+
}
179+

0 commit comments

Comments
 (0)