Skip to content

Commit

Permalink
Apply ast_node macro to more types
Browse files Browse the repository at this point in the history
  • Loading branch information
overlookmotel committed Apr 24, 2024
1 parent 47a2feb commit 567262a
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 10 deletions.
7 changes: 5 additions & 2 deletions crates/oxc_ast/src/ast/js.rs
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,6 @@ impl<'a> Expression<'a> {
}

/// Identifier Name
#[ast_node]
#[derive(Debug, Clone, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[cfg_attr(feature = "serialize", serde(tag = "type", rename = "Identifier"))]
Expand Down Expand Up @@ -421,6 +420,7 @@ pub struct LabelIdentifier<'a> {
}

/// This Expression
#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand Down Expand Up @@ -466,6 +466,7 @@ impl<'a> ArrayExpressionElement<'a> {

/// Array Expression Elision Element
/// Serialized as `null` in JSON AST. See `serialize.rs`.
#[ast_node]
#[derive(Debug, Clone, Hash)]
pub struct Elision {
pub span: Span,
Expand Down Expand Up @@ -649,7 +650,6 @@ pub struct TemplateElement<'a> {
}

/// See [template-strings-cooked-vs-raw](https://exploringjs.com/impatient-js/ch_template-literals.html#template-strings-cooked-vs-raw)
#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub struct TemplateElementValue<'a> {
Expand Down Expand Up @@ -1226,6 +1226,7 @@ pub struct SequenceExpression<'a> {
pub expressions: Vec<'a, Expression<'a>>,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand Down Expand Up @@ -1484,6 +1485,7 @@ pub struct UsingDeclaration<'a> {
}

/// Empty Statement
#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand Down Expand Up @@ -1756,6 +1758,7 @@ pub struct CatchParameter<'a> {
}

/// Debugger Statement
#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand Down
5 changes: 2 additions & 3 deletions crates/oxc_ast/src/ast/literal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ use serde::Serialize;
#[cfg(feature = "serialize")]
use tsify::Tsify;

use crate::traverse::ast::*;

#[ast_node]
#[derive(Debug, Clone, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -42,6 +41,7 @@ impl BooleanLiteral {
}
}

#[ast_node]
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand Down Expand Up @@ -146,7 +146,6 @@ pub struct RegExpLiteral<'a> {
pub regex: RegExp<'a>,
}

