From 2d63704d75c6f1bcce181608d9016fb9bcddf1c6 Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Tue, 18 Mar 2025 07:37:55 +0000 Subject: [PATCH] perf(ast): re-order `VariableDeclarationKind` variants (#9853) Micro-optimization. Re-order variants of `VariableDeclarationKind`. With this order: * Checking if it's a lexical declaration is `discriminant != 0` * Checking if it's const is `discriminant > 1`. The latter is a couple of instructions shorter than it was before (`discriminant == 1 || discriminant > 2`). --- crates/oxc_ast/src/ast/js.rs | 4 ++-- crates/oxc_ast/src/generated/derive_clone_in.rs | 2 +- crates/oxc_ast/src/generated/derive_estree.rs | 2 +- napi/parser/deserialize-js.js | 4 ++-- napi/parser/deserialize-ts.js | 4 ++-- npm/oxc-types/types.d.ts | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/oxc_ast/src/ast/js.rs b/crates/oxc_ast/src/ast/js.rs index 5bd1a4d4d45ed..0b273521c81d4 100644 --- a/crates/oxc_ast/src/ast/js.rs +++ b/crates/oxc_ast/src/ast/js.rs @@ -1170,8 +1170,8 @@ pub struct VariableDeclaration<'a> { #[generate_derive(CloneIn, ContentEq, ESTree)] pub enum VariableDeclarationKind { Var = 0, - Const = 1, - Let = 2, + Let = 1, + Const = 2, Using = 3, #[estree(rename = "await using")] AwaitUsing = 4, diff --git a/crates/oxc_ast/src/generated/derive_clone_in.rs b/crates/oxc_ast/src/generated/derive_clone_in.rs index 2c278922cd947..5122522eaf021 100644 --- a/crates/oxc_ast/src/generated/derive_clone_in.rs +++ b/crates/oxc_ast/src/generated/derive_clone_in.rs @@ -1314,8 +1314,8 @@ impl<'alloc> CloneIn<'alloc> for VariableDeclarationKind { fn clone_in(&self, _: &'alloc Allocator) -> Self::Cloned { match self { Self::Var => VariableDeclarationKind::Var, - Self::Const => VariableDeclarationKind::Const, Self::Let => VariableDeclarationKind::Let, + Self::Const => VariableDeclarationKind::Const, Self::Using => VariableDeclarationKind::Using, Self::AwaitUsing => VariableDeclarationKind::AwaitUsing, } diff --git a/crates/oxc_ast/src/generated/derive_estree.rs b/crates/oxc_ast/src/generated/derive_estree.rs index c70f4e153da9c..3bfe8693e0e73 100644 --- a/crates/oxc_ast/src/generated/derive_estree.rs +++ b/crates/oxc_ast/src/generated/derive_estree.rs @@ -913,8 +913,8 @@ impl ESTree for VariableDeclarationKind { fn serialize(&self, serializer: S) { match self { Self::Var => JsonSafeString("var").serialize(serializer), - Self::Const => JsonSafeString("const").serialize(serializer), Self::Let => JsonSafeString("let").serialize(serializer), + Self::Const => JsonSafeString("const").serialize(serializer), Self::Using => JsonSafeString("using").serialize(serializer), Self::AwaitUsing => JsonSafeString("await using").serialize(serializer), } diff --git a/napi/parser/deserialize-js.js b/napi/parser/deserialize-js.js index 00f9807d64d17..ced31857510fe 100644 --- a/napi/parser/deserialize-js.js +++ b/napi/parser/deserialize-js.js @@ -2919,9 +2919,9 @@ function deserializeVariableDeclarationKind(pos) { case 0: return 'var'; case 1: - return 'const'; - case 2: return 'let'; + case 2: + return 'const'; case 3: return 'using'; case 4: diff --git a/napi/parser/deserialize-ts.js b/napi/parser/deserialize-ts.js index ade36a77d62d9..bcbd207920306 100644 --- a/napi/parser/deserialize-ts.js +++ b/napi/parser/deserialize-ts.js @@ -2974,9 +2974,9 @@ function deserializeVariableDeclarationKind(pos) { case 0: return 'var'; case 1: - return 'const'; - case 2: return 'let'; + case 2: + return 'const'; case 3: return 'using'; case 4: diff --git a/npm/oxc-types/types.d.ts b/npm/oxc-types/types.d.ts index ac10151b86b4b..347cdd15d110c 100644 --- a/npm/oxc-types/types.d.ts +++ b/npm/oxc-types/types.d.ts @@ -368,7 +368,7 @@ export interface VariableDeclaration extends Span { declare: boolean; } -export type VariableDeclarationKind = 'var' | 'const' | 'let' | 'using' | 'await using'; +export type VariableDeclarationKind = 'var' | 'let' | 'const' | 'using' | 'await using'; export interface VariableDeclarator extends Span { type: 'VariableDeclarator';