feat(ast): derive CloneIn for AST types, using generate_derive. (#4732)

Closes #4284 (follow-on after #4276).
This commit is contained in:
rzvxa 2024-08-07 20:29:07 +00:00
parent ec0b4cbdaa
commit 51c1ca02d3
6 changed files with 3663 additions and 2 deletions

View file

@ -34,6 +34,7 @@ use tsify::Tsify;
strict_if(self.source_type.is_strict() || self.directives.iter().any(Directive::is_use_strict)),
)]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct Program<'a> {
@ -54,6 +55,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum Expression<'a> {
@ -203,6 +205,7 @@ pub use match_expression;
/// Fundamental syntactic structure used for naming variables, functions, and properties. It must start with a Unicode letter (including $ and _) and can be followed by Unicode letters, digits, $, or _.
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "Identifier")]
pub struct IdentifierName<'a> {
@ -218,6 +221,7 @@ pub struct IdentifierName<'a> {
/// See: [13.1 Identifiers](https://tc39.es/ecma262/#sec-identifiers)
#[ast(visit)]
#[derive(Debug, Clone)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "Identifier")]
pub struct IdentifierReference<'a> {
@ -247,6 +251,7 @@ pub struct IdentifierReference<'a> {
/// See: [13.1 Identifiers](https://tc39.es/ecma262/#sec-identifiers)
#[ast(visit)]
#[derive(Debug, Clone)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "Identifier")]
pub struct BindingIdentifier<'a> {
@ -271,6 +276,7 @@ pub struct BindingIdentifier<'a> {
/// See: [13.1 Identifiers](https://tc39.es/ecma262/#sec-identifiers)
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "Identifier")]
pub struct LabelIdentifier<'a> {
@ -284,6 +290,7 @@ pub struct LabelIdentifier<'a> {
/// Represents a `this` expression, which is a reference to the current object.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ThisExpression {
@ -296,6 +303,7 @@ pub struct ThisExpression {
/// Represents an array literal, which can include elements, spread elements, or null values.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ArrayExpression<'a> {
@ -317,6 +325,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(untagged)]
pub enum ArrayExpressionElement<'a> {
@ -338,6 +347,7 @@ pub enum ArrayExpressionElement<'a> {
/// Serialized as `null` in JSON AST. See `serialize.rs`.
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
pub struct Elision {
pub span: Span,
}
@ -347,6 +357,7 @@ pub struct Elision {
/// Represents an object literal, which can include properties, spread properties, or computed properties and trailing comma.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ObjectExpression<'a> {
@ -361,6 +372,7 @@ pub struct ObjectExpression<'a> {
/// Represents a property in an object literal.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ObjectPropertyKind<'a> {
@ -375,6 +387,7 @@ pub enum ObjectPropertyKind<'a> {
/// Represents a property in an object literal.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ObjectProperty<'a> {
@ -397,6 +410,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum PropertyKey<'a> {
@ -412,6 +426,7 @@ pub enum PropertyKey<'a> {
/// Represents the kind of property in an object literal or class.
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum PropertyKind {
@ -428,6 +443,7 @@ pub enum PropertyKind {
/// Represents a template literal, which can include quasi elements and expression elements.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TemplateLiteral<'a> {
@ -442,6 +458,7 @@ pub struct TemplateLiteral<'a> {
/// Represents a tagged template expression, which can include a tag and a quasi.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TaggedTemplateExpression<'a> {
@ -457,6 +474,7 @@ pub struct TaggedTemplateExpression<'a> {
/// Represents a quasi element in a template literal.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TemplateElement<'a> {
@ -469,6 +487,7 @@ pub struct TemplateElement<'a> {
/// See [template-strings-cooked-vs-raw](https://exploringjs.com/js/book/ch_template-literals.html#template-strings-cooked-vs-raw)
#[ast]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub struct TemplateElementValue<'a> {
/// A raw interpretation where backslashes do not have special meaning.
@ -487,6 +506,7 @@ pub struct TemplateElementValue<'a> {
/// <https://tc39.es/ecma262/#prod-MemberExpression>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum MemberExpression<'a> {
@ -514,6 +534,7 @@ pub use match_member_expression;
/// Represents a computed member access expression, which can include an object and an expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ComputedMemberExpression<'a> {
@ -529,6 +550,7 @@ pub struct ComputedMemberExpression<'a> {
/// Represents a static member access expression, which can include an object and a property.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct StaticMemberExpression<'a> {
@ -544,6 +566,7 @@ pub struct StaticMemberExpression<'a> {
/// Represents a private field access expression, which can include an object and a private identifier.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct PrivateFieldExpression<'a> {
@ -572,6 +595,7 @@ pub struct PrivateFieldExpression<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct CallExpression<'a> {
@ -597,6 +621,7 @@ pub struct CallExpression<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct NewExpression<'a> {
@ -612,6 +637,7 @@ pub struct NewExpression<'a> {
/// Represents a meta property. The following syntaxes are supported. `import.meta`, `new.target`.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct MetaProperty<'a> {
@ -626,6 +652,7 @@ pub struct MetaProperty<'a> {
/// Represents a spread element, which can include an argument.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct SpreadElement<'a> {
@ -643,6 +670,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum Argument<'a> {
@ -658,6 +686,7 @@ pub enum Argument<'a> {
/// Represents an update expression, which can include an operator and an argument. The following syntaxes are supported. `++a`, `a++`, `--a`, `a--`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct UpdateExpression<'a> {
@ -673,6 +702,7 @@ pub struct UpdateExpression<'a> {
/// Represents a unary expression, which can include an operator and an argument. The following syntaxes are supported. `+a`, `-a`, `~a`, `!a`, `delete a`, `void a`, `typeof a`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct UnaryExpression<'a> {
@ -687,6 +717,7 @@ pub struct UnaryExpression<'a> {
/// Represents a binary expression, which can include a left expression, an operator, and a right expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct BinaryExpression<'a> {
@ -702,6 +733,7 @@ pub struct BinaryExpression<'a> {
/// Represents a private in expression, which can include a private identifier, an operator, and a expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct PrivateInExpression<'a> {
@ -717,6 +749,7 @@ pub struct PrivateInExpression<'a> {
/// Represents a logical expression, which can include a left expression, an operator, and a right expression. The following syntaxes are supported. `||`, `&&` and `??`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct LogicalExpression<'a> {
@ -732,6 +765,7 @@ pub struct LogicalExpression<'a> {
/// Represents a conditional expression, which can include a test, a consequent, and an alternate.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ConditionalExpression<'a> {
@ -747,6 +781,7 @@ pub struct ConditionalExpression<'a> {
/// Represents an assignment expression, which can include an operator, a target, and a expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct AssignmentExpression<'a> {
@ -766,6 +801,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum AssignmentTarget<'a> {
@ -784,6 +820,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum SimpleAssignmentTarget<'a> {
@ -838,6 +875,7 @@ pub use match_simple_assignment_target;
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum AssignmentTargetPattern<'a> {
@ -859,6 +897,7 @@ pub use match_assignment_target_pattern;
/// Represents an array assignment target, which can include elements and a rest element.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Tsify))]
#[serde(tag = "type")]
pub struct ArrayAssignmentTarget<'a> {
@ -877,6 +916,7 @@ pub struct ArrayAssignmentTarget<'a> {
/// Represents an object assignment target, which can include properties and a rest element.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Tsify))]
#[serde(tag = "type")]
pub struct ObjectAssignmentTarget<'a> {
@ -893,6 +933,7 @@ pub struct ObjectAssignmentTarget<'a> {
/// Represents a rest element in an array assignment target, which can include a target.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "RestElement")]
pub struct AssignmentTargetRest<'a> {
@ -910,6 +951,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum AssignmentTargetMaybeDefault<'a> {
@ -921,6 +963,7 @@ pub enum AssignmentTargetMaybeDefault<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct AssignmentTargetWithDefault<'a> {
@ -932,6 +975,7 @@ pub struct AssignmentTargetWithDefault<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum AssignmentTargetProperty<'a> {
@ -944,6 +988,7 @@ pub enum AssignmentTargetProperty<'a> {
/// Represents an assignment target property identifier, which can include a binding and an init expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct AssignmentTargetPropertyIdentifier<'a> {
@ -958,6 +1003,7 @@ pub struct AssignmentTargetPropertyIdentifier<'a> {
/// Represents an assignment target property property, which can include a name and a binding.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct AssignmentTargetPropertyProperty<'a> {
@ -972,6 +1018,7 @@ pub struct AssignmentTargetPropertyProperty<'a> {
/// Represents a sequence expression, which can include expressions.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct SequenceExpression<'a> {
@ -985,6 +1032,7 @@ pub struct SequenceExpression<'a> {
/// Represents a super expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct Super {
@ -997,6 +1045,7 @@ pub struct Super {
/// Represents an await expression, which can include an argument.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct AwaitExpression<'a> {
@ -1010,6 +1059,7 @@ pub struct AwaitExpression<'a> {
/// Represents a chain expression, which can include an expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ChainExpression<'a> {
@ -1026,6 +1076,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ChainElement<'a> {
@ -1040,6 +1091,7 @@ pub enum ChainElement<'a> {
/// Represents a parenthesized expression, which can include an expression.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ParenthesizedExpression<'a> {
@ -1057,6 +1109,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum Statement<'a> {
@ -1091,6 +1144,7 @@ pub enum Statement<'a> {
/// Represents a directive statement, which can include a string literal.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct Directive<'a> {
@ -1107,6 +1161,7 @@ pub struct Directive<'a> {
/// Represents a hashbang directive, which can include a value.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct Hashbang<'a> {
@ -1121,6 +1176,7 @@ pub struct Hashbang<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct BlockStatement<'a> {
@ -1133,6 +1189,7 @@ pub struct BlockStatement<'a> {
/// Declarations and the Variable Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum Declaration<'a> {
@ -1171,6 +1228,7 @@ pub use match_declaration;
/// Represents a variable declaration, which can include a kind, declarations, and modifiers.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct VariableDeclaration<'a> {
@ -1183,6 +1241,7 @@ pub struct VariableDeclaration<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum VariableDeclarationKind {
@ -1193,6 +1252,7 @@ pub enum VariableDeclarationKind {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct VariableDeclarator<'a> {
@ -1209,6 +1269,7 @@ pub struct VariableDeclarator<'a> {
/// * <https://github.com/tc39/proposal-explicit-resource-management>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct UsingDeclaration<'a> {
@ -1222,6 +1283,7 @@ pub struct UsingDeclaration<'a> {
/// Empty Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct EmptyStatement {
@ -1232,6 +1294,7 @@ pub struct EmptyStatement {
/// Expression Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ExpressionStatement<'a> {
@ -1243,6 +1306,7 @@ pub struct ExpressionStatement<'a> {
/// If Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct IfStatement<'a> {
@ -1256,6 +1320,7 @@ pub struct IfStatement<'a> {
/// Do-While Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct DoWhileStatement<'a> {
@ -1268,6 +1333,7 @@ pub struct DoWhileStatement<'a> {
/// While Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct WhileStatement<'a> {
@ -1281,6 +1347,7 @@ pub struct WhileStatement<'a> {
#[ast(visit)]
#[scope(if(self.init.as_ref().is_some_and(ForStatementInit::is_lexical_declaration)))]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ForStatement<'a> {
@ -1301,6 +1368,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ForStatementInit<'a> {
@ -1315,6 +1383,7 @@ pub enum ForStatementInit<'a> {
#[ast(visit)]
#[scope(if(self.left.is_lexical_declaration()))]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ForInStatement<'a> {
@ -1334,6 +1403,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ForStatementLeft<'a> {
@ -1347,6 +1417,7 @@ pub enum ForStatementLeft<'a> {
#[ast(visit)]
#[scope(if(self.left.is_lexical_declaration()))]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ForOfStatement<'a> {
@ -1362,6 +1433,7 @@ pub struct ForOfStatement<'a> {
/// Continue Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ContinueStatement<'a> {
@ -1373,6 +1445,7 @@ pub struct ContinueStatement<'a> {
/// Break Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct BreakStatement<'a> {
@ -1384,6 +1457,7 @@ pub struct BreakStatement<'a> {
/// Return Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ReturnStatement<'a> {
@ -1395,6 +1469,7 @@ pub struct ReturnStatement<'a> {
/// With Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct WithStatement<'a> {
@ -1408,6 +1483,7 @@ pub struct WithStatement<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct SwitchStatement<'a> {
@ -1421,6 +1497,7 @@ pub struct SwitchStatement<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct SwitchCase<'a> {
@ -1433,6 +1510,7 @@ pub struct SwitchCase<'a> {
/// Labelled Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct LabeledStatement<'a> {
@ -1445,6 +1523,7 @@ pub struct LabeledStatement<'a> {
/// Throw Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ThrowStatement<'a> {
@ -1456,6 +1535,7 @@ pub struct ThrowStatement<'a> {
/// Try Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TryStatement<'a> {
@ -1470,6 +1550,7 @@ pub struct TryStatement<'a> {
#[ast(visit)]
#[scope(flags(ScopeFlags::CatchClause), if(self.param.is_some()))]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct CatchClause<'a> {
@ -1482,6 +1563,7 @@ pub struct CatchClause<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct CatchParameter<'a> {
@ -1493,6 +1575,7 @@ pub struct CatchParameter<'a> {
/// Debugger Statement
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct DebuggerStatement {
@ -1504,6 +1587,7 @@ pub struct DebuggerStatement {
/// * <https://tc39.es/ecma262/#prod-BindingPattern>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub struct BindingPattern<'a> {
@ -1518,6 +1602,7 @@ pub struct BindingPattern<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum BindingPatternKind<'a> {
@ -1536,6 +1621,7 @@ pub enum BindingPatternKind<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct AssignmentPattern<'a> {
@ -1548,6 +1634,7 @@ pub struct AssignmentPattern<'a> {
// See serializer in serialize.rs
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Tsify))]
#[serde(tag = "type")]
pub struct ObjectPattern<'a> {
@ -1561,6 +1648,7 @@ pub struct ObjectPattern<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct BindingProperty<'a> {
@ -1575,6 +1663,7 @@ pub struct BindingProperty<'a> {
// See serializer in serialize.rs
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Tsify))]
#[serde(tag = "type")]
pub struct ArrayPattern<'a> {
@ -1588,6 +1677,7 @@ pub struct ArrayPattern<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "RestElement")]
pub struct BindingRestElement<'a> {
@ -1604,6 +1694,7 @@ pub struct BindingRestElement<'a> {
strict_if(self.is_strict()),
)]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub struct Function<'a> {
@ -1639,6 +1730,7 @@ pub struct Function<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub enum FunctionType {
FunctionDeclaration = 0,
@ -1652,6 +1744,7 @@ pub enum FunctionType {
// See serializer in serialize.rs
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Tsify))]
#[serde(tag = "type")]
pub struct FormalParameters<'a> {
@ -1666,6 +1759,7 @@ pub struct FormalParameters<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct FormalParameter<'a> {
@ -1680,6 +1774,7 @@ pub struct FormalParameter<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub enum FormalParameterKind {
/// <https://tc39.es/ecma262/#prod-FormalParameters>
@ -1695,6 +1790,7 @@ pub enum FormalParameterKind {
/// <https://tc39.es/ecma262/#prod-FunctionBody>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct FunctionBody<'a> {
@ -1711,6 +1807,7 @@ pub struct FunctionBody<'a> {
strict_if(self.body.has_use_strict_directive()),
)]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ArrowFunctionExpression<'a> {
@ -1730,6 +1827,7 @@ pub struct ArrowFunctionExpression<'a> {
/// Generator Function Definitions
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct YieldExpression<'a> {
@ -1743,6 +1841,7 @@ pub struct YieldExpression<'a> {
#[ast(visit)]
#[scope(flags(ScopeFlags::StrictMode))]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub struct Class<'a> {
@ -1813,6 +1912,7 @@ pub struct Class<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub enum ClassType {
/// Class declaration statement
@ -1830,6 +1930,7 @@ pub enum ClassType {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ClassBody<'a> {
@ -1858,6 +1959,7 @@ pub struct ClassBody<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ClassElement<'a> {
@ -1881,6 +1983,7 @@ pub enum ClassElement<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub struct MethodDefinition<'a> {
@ -1909,6 +2012,7 @@ pub struct MethodDefinition<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub enum MethodDefinitionType {
MethodDefinition = 0,
@ -1917,6 +2021,7 @@ pub enum MethodDefinitionType {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub struct PropertyDefinition<'a> {
@ -1998,6 +2103,7 @@ pub struct PropertyDefinition<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub enum PropertyDefinitionType {
PropertyDefinition = 0,
@ -2006,6 +2112,7 @@ pub enum PropertyDefinitionType {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum MethodDefinitionKind {
@ -2024,6 +2131,7 @@ pub enum MethodDefinitionKind {
/// See: [MDN - Private class fields](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields)
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct PrivateIdentifier<'a> {
@ -2048,6 +2156,7 @@ pub struct PrivateIdentifier<'a> {
#[ast(visit)]
#[scope(flags(ScopeFlags::ClassStaticBlock))]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct StaticBlock<'a> {
@ -2082,6 +2191,7 @@ pub struct StaticBlock<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ModuleDeclaration<'a> {
@ -2118,6 +2228,7 @@ pub use match_module_declaration;
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub enum AccessorPropertyType {
AccessorProperty = 0,
@ -2134,6 +2245,7 @@ pub enum AccessorPropertyType {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub struct AccessorProperty<'a> {
pub r#type: AccessorPropertyType,
@ -2153,6 +2265,7 @@ pub struct AccessorProperty<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ImportExpression<'a> {
@ -2164,6 +2277,7 @@ pub struct ImportExpression<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ImportDeclaration<'a> {
@ -2180,6 +2294,7 @@ pub struct ImportDeclaration<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ImportDeclarationSpecifier<'a> {
@ -2196,6 +2311,7 @@ pub enum ImportDeclarationSpecifier<'a> {
// import {imported as local} from "source"
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ImportSpecifier<'a> {
@ -2226,6 +2342,7 @@ pub struct ImportSpecifier<'a> {
///
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ImportDefaultSpecifier<'a> {
@ -2243,6 +2360,7 @@ pub struct ImportDefaultSpecifier<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ImportNamespaceSpecifier<'a> {
@ -2253,6 +2371,7 @@ pub struct ImportNamespaceSpecifier<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct WithClause<'a> {
@ -2264,6 +2383,7 @@ pub struct WithClause<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ImportAttribute<'a> {
@ -2275,6 +2395,7 @@ pub struct ImportAttribute<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ImportAttributeKey<'a> {
@ -2295,6 +2416,7 @@ pub enum ImportAttributeKey<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ExportNamedDeclaration<'a> {
@ -2320,6 +2442,7 @@ pub struct ExportNamedDeclaration<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct ExportDefaultDeclaration<'a> {
@ -2340,6 +2463,7 @@ pub struct ExportDefaultDeclaration<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ExportAllDeclaration<'a> {
@ -2366,6 +2490,7 @@ pub struct ExportAllDeclaration<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct ExportSpecifier<'a> {
@ -2384,6 +2509,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ExportDefaultDeclarationKind<'a> {
@ -2407,6 +2533,7 @@ pub enum ExportDefaultDeclarationKind<'a> {
/// * <https://github.com/tc39/ecma262/pull/2154>
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum ModuleExportName<'a> {

View file

@ -38,6 +38,7 @@ use super::{inherit_variants, js::*, literal::*, ts::*};
/// See: [JSX Syntax](https://facebook.github.io/jsx/)
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct JSXElement<'a> {
@ -65,6 +66,7 @@ pub struct JSXElement<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct JSXOpeningElement<'a> {
@ -90,6 +92,7 @@ pub struct JSXOpeningElement<'a> {
/// Closing tag in a [`JSXElement`]. Not all JSX elements have a closing tag.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXClosingElement<'a> {
@ -108,6 +111,7 @@ pub struct JSXClosingElement<'a> {
/// See: [`React.Fragment`](https://react.dev/reference/react/Fragment)
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct JSXFragment<'a> {
@ -121,6 +125,7 @@ pub struct JSXFragment<'a> {
/// JSX Opening Fragment (`<>`)
#[ast]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXOpeningFragment {
@ -131,6 +136,7 @@ pub struct JSXOpeningFragment {
/// JSX Closing Fragment (`</>`)
#[ast]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXClosingFragment {
@ -141,6 +147,7 @@ pub struct JSXClosingFragment {
/// JSX Element Name
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXElementName<'a> {
@ -161,6 +168,7 @@ pub enum JSXElementName<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXNamespacedName<'a> {
@ -189,6 +197,7 @@ pub struct JSXNamespacedName<'a> {
/// [`member expression`]: JSXMemberExpressionObject::MemberExpression
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXMemberExpression<'a> {
@ -202,6 +211,7 @@ pub struct JSXMemberExpression<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXMemberExpressionObject<'a> {
@ -224,6 +234,7 @@ pub enum JSXMemberExpressionObject<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXExpressionContainer<'a> {
@ -241,6 +252,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXExpression<'a> {
@ -253,6 +265,7 @@ pub enum JSXExpression<'a> {
/// An empty JSX expression (`{}`)
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXEmptyExpression {
@ -265,6 +278,7 @@ pub struct JSXEmptyExpression {
/// JSX Attributes
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXAttributeItem<'a> {
@ -281,6 +295,7 @@ pub enum JSXAttributeItem<'a> {
/// // name ^^^ ^^^^ value
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXAttribute<'a> {
@ -299,6 +314,7 @@ pub struct JSXAttribute<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXSpreadAttribute<'a> {
@ -312,6 +328,7 @@ pub struct JSXSpreadAttribute<'a> {
/// Part of a [`JSXAttribute`].
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXAttributeName<'a> {
@ -324,6 +341,7 @@ pub enum JSXAttributeName<'a> {
/// Part of a [`JSXAttribute`].
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXAttributeValue<'a> {
@ -340,6 +358,7 @@ pub enum JSXAttributeValue<'a> {
/// [`IdentifierName`]: super::IdentifierName
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXIdentifier<'a> {
@ -355,6 +374,7 @@ pub struct JSXIdentifier<'a> {
/// Part of a [`JSXElement`].
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum JSXChild<'a> {
@ -375,6 +395,7 @@ pub enum JSXChild<'a> {
/// Variant of [`JSXChild`] that represents an object spread (`{...expression}`).
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXSpreadChild<'a> {
@ -395,6 +416,7 @@ pub struct JSXSpreadChild<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct JSXText<'a> {

View file

@ -10,7 +10,7 @@
use std::hash::Hash;
use bitflags::bitflags;
use oxc_ast_macros::ast;
use oxc_ast_macros::{ast, CloneIn};
use oxc_span::{Atom, Span};
use oxc_syntax::number::{BigintBase, NumberBase};
#[cfg(feature = "serialize")]
@ -23,6 +23,7 @@ use tsify::Tsify;
/// <https://tc39.es/ecma262/#prod-BooleanLiteral>
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct BooleanLiteral {
@ -36,6 +37,7 @@ pub struct BooleanLiteral {
/// <https://tc39.es/ecma262/#sec-null-literals>
#[ast(visit)]
#[derive(Debug, Clone)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct NullLiteral {
@ -48,6 +50,7 @@ pub struct NullLiteral {
/// <https://tc39.es/ecma262/#sec-literals-numeric-literals>
#[ast(visit)]
#[derive(Debug, Clone)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct NumericLiteral<'a> {
@ -65,6 +68,7 @@ pub struct NumericLiteral<'a> {
/// BigInt literal
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct BigIntLiteral<'a> {
@ -82,6 +86,7 @@ pub struct BigIntLiteral<'a> {
/// <https://tc39.es/ecma262/#sec-literals-regular-expression-literals>
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct RegExpLiteral<'a> {
@ -98,6 +103,7 @@ pub struct RegExpLiteral<'a> {
/// <https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects>
#[ast]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub struct RegExp<'a> {
/// The regex pattern between the slashes
@ -108,6 +114,7 @@ pub struct RegExp<'a> {
#[ast]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
pub struct EmptyObject;
@ -116,6 +123,7 @@ pub struct EmptyObject;
/// <https://tc39.es/ecma262/#sec-literals-string-literals>
#[ast(visit)]
#[derive(Debug, Clone, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct StringLiteral<'a> {
@ -128,7 +136,7 @@ bitflags! {
/// Regular expression flags.
///
/// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#advanced_searching_with_flags>
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, CloneIn)]
pub struct RegExpFlags: u8 {
/// Global flag
///

View file

@ -35,6 +35,7 @@ export interface TSIndexSignatureName extends Span {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSThisParameter<'a> {
@ -64,6 +65,7 @@ pub struct TSThisParameter<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSEnumDeclaration<'a> {
@ -92,6 +94,7 @@ pub struct TSEnumDeclaration<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSEnumMember<'a> {
@ -109,6 +112,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum TSEnumMemberName<'a> {
@ -137,6 +141,7 @@ pub enum TSEnumMemberName<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeAnnotation<'a> {
@ -162,6 +167,7 @@ pub struct TSTypeAnnotation<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSLiteralType<'a> {
@ -172,6 +178,7 @@ pub struct TSLiteralType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged, rename_all = "camelCase")]
pub enum TSLiteral<'a> {
@ -191,6 +198,7 @@ pub enum TSLiteral<'a> {
/// expressions.
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged, rename_all = "camelCase")]
pub enum TSType<'a> {
@ -295,6 +303,7 @@ pub use match_ts_type;
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSConditionalType<'a> {
@ -318,6 +327,7 @@ pub struct TSConditionalType<'a> {
/// <https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-func.html#unions>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSUnionType<'a> {
@ -331,6 +341,7 @@ pub struct TSUnionType<'a> {
/// <https://www.typescriptlang.org/docs/handbook/2/objects.html#intersection-types>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSIntersectionType<'a> {
@ -341,6 +352,7 @@ pub struct TSIntersectionType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSParenthesizedType<'a> {
@ -359,6 +371,7 @@ pub struct TSParenthesizedType<'a> {
/// <https://www.typescriptlang.org/docs/handbook/2/keyof-types.html>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeOperator<'a> {
@ -370,6 +383,7 @@ pub struct TSTypeOperator<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum TSTypeOperatorOperator {
@ -391,6 +405,7 @@ pub enum TSTypeOperatorOperator {
/// <https://www.typescriptlang.org/docs/handbook/2/objects.html#the-array-type>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSArrayType<'a> {
@ -412,6 +427,7 @@ pub struct TSArrayType<'a> {
/// <https://www.typescriptlang.org/docs/handbook/2/indexed-access-types.html#handbook-content>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSIndexedAccessType<'a> {
@ -432,6 +448,7 @@ pub struct TSIndexedAccessType<'a> {
/// <https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types>
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTupleType<'a> {
@ -442,6 +459,7 @@ pub struct TSTupleType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSNamedTupleMember<'a> {
@ -454,6 +472,7 @@ pub struct TSNamedTupleMember<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSOptionalType<'a> {
@ -464,6 +483,7 @@ pub struct TSOptionalType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSRestType<'a> {
@ -482,6 +502,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged, rename_all = "camelCase")]
pub enum TSTupleElement<'a> {
@ -496,6 +517,7 @@ pub enum TSTupleElement<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSAnyKeyword {
@ -505,6 +527,7 @@ pub struct TSAnyKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSStringKeyword {
@ -514,6 +537,7 @@ pub struct TSStringKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSBooleanKeyword {
@ -523,6 +547,7 @@ pub struct TSBooleanKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSNumberKeyword {
@ -532,6 +557,7 @@ pub struct TSNumberKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSNeverKeyword {
@ -542,6 +568,7 @@ pub struct TSNeverKeyword {
/// `type Uppercase<T extends character> = intrinsic;`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSIntrinsicKeyword {
@ -551,6 +578,7 @@ pub struct TSIntrinsicKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSUnknownKeyword {
@ -560,6 +588,7 @@ pub struct TSUnknownKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSNullKeyword {
@ -569,6 +598,7 @@ pub struct TSNullKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSUndefinedKeyword {
@ -578,6 +608,7 @@ pub struct TSUndefinedKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSVoidKeyword {
@ -587,6 +618,7 @@ pub struct TSVoidKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSSymbolKeyword {
@ -596,6 +628,7 @@ pub struct TSSymbolKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSThisType {
@ -605,6 +638,7 @@ pub struct TSThisType {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSObjectKeyword {
@ -614,6 +648,7 @@ pub struct TSObjectKeyword {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type")]
pub struct TSBigIntKeyword {
@ -626,6 +661,7 @@ pub struct TSBigIntKeyword {
/// type E = D.c.b.a;
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeReference<'a> {
@ -640,6 +676,7 @@ pub struct TSTypeReference<'a> {
/// NamespaceName.IdentifierReference
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum TSTypeName<'a> {
@ -658,6 +695,7 @@ pub use match_ts_type_name;
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSQualifiedName<'a> {
@ -669,6 +707,7 @@ pub struct TSQualifiedName<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeParameterInstantiation<'a> {
@ -679,6 +718,7 @@ pub struct TSTypeParameterInstantiation<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeParameter<'a> {
@ -694,6 +734,7 @@ pub struct TSTypeParameter<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeParameterDeclaration<'a> {
@ -705,6 +746,7 @@ pub struct TSTypeParameterDeclaration<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeAliasDeclaration<'a> {
@ -720,6 +762,7 @@ pub struct TSTypeAliasDeclaration<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum TSAccessibility {
@ -730,6 +773,7 @@ pub enum TSAccessibility {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSClassImplements<'a> {
@ -745,6 +789,7 @@ pub struct TSClassImplements<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSInterfaceDeclaration<'a> {
@ -762,6 +807,7 @@ pub struct TSInterfaceDeclaration<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSInterfaceBody<'a> {
@ -772,6 +818,7 @@ pub struct TSInterfaceBody<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSPropertySignature<'a> {
@ -786,6 +833,7 @@ pub struct TSPropertySignature<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged, rename_all = "camelCase")]
pub enum TSSignature<'a> {
@ -809,6 +857,7 @@ pub enum TSSignature<'a> {
/// ```
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSIndexSignature<'a> {
@ -821,6 +870,7 @@ pub struct TSIndexSignature<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSCallSignatureDeclaration<'a> {
@ -834,6 +884,7 @@ pub struct TSCallSignatureDeclaration<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum TSMethodSignatureKind {
@ -845,6 +896,7 @@ pub enum TSMethodSignatureKind {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSMethodSignature<'a> {
@ -864,6 +916,7 @@ pub struct TSMethodSignature<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSConstructSignatureDeclaration<'a> {
@ -877,6 +930,7 @@ pub struct TSConstructSignatureDeclaration<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize))]
#[serde(tag = "type", rename = "Identifier", rename_all = "camelCase")]
pub struct TSIndexSignatureName<'a> {
@ -888,6 +942,7 @@ pub struct TSIndexSignatureName<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSInterfaceHeritage<'a> {
@ -899,6 +954,7 @@ pub struct TSInterfaceHeritage<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypePredicate<'a> {
@ -911,6 +967,7 @@ pub struct TSTypePredicate<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged, rename_all = "camelCase")]
pub enum TSTypePredicateName<'a> {
@ -924,6 +981,7 @@ pub enum TSTypePredicateName<'a> {
strict_if(self.body.as_ref().is_some_and(TSModuleDeclarationBody::is_strict)),
)]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSModuleDeclaration<'a> {
@ -948,6 +1006,7 @@ pub struct TSModuleDeclaration<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum TSModuleDeclarationKind {
@ -964,6 +1023,7 @@ impl TSModuleDeclarationKind {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum TSModuleDeclarationName<'a> {
@ -973,6 +1033,7 @@ pub enum TSModuleDeclarationName<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum TSModuleDeclarationBody<'a> {
@ -983,6 +1044,7 @@ pub enum TSModuleDeclarationBody<'a> {
// See serializer in serialize.rs
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSModuleBlock<'a> {
@ -995,6 +1057,7 @@ pub struct TSModuleBlock<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeLiteral<'a> {
@ -1005,6 +1068,7 @@ pub struct TSTypeLiteral<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSInferType<'a> {
@ -1015,6 +1079,7 @@ pub struct TSInferType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeQuery<'a> {
@ -1032,6 +1097,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum TSTypeQueryExprName<'a> {
@ -1043,6 +1109,7 @@ pub enum TSTypeQueryExprName<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSImportType<'a> {
@ -1057,6 +1124,7 @@ pub struct TSImportType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSImportAttributes<'a> {
@ -1068,6 +1136,7 @@ pub struct TSImportAttributes<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSImportAttribute<'a> {
@ -1079,6 +1148,7 @@ pub struct TSImportAttribute<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged)]
pub enum TSImportAttributeName<'a> {
@ -1088,6 +1158,7 @@ pub enum TSImportAttributeName<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSFunctionType<'a> {
@ -1101,6 +1172,7 @@ pub struct TSFunctionType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSConstructorType<'a> {
@ -1115,6 +1187,7 @@ pub struct TSConstructorType<'a> {
#[ast(visit)]
#[scope]
#[derive(Debug)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSMappedType<'a> {
@ -1130,6 +1203,7 @@ pub struct TSMappedType<'a> {
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum TSMappedTypeModifierOperator {
@ -1143,6 +1217,7 @@ pub enum TSMappedTypeModifierOperator {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTemplateLiteralType<'a> {
@ -1154,6 +1229,7 @@ pub struct TSTemplateLiteralType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSAsExpression<'a> {
@ -1165,6 +1241,7 @@ pub struct TSAsExpression<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSSatisfiesExpression<'a> {
@ -1176,6 +1253,7 @@ pub struct TSSatisfiesExpression<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSTypeAssertion<'a> {
@ -1187,6 +1265,7 @@ pub struct TSTypeAssertion<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSImportEqualsDeclaration<'a> {
@ -1205,6 +1284,7 @@ inherit_variants! {
/// [`ast` module docs]: `super`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(untagged, rename_all = "camelCase")]
pub enum TSModuleReference<'a> {
@ -1216,6 +1296,7 @@ pub enum TSModuleReference<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSExternalModuleReference<'a> {
@ -1226,6 +1307,7 @@ pub struct TSExternalModuleReference<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSNonNullExpression<'a> {
@ -1260,6 +1342,7 @@ pub struct TSNonNullExpression<'a> {
/// [`CallExpression`]: crate::ast::js::CallExpression
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct Decorator<'a> {
@ -1273,6 +1356,7 @@ pub struct Decorator<'a> {
/// `export = foo`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSExportAssignment<'a> {
@ -1286,6 +1370,7 @@ pub struct TSExportAssignment<'a> {
/// `export as namespace foo`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSNamespaceExportDeclaration<'a> {
@ -1296,6 +1381,7 @@ pub struct TSNamespaceExportDeclaration<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct TSInstantiationExpression<'a> {
@ -1308,6 +1394,7 @@ pub struct TSInstantiationExpression<'a> {
/// See [TypeScript - Type-Only Imports and Exports](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html)
#[ast]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(rename_all = "camelCase")]
pub enum ImportOrExportKind {
@ -1322,6 +1409,7 @@ pub enum ImportOrExportKind {
/// `type foo = ty?` or `type foo = ?ty`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct JSDocNullableType<'a> {
@ -1335,6 +1423,7 @@ pub struct JSDocNullableType<'a> {
/// `type foo = ty!` or `type foo = !ty`
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct JSDocNonNullableType<'a> {
@ -1346,6 +1435,7 @@ pub struct JSDocNonNullableType<'a> {
#[ast(visit)]
#[derive(Debug, Hash)]
#[generate_derive(CloneIn)]
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
#[serde(tag = "type", rename_all = "camelCase")]
pub struct JSDocUnknownType {

File diff suppressed because it is too large Load diff

View file

@ -41,6 +41,7 @@ mod generated {
pub mod assert_layouts;
pub mod ast_builder;
pub mod ast_kind;
pub mod derive_clone_in;
pub mod span;
pub mod visit;
pub mod visit_mut;