Skip to content

Commit fdc44b2

Browse files
committed
Adding regression tests
1 parent 99ba94e commit fdc44b2

10 files changed

+297
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//// [unionTypeWithRecursiveSubtypeReduction1.ts]
2+
class Module {
3+
public members: Class[];
4+
}
5+
6+
class Namespace {
7+
public members: (Class | Property)[];
8+
}
9+
10+
class Class {
11+
public parent: Namespace;
12+
}
13+
14+
class Property {
15+
public parent: Module | Class;
16+
}
17+
18+
var t: Class | Property;
19+
t.parent;
20+
21+
22+
//// [unionTypeWithRecursiveSubtypeReduction1.js]
23+
var Module = (function () {
24+
function Module() {
25+
}
26+
return Module;
27+
})();
28+
var Namespace = (function () {
29+
function Namespace() {
30+
}
31+
return Namespace;
32+
})();
33+
var Class = (function () {
34+
function Class() {
35+
}
36+
return Class;
37+
})();
38+
var Property = (function () {
39+
function Property() {
40+
}
41+
return Property;
42+
})();
43+
var t;
44+
t.parent;
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
=== tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction1.ts ===
2+
class Module {
3+
>Module : Symbol(Module, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 0))
4+
5+
public members: Class[];
6+
>members : Symbol(members, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 14))
7+
>Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1))
8+
}
9+
10+
class Namespace {
11+
>Namespace : Symbol(Namespace, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 2, 1))
12+
13+
public members: (Class | Property)[];
14+
>members : Symbol(members, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 4, 17))
15+
>Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1))
16+
>Property : Symbol(Property, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 10, 1))
17+
}
18+
19+
class Class {
20+
>Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1))
21+
22+
public parent: Namespace;
23+
>parent : Symbol(parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 8, 13))
24+
>Namespace : Symbol(Namespace, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 2, 1))
25+
}
26+
27+
class Property {
28+
>Property : Symbol(Property, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 10, 1))
29+
30+
public parent: Module | Class;
31+
>parent : Symbol(parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 12, 16))
32+
>Module : Symbol(Module, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 0, 0))
33+
>Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1))
34+
}
35+
36+
var t: Class | Property;
37+
>t : Symbol(t, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 16, 3))
38+
>Class : Symbol(Class, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 6, 1))
39+
>Property : Symbol(Property, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 10, 1))
40+
41+
t.parent;
42+
>t.parent : Symbol(parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 8, 13), Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 12, 16))
43+
>t : Symbol(t, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 16, 3))
44+
>parent : Symbol(parent, Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 8, 13), Decl(unionTypeWithRecursiveSubtypeReduction1.ts, 12, 16))
45+
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
=== tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction1.ts ===
2+
class Module {
3+
>Module : Module
4+
5+
public members: Class[];
6+
>members : Class[]
7+
>Class : Class
8+
}
9+
10+
class Namespace {
11+
>Namespace : Namespace
12+
13+
public members: (Class | Property)[];
14+
>members : (Class | Property)[]
15+
>Class : Class
16+
>Property : Property
17+
}
18+
19+
class Class {
20+
>Class : Class
21+
22+
public parent: Namespace;
23+
>parent : Namespace
24+
>Namespace : Namespace
25+
}
26+
27+
class Property {
28+
>Property : Property
29+
30+
public parent: Module | Class;
31+
>parent : Module | Class
32+
>Module : Module
33+
>Class : Class
34+
}
35+
36+
var t: Class | Property;
37+
>t : Class | Property
38+
>Class : Class
39+
>Property : Property
40+
41+
t.parent;
42+
>t.parent : Class | Namespace
43+
>t : Class | Property
44+
>parent : Class | Namespace
45+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction2.ts(19,1): error TS2322: Type 'Property' is not assignable to type 'Class'.
2+
Types of property 'parent' are incompatible.
3+
Type 'Module | Class' is not assignable to type 'Namespace'.
4+
Type 'Class' is not assignable to type 'Namespace'.
5+
Property 'members' is missing in type 'Class'.
6+
tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction2.ts(20,1): error TS2322: Type 'Class' is not assignable to type 'Property'.
7+
Types of property 'parent' are incompatible.
8+
Type 'Namespace' is not assignable to type 'Module | Class'.
9+
Type 'Namespace' is not assignable to type 'Class'.
10+
Property 'parent' is missing in type 'Namespace'.
11+
12+
13+
==== tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction2.ts (2 errors) ====
14+
class Module {
15+
public members: Class[];
16+
}
17+
18+
class Namespace {
19+
public members: (Class | Property)[];
20+
}
21+
22+
class Class {
23+
public parent: Namespace;
24+
}
25+
26+
class Property {
27+
public parent: Module | Class;
28+
}
29+
30+
var c: Class;
31+
var p: Property;
32+
c = p;
33+
~
34+
!!! error TS2322: Type 'Property' is not assignable to type 'Class'.
35+
!!! error TS2322: Types of property 'parent' are incompatible.
36+
!!! error TS2322: Type 'Module | Class' is not assignable to type 'Namespace'.
37+
!!! error TS2322: Type 'Class' is not assignable to type 'Namespace'.
38+
!!! error TS2322: Property 'members' is missing in type 'Class'.
39+
p = c;
40+
~
41+
!!! error TS2322: Type 'Class' is not assignable to type 'Property'.
42+
!!! error TS2322: Types of property 'parent' are incompatible.
43+
!!! error TS2322: Type 'Namespace' is not assignable to type 'Module | Class'.
44+
!!! error TS2322: Type 'Namespace' is not assignable to type 'Class'.
45+
!!! error TS2322: Property 'parent' is missing in type 'Namespace'.
46+
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//// [unionTypeWithRecursiveSubtypeReduction2.ts]
2+
class Module {
3+
public members: Class[];
4+
}
5+
6+
class Namespace {
7+
public members: (Class | Property)[];
8+
}
9+
10+
class Class {
11+
public parent: Namespace;
12+
}
13+
14+
class Property {
15+
public parent: Module | Class;
16+
}
17+
18+
var c: Class;
19+
var p: Property;
20+
c = p;
21+
p = c;
22+
23+
24+
//// [unionTypeWithRecursiveSubtypeReduction2.js]
25+
var Module = (function () {
26+
function Module() {
27+
}
28+
return Module;
29+
})();
30+
var Namespace = (function () {
31+
function Namespace() {
32+
}
33+
return Namespace;
34+
})();
35+
var Class = (function () {
36+
function Class() {
37+
}
38+
return Class;
39+
})();
40+
var Property = (function () {
41+
function Property() {
42+
}
43+
return Property;
44+
})();
45+
var c;
46+
var p;
47+
c = p;
48+
p = c;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction3.ts(5,5): error TS2322: Type '{ prop: number; } | { prop: { prop: number; } | any; }' is not assignable to type 'string'.
2+
Type '{ prop: number; }' is not assignable to type 'string'.
3+
4+
5+
==== tests/cases/compiler/unionTypeWithRecursiveSubtypeReduction3.ts (1 errors) ====
6+
var a27: { prop: number } | { prop: T27 };
7+
type T27 = typeof a27;
8+
9+
var b: T27;
10+
var s: string = b;
11+
~
12+
!!! error TS2322: Type '{ prop: number; } | { prop: { prop: number; } | any; }' is not assignable to type 'string'.
13+
!!! error TS2322: Type '{ prop: number; }' is not assignable to type 'string'.
14+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//// [unionTypeWithRecursiveSubtypeReduction3.ts]
2+
var a27: { prop: number } | { prop: T27 };
3+
type T27 = typeof a27;
4+
5+
var b: T27;
6+
var s: string = b;
7+
8+
9+
//// [unionTypeWithRecursiveSubtypeReduction3.js]
10+
var a27;
11+
var b;
12+
var s = b;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Module {
2+
public members: Class[];
3+
}
4+
5+
class Namespace {
6+
public members: (Class | Property)[];
7+
}
8+
9+
class Class {
10+
public parent: Namespace;
11+
}
12+
13+
class Property {
14+
public parent: Module | Class;
15+
}
16+
17+
var t: Class | Property;
18+
t.parent;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Module {
2+
public members: Class[];
3+
}
4+
5+
class Namespace {
6+
public members: (Class | Property)[];
7+
}
8+
9+
class Class {
10+
public parent: Namespace;
11+
}
12+
13+
class Property {
14+
public parent: Module | Class;
15+
}
16+
17+
var c: Class;
18+
var p: Property;
19+
c = p;
20+
p = c;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var a27: { prop: number } | { prop: T27 };
2+
type T27 = typeof a27;
3+
4+
var b: T27;
5+
var s: string = b;

0 commit comments

Comments
 (0)