Skip to content

Commit 275c31f

Browse files
committed
tests
1 parent ddb91ff commit 275c31f

5 files changed

Lines changed: 394 additions & 0 deletions
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
//// [tests/cases/compiler/stableTypeOrdering.ts] ////
2+
3+
=== stableTypeOrdering.ts ===
4+
class Message { value: string = ""; }
5+
>Message : Symbol(Message, Decl(stableTypeOrdering.ts, 0, 0))
6+
>value : Symbol(Message.value, Decl(stableTypeOrdering.ts, 0, 15))
7+
8+
function takeMessageOrArray(message: Message | Message[]) { return message; }
9+
>takeMessageOrArray : Symbol(takeMessageOrArray, Decl(stableTypeOrdering.ts, 0, 37))
10+
>message : Symbol(message, Decl(stableTypeOrdering.ts, 2, 28))
11+
>Message : Symbol(Message, Decl(stableTypeOrdering.ts, 0, 0))
12+
>Message : Symbol(Message, Decl(stableTypeOrdering.ts, 0, 0))
13+
>message : Symbol(message, Decl(stableTypeOrdering.ts, 2, 28))
14+
15+
const result1 = takeMessageOrArray(null!);
16+
>result1 : Symbol(result1, Decl(stableTypeOrdering.ts, 3, 5))
17+
>takeMessageOrArray : Symbol(takeMessageOrArray, Decl(stableTypeOrdering.ts, 0, 37))
18+
19+
function checkType(x: string | number | boolean) {
20+
>checkType : Symbol(checkType, Decl(stableTypeOrdering.ts, 3, 42))
21+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 5, 19))
22+
23+
const t = typeof x;
24+
>t : Symbol(t, Decl(stableTypeOrdering.ts, 6, 9))
25+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 5, 19))
26+
27+
return t;
28+
>t : Symbol(t, Decl(stableTypeOrdering.ts, 6, 9))
29+
}
30+
31+
function mixedUnion(x: string | number[] | { a: number }) {
32+
>mixedUnion : Symbol(mixedUnion, Decl(stableTypeOrdering.ts, 8, 1))
33+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 10, 20))
34+
>a : Symbol(a, Decl(stableTypeOrdering.ts, 10, 44))
35+
36+
return x;
37+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 10, 20))
38+
}
39+
40+
enum Color { Red, Green, Blue }
41+
>Color : Symbol(Color, Decl(stableTypeOrdering.ts, 12, 1))
42+
>Red : Symbol(Color.Red, Decl(stableTypeOrdering.ts, 14, 12))
43+
>Green : Symbol(Color.Green, Decl(stableTypeOrdering.ts, 14, 17))
44+
>Blue : Symbol(Color.Blue, Decl(stableTypeOrdering.ts, 14, 24))
45+
46+
function enumUnion(x: Color | string | string[]) {
47+
>enumUnion : Symbol(enumUnion, Decl(stableTypeOrdering.ts, 14, 31))
48+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 15, 19))
49+
>Color : Symbol(Color, Decl(stableTypeOrdering.ts, 12, 1))
50+
51+
return x;
52+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 15, 19))
53+
}
54+
55+
type Named = { name: string };
56+
>Named : Symbol(Named, Decl(stableTypeOrdering.ts, 17, 1))
57+
>name : Symbol(name, Decl(stableTypeOrdering.ts, 19, 14))
58+
59+
type Aged = { age: number };
60+
>Aged : Symbol(Aged, Decl(stableTypeOrdering.ts, 19, 30))
61+
>age : Symbol(age, Decl(stableTypeOrdering.ts, 20, 13))
62+
63+
type Person = Named & Aged;
64+
>Person : Symbol(Person, Decl(stableTypeOrdering.ts, 20, 28))
65+
>Named : Symbol(Named, Decl(stableTypeOrdering.ts, 17, 1))
66+
>Aged : Symbol(Aged, Decl(stableTypeOrdering.ts, 19, 30))
67+
68+
declare const person: Person | null;
69+
>person : Symbol(person, Decl(stableTypeOrdering.ts, 22, 13))
70+
>Person : Symbol(Person, Decl(stableTypeOrdering.ts, 20, 28))
71+
72+
const p = person;
73+
>p : Symbol(p, Decl(stableTypeOrdering.ts, 23, 5))
74+
>person : Symbol(person, Decl(stableTypeOrdering.ts, 22, 13))
75+
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
//// [tests/cases/compiler/stableTypeOrdering.ts] ////
2+
3+
=== stableTypeOrdering.ts ===
4+
class Message { value: string = ""; }
5+
>Message : Message
6+
> : ^^^^^^^
7+
>value : string
8+
> : ^^^^^^
9+
>"" : ""
10+
> : ^^
11+
12+
function takeMessageOrArray(message: Message | Message[]) { return message; }
13+
>takeMessageOrArray : (message: Message | Message[]) => Message | Message[]
14+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^
15+
>message : Message | Message[]
16+
> : ^^^^^^^^^^^^^^^^^^^
17+
>message : Message | Message[]
18+
> : ^^^^^^^^^^^^^^^^^^^
19+
20+
const result1 = takeMessageOrArray(null!);
21+
>result1 : Message | Message[]
22+
> : ^^^^^^^^^^^^^^^^^^^
23+
>takeMessageOrArray(null!) : Message | Message[]
24+
> : ^^^^^^^^^^^^^^^^^^^
25+
>takeMessageOrArray : (message: Message | Message[]) => Message | Message[]
26+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^
27+
>null! : never
28+
> : ^^^^^
29+
30+
function checkType(x: string | number | boolean) {
31+
>checkType : (x: string | number | boolean) => "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
32+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33+
>x : string | number | boolean
34+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
35+
36+
const t = typeof x;
37+
>t : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
38+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39+
>typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
40+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41+
>x : string | number | boolean
42+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
43+
44+
return t;
45+
>t : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
46+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47+
}
48+
49+
function mixedUnion(x: string | number[] | { a: number }) {
50+
>mixedUnion : (x: string | number[] | { a: number; }) => string | { a: number; } | number[]
51+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
52+
>x : string | { a: number; } | number[]
53+
> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
54+
>a : number
55+
> : ^^^^^^
56+
57+
return x;
58+
>x : string | { a: number; } | number[]
59+
> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
60+
}
61+
62+
enum Color { Red, Green, Blue }
63+
>Color : Color
64+
> : ^^^^^
65+
>Red : Color.Red
66+
> : ^^^^^^^^^
67+
>Green : Color.Green
68+
> : ^^^^^^^^^^^
69+
>Blue : Color.Blue
70+
> : ^^^^^^^^^^
71+
72+
function enumUnion(x: Color | string | string[]) {
73+
>enumUnion : (x: Color | string | string[]) => string | Color | string[]
74+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
75+
>x : string | Color | string[]
76+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
77+
78+
return x;
79+
>x : string | Color | string[]
80+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
81+
}
82+
83+
type Named = { name: string };
84+
>Named : Named
85+
> : ^^^^^
86+
>name : string
87+
> : ^^^^^^
88+
89+
type Aged = { age: number };
90+
>Aged : Aged
91+
> : ^^^^
92+
>age : number
93+
> : ^^^^^^
94+
95+
type Person = Named & Aged;
96+
>Person : Person
97+
> : ^^^^^^
98+
99+
declare const person: Person | null;
100+
>person : Person | null
101+
> : ^^^^^^^^^^^^^
102+
103+
const p = person;
104+
>p : Person | null
105+
> : ^^^^^^^^^^^^^
106+
>person : Person | null
107+
> : ^^^^^^^^^^^^^
108+
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
//// [tests/cases/compiler/stableTypeOrdering.ts] ////
2+
3+
=== stableTypeOrdering.ts ===
4+
class Message { value: string = ""; }
5+
>Message : Symbol(Message, Decl(stableTypeOrdering.ts, 0, 0))
6+
>value : Symbol(Message.value, Decl(stableTypeOrdering.ts, 0, 15))
7+
8+
function takeMessageOrArray(message: Message | Message[]) { return message; }
9+
>takeMessageOrArray : Symbol(takeMessageOrArray, Decl(stableTypeOrdering.ts, 0, 37))
10+
>message : Symbol(message, Decl(stableTypeOrdering.ts, 2, 28))
11+
>Message : Symbol(Message, Decl(stableTypeOrdering.ts, 0, 0))
12+
>Message : Symbol(Message, Decl(stableTypeOrdering.ts, 0, 0))
13+
>message : Symbol(message, Decl(stableTypeOrdering.ts, 2, 28))
14+
15+
const result1 = takeMessageOrArray(null!);
16+
>result1 : Symbol(result1, Decl(stableTypeOrdering.ts, 3, 5))
17+
>takeMessageOrArray : Symbol(takeMessageOrArray, Decl(stableTypeOrdering.ts, 0, 37))
18+
19+
function checkType(x: string | number | boolean) {
20+
>checkType : Symbol(checkType, Decl(stableTypeOrdering.ts, 3, 42))
21+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 5, 19))
22+
23+
const t = typeof x;
24+
>t : Symbol(t, Decl(stableTypeOrdering.ts, 6, 9))
25+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 5, 19))
26+
27+
return t;
28+
>t : Symbol(t, Decl(stableTypeOrdering.ts, 6, 9))
29+
}
30+
31+
function mixedUnion(x: string | number[] | { a: number }) {
32+
>mixedUnion : Symbol(mixedUnion, Decl(stableTypeOrdering.ts, 8, 1))
33+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 10, 20))
34+
>a : Symbol(a, Decl(stableTypeOrdering.ts, 10, 44))
35+
36+
return x;
37+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 10, 20))
38+
}
39+
40+
enum Color { Red, Green, Blue }
41+
>Color : Symbol(Color, Decl(stableTypeOrdering.ts, 12, 1))
42+
>Red : Symbol(Color.Red, Decl(stableTypeOrdering.ts, 14, 12))
43+
>Green : Symbol(Color.Green, Decl(stableTypeOrdering.ts, 14, 17))
44+
>Blue : Symbol(Color.Blue, Decl(stableTypeOrdering.ts, 14, 24))
45+
46+
function enumUnion(x: Color | string | string[]) {
47+
>enumUnion : Symbol(enumUnion, Decl(stableTypeOrdering.ts, 14, 31))
48+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 15, 19))
49+
>Color : Symbol(Color, Decl(stableTypeOrdering.ts, 12, 1))
50+
51+
return x;
52+
>x : Symbol(x, Decl(stableTypeOrdering.ts, 15, 19))
53+
}
54+
55+
type Named = { name: string };
56+
>Named : Symbol(Named, Decl(stableTypeOrdering.ts, 17, 1))
57+
>name : Symbol(name, Decl(stableTypeOrdering.ts, 19, 14))
58+
59+
type Aged = { age: number };
60+
>Aged : Symbol(Aged, Decl(stableTypeOrdering.ts, 19, 30))
61+
>age : Symbol(age, Decl(stableTypeOrdering.ts, 20, 13))
62+
63+
type Person = Named & Aged;
64+
>Person : Symbol(Person, Decl(stableTypeOrdering.ts, 20, 28))
65+
>Named : Symbol(Named, Decl(stableTypeOrdering.ts, 17, 1))
66+
>Aged : Symbol(Aged, Decl(stableTypeOrdering.ts, 19, 30))
67+
68+
declare const person: Person | null;
69+
>person : Symbol(person, Decl(stableTypeOrdering.ts, 22, 13))
70+
>Person : Symbol(Person, Decl(stableTypeOrdering.ts, 20, 28))
71+
72+
const p = person;
73+
>p : Symbol(p, Decl(stableTypeOrdering.ts, 23, 5))
74+
>person : Symbol(person, Decl(stableTypeOrdering.ts, 22, 13))
75+
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
//// [tests/cases/compiler/stableTypeOrdering.ts] ////
2+
3+
=== stableTypeOrdering.ts ===
4+
class Message { value: string = ""; }
5+
>Message : Message
6+
> : ^^^^^^^
7+
>value : string
8+
> : ^^^^^^
9+
>"" : ""
10+
> : ^^
11+
12+
function takeMessageOrArray(message: Message | Message[]) { return message; }
13+
>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message
14+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^
15+
>message : Message[] | Message
16+
> : ^^^^^^^^^^^^^^^^^^^
17+
>message : Message[] | Message
18+
> : ^^^^^^^^^^^^^^^^^^^
19+
20+
const result1 = takeMessageOrArray(null!);
21+
>result1 : Message[] | Message
22+
> : ^^^^^^^^^^^^^^^^^^^
23+
>takeMessageOrArray(null!) : Message[] | Message
24+
> : ^^^^^^^^^^^^^^^^^^^
25+
>takeMessageOrArray : (message: Message | Message[]) => Message[] | Message
26+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^
27+
>null! : never
28+
> : ^^^^^
29+
30+
function checkType(x: string | number | boolean) {
31+
>checkType : (x: string | number | boolean) => "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined"
32+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33+
>x : string | number | boolean
34+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
35+
36+
const t = typeof x;
37+
>t : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined"
38+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39+
>typeof x : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined"
40+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41+
>x : string | number | boolean
42+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
43+
44+
return t;
45+
>t : "bigint" | "boolean" | "function" | "number" | "object" | "string" | "symbol" | "undefined"
46+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47+
}
48+
49+
function mixedUnion(x: string | number[] | { a: number }) {
50+
>mixedUnion : (x: string | number[] | { a: number; }) => string | number[] | { a: number; }
51+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^
52+
>x : string | number[] | { a: number; }
53+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^
54+
>a : number
55+
> : ^^^^^^
56+
57+
return x;
58+
>x : string | number[] | { a: number; }
59+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^
60+
}
61+
62+
enum Color { Red, Green, Blue }
63+
>Color : Color
64+
> : ^^^^^
65+
>Red : Color.Red
66+
> : ^^^^^^^^^
67+
>Green : Color.Green
68+
> : ^^^^^^^^^^^
69+
>Blue : Color.Blue
70+
> : ^^^^^^^^^^
71+
72+
function enumUnion(x: Color | string | string[]) {
73+
>enumUnion : (x: Color | string | string[]) => string | string[] | Color
74+
> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
75+
>x : string | string[] | Color
76+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
77+
78+
return x;
79+
>x : string | string[] | Color
80+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^
81+
}
82+
83+
type Named = { name: string };
84+
>Named : Named
85+
> : ^^^^^
86+
>name : string
87+
> : ^^^^^^
88+
89+
type Aged = { age: number };
90+
>Aged : Aged
91+
> : ^^^^
92+
>age : number
93+
> : ^^^^^^
94+
95+
type Person = Named & Aged;
96+
>Person : Person
97+
> : ^^^^^^
98+
99+
declare const person: Person | null;
100+
>person : Person | null
101+
> : ^^^^^^^^^^^^^
102+
103+
const p = person;
104+
>p : Person | null
105+
> : ^^^^^^^^^^^^^
106+
>person : Person | null
107+
> : ^^^^^^^^^^^^^
108+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// @stableTypeOrdering: true,false
2+
// @noEmit: true
3+
// @strict: true
4+
5+
class Message { value: string = ""; }
6+
7+
function takeMessageOrArray(message: Message | Message[]) { return message; }
8+
const result1 = takeMessageOrArray(null!);
9+
10+
function checkType(x: string | number | boolean) {
11+
const t = typeof x;
12+
return t;
13+
}
14+
15+
function mixedUnion(x: string | number[] | { a: number }) {
16+
return x;
17+
}
18+
19+
enum Color { Red, Green, Blue }
20+
function enumUnion(x: Color | string | string[]) {
21+
return x;
22+
}
23+
24+
type Named = { name: string };
25+
type Aged = { age: number };
26+
type Person = Named & Aged;
27+
declare const person: Person | null;
28+
const p = person;

0 commit comments

Comments
 (0)