diff --git a/compiler/crates/react_compiler_ast/src/expressions.rs b/compiler/crates/react_compiler_ast/src/expressions.rs index c0b83153730d..43c4c2633138 100644 --- a/compiler/crates/react_compiler_ast/src/expressions.rs +++ b/compiler/crates/react_compiler_ast/src/expressions.rs @@ -229,7 +229,8 @@ pub struct ArrowFunctionExpression { #[serde( default, skip_serializing_if = "Option::is_none", - rename = "predicate" + rename = "predicate", + deserialize_with = "crate::common::nullable_value" )] pub predicate: Option>, } @@ -327,6 +328,13 @@ pub struct ObjectMethod { rename = "typeParameters" )] pub type_parameters: Option>, + #[serde( + default, + skip_serializing_if = "Option::is_none", + rename = "predicate", + deserialize_with = "crate::common::nullable_value" + )] + pub predicate: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/compiler/crates/react_compiler_ast/src/statements.rs b/compiler/crates/react_compiler_ast/src/statements.rs index 2c2bd9263218..d05c53bbc0d4 100644 --- a/compiler/crates/react_compiler_ast/src/statements.rs +++ b/compiler/crates/react_compiler_ast/src/statements.rs @@ -310,7 +310,8 @@ pub struct FunctionDeclaration { #[serde( default, skip_serializing_if = "Option::is_none", - rename = "predicate" + rename = "predicate", + deserialize_with = "crate::common::nullable_value" )] pub predicate: Option>, /// Set by the Hermes parser for Flow `component Foo(...) { ... }` syntax diff --git a/compiler/crates/react_compiler_oxc/src/convert_ast.rs b/compiler/crates/react_compiler_oxc/src/convert_ast.rs index bf9de9b42ff5..37d56fec6b91 100644 --- a/compiler/crates/react_compiler_oxc/src/convert_ast.rs +++ b/compiler/crates/react_compiler_oxc/src/convert_ast.rs @@ -1969,6 +1969,7 @@ impl<'a> ConvertCtx<'a> { .type_parameters .as_ref() .map(|_| Box::new(serde_json::Value::Null)), + predicate: None, }); } } diff --git a/compiler/crates/react_compiler_reactive_scopes/src/codegen_reactive_function.rs b/compiler/crates/react_compiler_reactive_scopes/src/codegen_reactive_function.rs index ced6c40d42a5..885b0d86144b 100644 --- a/compiler/crates/react_compiler_reactive_scopes/src/codegen_reactive_function.rs +++ b/compiler/crates/react_compiler_reactive_scopes/src/codegen_reactive_function.rs @@ -2745,6 +2745,7 @@ fn codegen_object_expression( decorators: None, return_type: None, type_parameters: None, + predicate: None, }, )); } diff --git a/compiler/crates/react_compiler_swc/src/convert_ast.rs b/compiler/crates/react_compiler_swc/src/convert_ast.rs index 651d9f8b21f7..4e75c456dc5f 100644 --- a/compiler/crates/react_compiler_swc/src/convert_ast.rs +++ b/compiler/crates/react_compiler_swc/src/convert_ast.rs @@ -1336,6 +1336,7 @@ impl<'a> ConvertCtx<'a> { .as_ref() .map(|_| Box::new(serde_json::Value::Null)), type_parameters: None, + predicate: None, }), swc::Prop::Setter(s) => ObjectExpressionProperty::ObjectMethod(ObjectMethod { base: self.make_base_node(s.span), @@ -1359,6 +1360,7 @@ impl<'a> ConvertCtx<'a> { decorators: None, return_type: None, type_parameters: None, + predicate: None, }), swc::Prop::Method(m) => ObjectExpressionProperty::ObjectMethod(ObjectMethod { base: self.make_base_node(m.span()), @@ -1391,6 +1393,7 @@ impl<'a> ConvertCtx<'a> { .type_params .as_ref() .map(|_| Box::new(serde_json::Value::Null)), + predicate: None, }), swc::Prop::Assign(a) => { let ident = self.convert_ident_to_identifier(&a.key);