Skip to content

Commit fbcdb69

Browse files
refactor(ecmascript_utils): split rewrite_ident_reference off JsxExt trait (#9417)
Move rewrite_ident_reference out of JsxExt into a new single-method trait JsxMemberExpressionObjectExt implemented only for JSXMemberExpressionObject — the only type that ever needed it. Drops the dead stub on JSXMemberExpression flagged as TODO #3 in #9416. --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent d59caa9 commit fbcdb69

3 files changed

Lines changed: 16 additions & 9 deletions

File tree

crates/rolldown/src/module_finalizers/impl_visit_mut.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use oxc::{
1616
use oxc_str::CompactStr;
1717
use rolldown_common::{ConcatenateWrappedModuleKind, SymbolRef, ThisExprReplaceKind, WrapKind};
1818
use rolldown_ecmascript::ToSourceString;
19-
use rolldown_ecmascript_utils::{ExpressionExt, JsxExt};
19+
use rolldown_ecmascript_utils::{ExpressionExt, JsxExt, JsxMemberExpressionObjectExt};
2020

2121
use crate::hmr::utils::HmrAstBuilder;
2222
use crate::module_finalizers::{KeepNameId, TraverseState};

crates/rolldown_ecmascript_utils/src/extensions/ast_ext/jsx.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use oxc::ast::ast::{
55

66
pub trait JsxExt<'ast> {
77
type AstKind;
8-
fn rewrite_ident_reference(&mut self, ident_ref: JSXMemberExpressionObject<'ast>);
98
fn from_ast(
109
member_expr: Self::AstKind,
1110
allocator: &'ast oxc::allocator::Allocator,
@@ -14,8 +13,11 @@ pub trait JsxExt<'ast> {
1413
Self: Sized;
1514
}
1615

17-
impl<'ast> JsxExt<'ast> for JSXMemberExpressionObject<'ast> {
18-
type AstKind = Expression<'ast>;
16+
pub trait JsxMemberExpressionObjectExt<'ast> {
17+
fn rewrite_ident_reference(&mut self, ident_ref: JSXMemberExpressionObject<'ast>);
18+
}
19+
20+
impl<'ast> JsxMemberExpressionObjectExt<'ast> for JSXMemberExpressionObject<'ast> {
1921
fn rewrite_ident_reference(&mut self, ident_ref: JSXMemberExpressionObject<'ast>) {
2022
let mut object = self;
2123
loop {
@@ -31,6 +33,10 @@ impl<'ast> JsxExt<'ast> for JSXMemberExpressionObject<'ast> {
3133
}
3234
}
3335
}
36+
}
37+
38+
impl<'ast> JsxExt<'ast> for JSXMemberExpressionObject<'ast> {
39+
type AstKind = Expression<'ast>;
3440

3541
fn from_ast(
3642
member_expr: Expression<'ast>,
@@ -52,9 +58,6 @@ impl<'ast> JsxExt<'ast> for JSXMemberExpressionObject<'ast> {
5258

5359
impl<'ast> JsxExt<'ast> for JSXMemberExpression<'ast> {
5460
type AstKind = StaticMemberExpression<'ast>;
55-
fn rewrite_ident_reference(&mut self, _ident_ref: JSXMemberExpressionObject<'ast>) {
56-
panic!("`JSXMemberExpression::rewrite_ident_reference` is not implemented yet")
57-
}
5861

5962
fn from_ast(
6063
member_expr: StaticMemberExpression<'ast>,

crates/rolldown_ecmascript_utils/src/lib.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@ mod source_utils;
66
pub use crate::{
77
ast_snippet::AstSnippet,
88
extensions::ast_ext::{
9-
binding_pattern_ext::BindingPatternExt, call_expression_ext::CallExpressionExt,
10-
expression_ext::ExpressionExt, function::FunctionExt, jsx::JsxExt, statement_ext::StatementExt,
9+
binding_pattern_ext::BindingPatternExt,
10+
call_expression_ext::CallExpressionExt,
11+
expression_ext::ExpressionExt,
12+
function::FunctionExt,
13+
jsx::{JsxExt, JsxMemberExpressionObjectExt},
14+
statement_ext::StatementExt,
1115
},
1216
scope::is_top_level,
1317
source_utils::contains_script_closing_tag,

0 commit comments

Comments
 (0)