#[ast_node]
#[derive(Debug, Clone, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub struct RegExp<'a> {
Expand Down
15 changes: 14 additions & 1 deletion crates/oxc_ast/src/ast/ts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@ pub enum TSTupleElement<'a> {
TSNamedTupleMember(Box<'a, TSNamedTupleMember<'a>>),
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -333,6 +334,7 @@ pub struct TSAnyKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -341,6 +343,7 @@ pub struct TSStringKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -349,6 +352,7 @@ pub struct TSBooleanKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -357,6 +361,7 @@ pub struct TSNumberKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -365,6 +370,7 @@ pub struct TSNeverKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -373,6 +379,7 @@ pub struct TSUnknownKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -381,6 +388,7 @@ pub struct TSNullKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -389,6 +397,7 @@ pub struct TSUndefinedKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -397,6 +406,7 @@ pub struct TSVoidKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -405,6 +415,7 @@ pub struct TSSymbolKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -413,6 +424,7 @@ pub struct TSThisType {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand All @@ -421,6 +433,7 @@ pub struct TSObjectKeyword {
pub span: Span,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type"))]
Expand Down Expand Up @@ -1093,7 +1106,6 @@ pub struct Modifier {
pub kind: ModifierKind,
}

#[ast_node]
#[derive(Debug, Default, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(transparent))]
Expand Down Expand Up @@ -1199,6 +1211,7 @@ pub struct JSDocNullableType<'a> {
pub postfix: bool,
}

#[ast_node]
#[derive(Debug, Hash)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
Expand Down
25 changes: 21 additions & 4 deletions crates/oxc_ast/src/traverse/ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ pub use ast::traversable_bindingpatternkind::*;
pub use ast::traversable_bindingproperty::*;
pub use ast::traversable_bindingrestelement::*;
pub use ast::traversable_blockstatement::*;
pub use ast::traversable_booleanliteral::*;
pub use ast::traversable_breakstatement::*;
pub use ast::traversable_callexpression::*;
pub use ast::traversable_catchclause::*;
Expand All @@ -52,10 +53,13 @@ pub use ast::traversable_classelement::*;
pub use ast::traversable_computedmemberexpression::*;
pub use ast::traversable_conditionalexpression::*;
pub use ast::traversable_continuestatement::*;
pub use ast::traversable_debuggerstatement::*;
pub use ast::traversable_declaration::*;
pub use ast::traversable_decorator::*;
pub use ast::traversable_directive::*;
pub use ast::traversable_dowhilestatement::*;
pub use ast::traversable_elision::*;
pub use ast::traversable_emptystatement::*;
pub use ast::traversable_exportalldeclaration::*;
pub use ast::traversable_exportdefaultdeclaration::*;
pub use ast::traversable_exportdefaultdeclarationkind::*;
Expand All @@ -73,7 +77,6 @@ pub use ast::traversable_forstatementleft::*;
pub use ast::traversable_function::*;
pub use ast::traversable_functionbody::*;
pub use ast::traversable_hashbang::*;
pub use ast::traversable_identifiername::*;
pub use ast::traversable_identifierreference::*;
pub use ast::traversable_ifstatement::*;
pub use ast::traversable_importattribute::*;
Expand All @@ -85,6 +88,7 @@ pub use ast::traversable_importexpression::*;
pub use ast::traversable_importnamespacespecifier::*;
pub use ast::traversable_importspecifier::*;
pub use ast::traversable_jsdocnullabletype::*;
pub use ast::traversable_jsdocunknowntype::*;
pub use ast::traversable_jsxattribute::*;
pub use ast::traversable_jsxattributeitem::*;
pub use ast::traversable_jsxattributename::*;
Expand All @@ -111,10 +115,10 @@ pub use ast::traversable_logicalexpression::*;
pub use ast::traversable_memberexpression::*;
pub use ast::traversable_metaproperty::*;
pub use ast::traversable_methoddefinition::*;
pub use ast::traversable_modifiers::*;
pub use ast::traversable_moduledeclaration::*;
pub use ast::traversable_moduleexportname::*;
pub use ast::traversable_newexpression::*;
pub use ast::traversable_nullliteral::*;
pub use ast::traversable_numericliteral::*;
pub use ast::traversable_objectassignmenttarget::*;
pub use ast::traversable_objectexpression::*;
Expand All @@ -127,7 +131,6 @@ pub use ast::traversable_privateidentifier::*;
pub use ast::traversable_privateinexpression::*;
pub use ast::traversable_propertydefinition::*;
pub use ast::traversable_propertykey::*;
pub use ast::traversable_regexp::*;
pub use ast::traversable_regexpliteral::*;
pub use ast::traversable_returnstatement::*;
pub use ast::traversable_sequenceexpression::*;
Expand All @@ -137,16 +140,20 @@ pub use ast::traversable_statement::*;
pub use ast::traversable_staticblock::*;
pub use ast::traversable_staticmemberexpression::*;
pub use ast::traversable_stringliteral::*;
pub use ast::traversable_super::*;
pub use ast::traversable_switchcase::*;
pub use ast::traversable_switchstatement::*;
pub use ast::traversable_taggedtemplateexpression::*;
pub use ast::traversable_templateelement::*;
pub use ast::traversable_templateelementvalue::*;
pub use ast::traversable_templateliteral::*;
pub use ast::traversable_thisexpression::*;
pub use ast::traversable_throwstatement::*;
pub use ast::traversable_trystatement::*;
pub use ast::traversable_tsanykeyword::*;
pub use ast::traversable_tsarraytype::*;
pub use ast::traversable_tsasexpression::*;
pub use ast::traversable_tsbigintkeyword::*;
pub use ast::traversable_tsbooleankeyword::*;
pub use ast::traversable_tscallsignaturedeclaration::*;
pub use ast::traversable_tsclassimplements::*;
pub use ast::traversable_tsconditionaltype::*;
Expand Down Expand Up @@ -183,15 +190,22 @@ pub use ast::traversable_tsmoduledeclarationname::*;
pub use ast::traversable_tsmodulereference::*;
pub use ast::traversable_tsnamedtuplemember::*;
pub use ast::traversable_tsnamespaceexportdeclaration::*;
pub use ast::traversable_tsneverkeyword::*;
pub use ast::traversable_tsnonnullexpression::*;
pub use ast::traversable_tsnullkeyword::*;
pub use ast::traversable_tsnumberkeyword::*;
pub use ast::traversable_tsobjectkeyword::*;
pub use ast::traversable_tsoptionaltype::*;
pub use ast::traversable_tspropertysignature::*;
pub use ast::traversable_tsqualifiedname::*;
pub use ast::traversable_tsresttype::*;
pub use ast::traversable_tssatisfiesexpression::*;
pub use ast::traversable_tssignature::*;
pub use ast::traversable_tsstringkeyword::*;
pub use ast::traversable_tssymbolkeyword::*;
pub use ast::traversable_tstemplateliteraltype::*;
pub use ast::traversable_tsthisparameter::*;
pub use ast::traversable_tsthistype::*;
pub use ast::traversable_tstupleelement::*;
pub use ast::traversable_tstupletype::*;
pub use ast::traversable_tstype::*;
Expand All @@ -209,7 +223,10 @@ pub use ast::traversable_tstypepredicatename::*;
pub use ast::traversable_tstypequery::*;
pub use ast::traversable_tstypequeryexprname::*;
pub use ast::traversable_tstypereference::*;
pub use ast::traversable_tsundefinedkeyword::*;
pub use ast::traversable_tsuniontype::*;
pub use ast::traversable_tsunknownkeyword::*;
pub use ast::traversable_tsvoidkeyword::*;
pub use ast::traversable_unaryexpression::*;
pub use ast::traversable_updateexpression::*;
pub use ast::traversable_usingdeclaration::*;
Expand Down
4 changes: 4 additions & 0 deletions crates/oxc_macros/src/ast_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,10 @@ fn transform_generic_type(mut ty: TypePath) -> TypePath {

fn is_special_type_name(ident: &Ident) -> bool {
ident == "Atom"
|| ident == "RegExp"
|| ident == "TemplateElementValue"
|| ident == "IdentifierName"
|| ident == "Modifiers"
}

fn has_clone(attrs: &[Attribute]) -> bool {
Expand Down

0 comments on commit 567262a

Please sign in to comment.