diff --git a/src/slang-utils/sort-function-attributes.ts b/src/slang-utils/sort-function-attributes.ts index 0547c684d..19e63db3a 100644 --- a/src/slang-utils/sort-function-attributes.ts +++ b/src/slang-utils/sort-function-attributes.ts @@ -19,9 +19,6 @@ export function sortFunctionAttributes( const aIsString = aVariant instanceof TerminalNode; const bIsString = bVariant instanceof TerminalNode; - if (aIsString && !bIsString) return -1; - if (bIsString && !aIsString) return 1; - // Both are strings if (aIsString && bIsString) { // Visibility First @@ -31,21 +28,25 @@ export function sortFunctionAttributes( if (mutabilityKeyWords.has(aVariant.value)) return -1; if (mutabilityKeyWords.has(bVariant.value)) return 1; // Virtual keyword last + return 0; } + + // Only one is a string + if (aIsString) return -1; + if (bIsString) return 1; + // Both are nodes - if (!aIsString && !bIsString) { - // OverrideSpecifiers before ModifierInvocation - if ( - aVariant.kind === NonterminalKind.OverrideSpecifier && - bVariant.kind === NonterminalKind.ModifierInvocation - ) - return -1; - if ( - bVariant.kind === NonterminalKind.OverrideSpecifier && - aVariant.kind === NonterminalKind.ModifierInvocation - ) - return 1; - } + // OverrideSpecifiers before ModifierInvocation + if ( + aVariant.kind === NonterminalKind.OverrideSpecifier && + bVariant.kind === NonterminalKind.ModifierInvocation + ) + return -1; + if ( + bVariant.kind === NonterminalKind.OverrideSpecifier && + aVariant.kind === NonterminalKind.ModifierInvocation + ) + return 1; return 0; }