Skip to content

Commit 58f10b8

Browse files
authored
Reorganising the logic of the sorting attributes function for less checks and smaller minified output (#1484)
1 parent 638ced5 commit 58f10b8

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

src/slang-utils/sort-function-attributes.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ export function sortFunctionAttributes(
1919
const aIsString = aVariant instanceof TerminalNode;
2020
const bIsString = bVariant instanceof TerminalNode;
2121

22-
if (aIsString && !bIsString) return -1;
23-
if (bIsString && !aIsString) return 1;
24-
2522
// Both are strings
2623
if (aIsString && bIsString) {
2724
// Visibility First
@@ -31,21 +28,25 @@ export function sortFunctionAttributes(
3128
if (mutabilityKeyWords.has(aVariant.value)) return -1;
3229
if (mutabilityKeyWords.has(bVariant.value)) return 1;
3330
// Virtual keyword last
31+
return 0;
3432
}
33+
34+
// Only one is a string
35+
if (aIsString) return -1;
36+
if (bIsString) return 1;
37+
3538
// Both are nodes
36-
if (!aIsString && !bIsString) {
37-
// OverrideSpecifiers before ModifierInvocation
38-
if (
39-
aVariant.kind === NonterminalKind.OverrideSpecifier &&
40-
bVariant.kind === NonterminalKind.ModifierInvocation
41-
)
42-
return -1;
43-
if (
44-
bVariant.kind === NonterminalKind.OverrideSpecifier &&
45-
aVariant.kind === NonterminalKind.ModifierInvocation
46-
)
47-
return 1;
48-
}
39+
// OverrideSpecifiers before ModifierInvocation
40+
if (
41+
aVariant.kind === NonterminalKind.OverrideSpecifier &&
42+
bVariant.kind === NonterminalKind.ModifierInvocation
43+
)
44+
return -1;
45+
if (
46+
bVariant.kind === NonterminalKind.OverrideSpecifier &&
47+
aVariant.kind === NonterminalKind.ModifierInvocation
48+
)
49+
return 1;
4950

5051
return 0;
5152
}

0 commit comments

Comments
 (0)