Skip to content

Commit 950404e

Browse files
committed
Update to match tsgo PR 587
1 parent c234601 commit 950404e

File tree

6 files changed

+28
-26
lines changed

6 files changed

+28
-26
lines changed

src/compiler/checker.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -52955,7 +52955,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
5295552955
return c;
5295652956
}
5295752957
}
52958-
else if (t1.flags & (TypeFlags.EnumLiteral | TypeFlags.UniqueESSymbol)) {
52958+
else if (t1.flags & (TypeFlags.Enum | TypeFlags.EnumLiteral | TypeFlags.UniqueESSymbol)) {
5295952959
// Enum members are ordered by their symbol (and thus their declaration order).
5296052960
const c = compareSymbols(t1.symbol, t2.symbol);
5296152961
if (c !== 0) {
@@ -53070,9 +53070,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
5307053070
}
5307153071

5307253072
function getSortOrderFlags(t: Type): number {
53073-
// We want enum literal and computed values to be ordered by their declarations, so we merge TypeFlagsEnum into
53074-
// TypeFlagsEnumLiteral and clear TypeFlagsEnum.
53075-
return (t.flags & TypeFlags.Enum) >> 1 | t.flags & ~TypeFlags.Enum;
53073+
// Return TypeFlagsEnum for all enum-like unit types (they'll be sorted by their symbols)
53074+
if (t.flags & (TypeFlags.EnumLiteral | TypeFlags.Enum) && !(t.flags & TypeFlags.Union)) {
53075+
return TypeFlags.Enum;
53076+
}
53077+
return t.flags;
5307653078
}
5307753079

5307853080
function compareTypeNames(t1: Type, t2: Type): number {

tests/baselines/reference/enumBasics.types

+2-2
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@ enum E9 {
250250
// (refer to .js to validate)
251251
// Enum constant members are propagated
252252
var doNotPropagate = [
253-
>doNotPropagate : (E8 | E7 | E3 | E4)[]
253+
>doNotPropagate : (E7 | E8 | E3 | E4)[]
254254
> : ^^^^^^^^^^^^^^^^^^^^^
255-
>[ E8.B, E7.A, E4.Z, E3.X, E3.Y, E3.Z] : (E8 | E7 | E3 | E4)[]
255+
>[ E8.B, E7.A, E4.Z, E3.X, E3.Y, E3.Z] : (E7 | E8 | E3 | E4)[]
256256
> : ^^^^^^^^^^^^^^^^^^^^^
257257

258258
E8.B, E7.A, E4.Z, E3.X, E3.Y, E3.Z

tests/baselines/reference/unknownType2.types

+4-4
Original file line numberDiff line numberDiff line change
@@ -1048,15 +1048,15 @@ function notNotEquals(u: unknown) {
10481048

10491049
else {
10501050
const aOrB: NumberEnum.A | NumberEnum.B | StringEnum.A = u;
1051-
>aOrB : StringEnum.A | NumberEnum.A | NumberEnum.B
1051+
>aOrB : NumberEnum.A | NumberEnum.B | StringEnum.A
10521052
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10531053
>NumberEnum : any
10541054
> : ^^^
10551055
>NumberEnum : any
10561056
> : ^^^
10571057
>StringEnum : any
10581058
> : ^^^
1059-
>u : StringEnum.A | NumberEnum.A | NumberEnum.B
1059+
>u : NumberEnum.A | NumberEnum.B | StringEnum.A
10601060
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10611061
}
10621062

@@ -1103,15 +1103,15 @@ function notNotEquals(u: unknown) {
11031103

11041104
else {
11051105
const aOrB: NumberEnum.A | NumberEnum.B | StringEnum.A = u;
1106-
>aOrB : StringEnum.A | NumberEnum.A | NumberEnum.B
1106+
>aOrB : NumberEnum.A | NumberEnum.B | StringEnum.A
11071107
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
11081108
>NumberEnum : any
11091109
> : ^^^
11101110
>NumberEnum : any
11111111
> : ^^^
11121112
>StringEnum : any
11131113
> : ^^^
1114-
>u : StringEnum.A | NumberEnum.A | NumberEnum.B
1114+
>u : NumberEnum.A | NumberEnum.B | StringEnum.A
11151115
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
11161116
}
11171117
}

tests/cases/fourslash/exhaustiveCaseCompletions1.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ verify.completions(
4040
sortText: completion.SortText.GlobalsOrKeywords,
4141
insertText:
4242
`case 1:
43-
case E.B:
44-
case E.A:`,
43+
case E.A:
44+
case E.B:`,
4545
},
4646
],
4747
preferences: {
@@ -53,13 +53,13 @@ case E.A:`,
5353
isNewIdentifierLocation: false,
5454
includes: [
5555
{
56-
name: "case E.B: ...",
56+
name: "case E.A: ...",
5757
source: completion.CompletionSource.SwitchCases,
5858
sortText: completion.SortText.GlobalsOrKeywords,
5959
insertText:
60-
`case E.B:
61-
case E.C:
62-
case E.A:`,
60+
`case E.A:
61+
case E.B:
62+
case E.C:`,
6363
},
6464
],
6565
preferences: {

tests/cases/fourslash/exhaustiveCaseCompletions2.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ verify.completions(
3636
sortText: completion.SortText.GlobalsOrKeywords,
3737
insertText:
3838
`case 1:
39-
case E.B:
40-
case E.A:`,
39+
case E.A:
40+
case E.B:`,
4141
hasAction: true,
4242
},
4343
],
@@ -50,13 +50,13 @@ case E.A:`,
5050
isNewIdentifierLocation: false,
5151
includes: [
5252
{
53-
name: "case d.E.B: ...",
53+
name: "case d.E.A: ...",
5454
source: completion.CompletionSource.SwitchCases,
5555
sortText: completion.SortText.GlobalsOrKeywords,
5656
insertText:
57-
`case d.E.B:
58-
case d.E.C:
59-
case d.E.A:`,
57+
`case d.E.A:
58+
case d.E.B:
59+
case d.E.C:`,
6060
},
6161
],
6262
preferences: {

tests/cases/fourslash/exhaustiveCaseCompletions3.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535
//// }
3636

3737
const exhaustiveCaseCompletion = {
38-
name: "case E.B: ...",
38+
name: "case E.A: ...",
3939
source: completion.CompletionSource.SwitchCases,
4040
sortText: completion.SortText.GlobalsOrKeywords,
4141
insertText:
42-
`case E.B:
43-
case E.C:
44-
case E.A:`,
42+
`case E.A:
43+
case E.B:
44+
case E.C:`,
4545
};
4646

4747
verify.completions(

0 commit comments

Comments
 (0)