Skip to content

Commit 0730997

Browse files
committed
Show all matching enum flags in debug formatter
1 parent 07d3a2e commit 0730997

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/compiler/debug.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ namespace ts {
9595
export function formatEnum(value = 0, enumObject: any, isFlags?: boolean) {
9696
const members = getEnumMembers(enumObject);
9797
if (value === 0) {
98-
return members.length > 0 && members[0][0] === 0 ? members[0][1] : "0";
98+
return members.length > 0 && members[0][0] === 0 ? members[0][1].join("|") : "0";
9999
}
100100
if (isFlags) {
101101
let result = "";
@@ -104,7 +104,7 @@ namespace ts {
104104
const [enumValue, enumName] = members[i];
105105
if (enumValue !== 0 && (remainingFlags & enumValue) === enumValue) {
106106
remainingFlags &= ~enumValue;
107-
result = `${enumName}${result ? "|" : ""}${result}`;
107+
result = `${enumName.join("|")}${result ? "|" : ""}${result}`;
108108
}
109109
}
110110
if (remainingFlags === 0) {
@@ -114,23 +114,25 @@ namespace ts {
114114
else {
115115
for (const [enumValue, enumName] of members) {
116116
if (enumValue === value) {
117-
return enumName;
117+
return enumName[0];
118118
}
119119
}
120120
}
121121
return value.toString();
122122
}
123123

124124
function getEnumMembers(enumObject: any) {
125-
const result: [number, string][] = [];
125+
const result = createMultiMap<string>();
126126
for (const name in enumObject) {
127127
const value = enumObject[name];
128128
if (typeof value === "number") {
129-
result.push([value, name]);
129+
result.add("" + value, name);
130130
}
131131
}
132132

133-
return stableSort<[number, string]>(result, (x, y) => compareValues(x[0], y[0]));
133+
return stableSort(
134+
map(arrayFrom(result.entries()), ([x, y]) => [+x, y] as const),
135+
(x, y) => compareValues(x[0], y[0]));
134136
}
135137

136138
export function formatSyntaxKind(kind: SyntaxKind | undefined): string {

0 commit comments

Comments
 (0)