Skip to content

Commit a4a37ea

Browse files
committed
Add regression test
1 parent d0a195a commit a4a37ea

4 files changed

+104
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//// [signatureInstantiationWithRecursiveConstraints.ts]
2+
// Repro from #17148
3+
4+
class Foo {
5+
myFunc<T extends Foo>(arg: T) {}
6+
}
7+
8+
class Bar {
9+
myFunc<T extends Bar>(arg: T) {}
10+
}
11+
12+
const myVar: Foo = new Bar();
13+
14+
15+
//// [signatureInstantiationWithRecursiveConstraints.js]
16+
"use strict";
17+
// Repro from #17148
18+
var Foo = (function () {
19+
function Foo() {
20+
}
21+
Foo.prototype.myFunc = function (arg) { };
22+
return Foo;
23+
}());
24+
var Bar = (function () {
25+
function Bar() {
26+
}
27+
Bar.prototype.myFunc = function (arg) { };
28+
return Bar;
29+
}());
30+
var myVar = new Bar();
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
=== tests/cases/compiler/signatureInstantiationWithRecursiveConstraints.ts ===
2+
// Repro from #17148
3+
4+
class Foo {
5+
>Foo : Symbol(Foo, Decl(signatureInstantiationWithRecursiveConstraints.ts, 0, 0))
6+
7+
myFunc<T extends Foo>(arg: T) {}
8+
>myFunc : Symbol(Foo.myFunc, Decl(signatureInstantiationWithRecursiveConstraints.ts, 2, 11))
9+
>T : Symbol(T, Decl(signatureInstantiationWithRecursiveConstraints.ts, 3, 9))
10+
>Foo : Symbol(Foo, Decl(signatureInstantiationWithRecursiveConstraints.ts, 0, 0))
11+
>arg : Symbol(arg, Decl(signatureInstantiationWithRecursiveConstraints.ts, 3, 24))
12+
>T : Symbol(T, Decl(signatureInstantiationWithRecursiveConstraints.ts, 3, 9))
13+
}
14+
15+
class Bar {
16+
>Bar : Symbol(Bar, Decl(signatureInstantiationWithRecursiveConstraints.ts, 4, 1))
17+
18+
myFunc<T extends Bar>(arg: T) {}
19+
>myFunc : Symbol(Bar.myFunc, Decl(signatureInstantiationWithRecursiveConstraints.ts, 6, 11))
20+
>T : Symbol(T, Decl(signatureInstantiationWithRecursiveConstraints.ts, 7, 9))
21+
>Bar : Symbol(Bar, Decl(signatureInstantiationWithRecursiveConstraints.ts, 4, 1))
22+
>arg : Symbol(arg, Decl(signatureInstantiationWithRecursiveConstraints.ts, 7, 24))
23+
>T : Symbol(T, Decl(signatureInstantiationWithRecursiveConstraints.ts, 7, 9))
24+
}
25+
26+
const myVar: Foo = new Bar();
27+
>myVar : Symbol(myVar, Decl(signatureInstantiationWithRecursiveConstraints.ts, 10, 5))
28+
>Foo : Symbol(Foo, Decl(signatureInstantiationWithRecursiveConstraints.ts, 0, 0))
29+
>Bar : Symbol(Bar, Decl(signatureInstantiationWithRecursiveConstraints.ts, 4, 1))
30+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
=== tests/cases/compiler/signatureInstantiationWithRecursiveConstraints.ts ===
2+
// Repro from #17148
3+
4+
class Foo {
5+
>Foo : Foo
6+
7+
myFunc<T extends Foo>(arg: T) {}
8+
>myFunc : <T extends Foo>(arg: T) => void
9+
>T : T
10+
>Foo : Foo
11+
>arg : T
12+
>T : T
13+
}
14+
15+
class Bar {
16+
>Bar : Bar
17+
18+
myFunc<T extends Bar>(arg: T) {}
19+
>myFunc : <T extends Bar>(arg: T) => void
20+
>T : T
21+
>Bar : Bar
22+
>arg : T
23+
>T : T
24+
}
25+
26+
const myVar: Foo = new Bar();
27+
>myVar : Foo
28+
>Foo : Foo
29+
>new Bar() : Bar
30+
>Bar : typeof Bar
31+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// @strict: true
2+
3+
// Repro from #17148
4+
5+
class Foo {
6+
myFunc<T extends Foo>(arg: T) {}
7+
}
8+
9+
class Bar {
10+
myFunc<T extends Bar>(arg: T) {}
11+
}
12+
13+
const myVar: Foo = new Bar();

0 commit comments

Comments
 (0)