From 475266dde3268a3fe6aa42cd30eddd1284076d7f Mon Sep 17 00:00:00 2001 From: DonIsaac <22823424+DonIsaac@users.noreply.github.com> Date: Wed, 7 Aug 2024 03:53:39 +0000 Subject: [PATCH] refactor(ast): use correct lifetimes for name-related methods (#4712) --- crates/oxc_ast/src/ast_impl/js.rs | 10 +++++----- crates/oxc_ast/src/ast_impl/ts.rs | 8 ++++---- crates/oxc_isolated_declarations/src/class.rs | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/oxc_ast/src/ast_impl/js.rs b/crates/oxc_ast/src/ast_impl/js.rs index 842b054f6d991..25250be91322c 100644 --- a/crates/oxc_ast/src/ast_impl/js.rs +++ b/crates/oxc_ast/src/ast_impl/js.rs @@ -452,7 +452,7 @@ impl<'a> MemberExpression<'a> { } } - pub fn static_property_name(&self) -> Option<&str> { + pub fn static_property_name(&self) -> Option<&'a str> { match self { MemberExpression::ComputedMemberExpression(expr) => { expr.static_property_name().map(|name| name.as_str()) @@ -462,13 +462,13 @@ impl<'a> MemberExpression<'a> { } } - pub fn static_property_info(&self) -> Option<(Span, &str)> { + pub fn static_property_info(&self) -> Option<(Span, &'a str)> { match self { MemberExpression::ComputedMemberExpression(expr) => match &expr.expression { - Expression::StringLiteral(lit) => Some((lit.span, &lit.value)), + Expression::StringLiteral(lit) => Some((lit.span, lit.value.as_str())), Expression::TemplateLiteral(lit) => { if lit.expressions.is_empty() && lit.quasis.len() == 1 { - Some((lit.span, &lit.quasis[0].value.raw)) + Some((lit.span, lit.quasis[0].value.raw.as_str())) } else { None } @@ -476,7 +476,7 @@ impl<'a> MemberExpression<'a> { _ => None, }, MemberExpression::StaticMemberExpression(expr) => { - Some((expr.property.span, &expr.property.name)) + Some((expr.property.span, expr.property.name.as_str())) } MemberExpression::PrivateFieldExpression(_) => None, } diff --git a/crates/oxc_ast/src/ast_impl/ts.rs b/crates/oxc_ast/src/ast_impl/ts.rs index 2a0f8e646e433..03b6884097716 100644 --- a/crates/oxc_ast/src/ast_impl/ts.rs +++ b/crates/oxc_ast/src/ast_impl/ts.rs @@ -221,20 +221,20 @@ impl<'a> TSModuleReference<'a> { impl<'a> Decorator<'a> { /// Get the name of the decorator /// ```ts + /// // The name of the decorator is `decorator` /// @decorator /// @decorator.a.b /// @decorator(xx) /// @decorator.a.b(xx) - /// The name of the decorator is `decorator` /// ``` - pub fn name(&self) -> Option<&str> { + pub fn name(&self) -> Option<&'a str> { match &self.expression { - Expression::Identifier(ident) => Some(&ident.name), + Expression::Identifier(ident) => Some(ident.name.as_str()), expr @ match_member_expression!(Expression) => { expr.to_member_expression().static_property_name() } Expression::CallExpression(call) => { - call.callee.get_member_expr().map(|member| member.static_property_name())? + call.callee.get_member_expr().and_then(MemberExpression::static_property_name) } _ => None, } diff --git a/crates/oxc_isolated_declarations/src/class.rs b/crates/oxc_isolated_declarations/src/class.rs index 517dfed89b14a..379c448c1ab75 100644 --- a/crates/oxc_isolated_declarations/src/class.rs +++ b/crates/oxc_isolated_declarations/src/class.rs @@ -243,7 +243,7 @@ impl<'a> IsolatedDeclarations<'a> { for (index, param) in function.params.items.iter().enumerate() { if param.accessibility.is_some() || param.readonly { let type_annotation = - if param.accessibility.is_some_and(oxc_ast::ast::TSAccessibility::is_private) { + if param.accessibility.is_some_and(TSAccessibility::is_private) { None } else { // transformed params will definitely have type annotation @@ -271,7 +271,7 @@ impl<'a> IsolatedDeclarations<'a> { for element in &decl.body.body { if let ClassElement::MethodDefinition(method) = element { if method.key.is_private_identifier() - || method.accessibility.is_some_and(oxc_ast::ast::TSAccessibility::is_private) + || method.accessibility.is_some_and(TSAccessibility::is_private) || (method.computed && !self.is_literal_key(&method.key)) { continue; @@ -360,7 +360,7 @@ impl<'a> IsolatedDeclarations<'a> { if self.report_property_key(&method.key, method.computed) { continue; } - if method.accessibility.is_some_and(oxc_ast::ast::TSAccessibility::is_private) { + if method.accessibility.is_some_and(TSAccessibility::is_private) { elements.push(self.transform_private_modifier_method(method)); continue; }