mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 04:08:41 +00:00
fix(ast): serialize JSXMemberExpressionObject to estree (#5883)
Follow-on after #5882, part of #5354. Make JSON AST ESTree-compatible for: * `<Foo.bar />` * `<this.foo />`
This commit is contained in:
parent
a822c9db0a
commit
0d105212bc
2 changed files with 17 additions and 3 deletions
|
|
@ -238,7 +238,7 @@ pub struct JSXMemberExpression<'a> {
|
|||
#[ast(visit)]
|
||||
#[derive(Debug)]
|
||||
#[generate_derive(CloneIn, GetSpan, GetSpanMut, ContentEq, ContentHash)]
|
||||
#[cfg_attr(feature = "serialize", derive(Serialize, Tsify))]
|
||||
#[cfg_attr(feature = "serialize", derive(Tsify))]
|
||||
#[serde(untagged)]
|
||||
pub enum JSXMemberExpressionObject<'a> {
|
||||
IdentifierReference(Box<'a, IdentifierReference<'a>>) = 0,
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ use crate::ast::{
|
|||
ArrayAssignmentTarget, ArrayPattern, AssignmentTargetMaybeDefault, AssignmentTargetProperty,
|
||||
AssignmentTargetRest, BindingPattern, BindingPatternKind, BindingProperty, BindingRestElement,
|
||||
Directive, Elision, FormalParameter, FormalParameterKind, FormalParameters, JSXElementName,
|
||||
JSXIdentifier, ObjectAssignmentTarget, ObjectPattern, Program, RegExpFlags, Statement,
|
||||
StringLiteral, TSModuleBlock, TSTypeAnnotation,
|
||||
JSXIdentifier, JSXMemberExpressionObject, ObjectAssignmentTarget, ObjectPattern, Program,
|
||||
RegExpFlags, Statement, StringLiteral, TSModuleBlock, TSTypeAnnotation,
|
||||
};
|
||||
|
||||
pub struct EcmaFormatter;
|
||||
|
|
@ -265,3 +265,17 @@ impl<'a> Serialize for JSXElementName<'a> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Serialize for JSXMemberExpressionObject<'a> {
|
||||
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
|
||||
match self {
|
||||
Self::IdentifierReference(ident) => {
|
||||
JSXIdentifier { span: ident.span, name: ident.name.clone() }.serialize(serializer)
|
||||
}
|
||||
Self::MemberExpression(expr) => expr.serialize(serializer),
|
||||
Self::ThisExpression(expr) => {
|
||||
JSXIdentifier { span: expr.span, name: "this".into() }.serialize(serializer)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue