From f11a44ea60c7ff0ed1a9d0122525eede6e5e74a8 Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 26 Mar 2026 17:44:36 -0300 Subject: [PATCH] Reorganising the logic of the sorting attributes function for less checks and smaller minified output --- src/slang-utils/sort-function-attributes.ts | 33 +++++++++++---------- 1 file changed, 17 insertions(+), 16 deletions(-) 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; }