@@ -2765,7 +2765,34 @@ fn evaluate_expr_assign<'gc>(
27652765 Err ( EvalError :: Js ( raise_eval_error ! ( "Cannot assign to property of non-object" ) ) )
27662766 }
27672767 }
2768- _ => todo ! ( "Assignment target not supported" ) ,
2768+ _ => {
2769+ // Diagnostic: report the specific Expr variant of the unsupported assignment target
2770+ let variant = match target {
2771+ Expr :: Var ( _, _, _) => "Var" ,
2772+ Expr :: Property ( _, _) => "Property" ,
2773+ Expr :: Index ( _, _) => "Index" ,
2774+ Expr :: Array ( _) => "Array" ,
2775+ Expr :: Object ( _) => "Object" ,
2776+ Expr :: Spread ( _) => "Spread" ,
2777+ Expr :: Call ( _, _) => "Call" ,
2778+ Expr :: New ( _, _) => "New" ,
2779+ Expr :: Function ( _, _, _) => "Function" ,
2780+ Expr :: ArrowFunction ( _, _) => "ArrowFunction" ,
2781+ Expr :: Assign ( _, _) => "Assign" ,
2782+ Expr :: Comma ( _, _) => "Comma" ,
2783+ Expr :: OptionalProperty ( _, _) => "OptionalProperty" ,
2784+ Expr :: OptionalIndex ( _, _) => "OptionalIndex" ,
2785+ Expr :: OptionalCall ( _, _) => "OptionalCall" ,
2786+ Expr :: TaggedTemplate ( _, _, _) => "TaggedTemplate" ,
2787+ Expr :: TemplateString ( _) => "TemplateString" ,
2788+ Expr :: GeneratorFunction ( _, _, _) => "GeneratorFunction" ,
2789+ Expr :: AsyncFunction ( _, _, _) => "AsyncFunction" ,
2790+ Expr :: AsyncArrowFunction ( _, _) => "AsyncArrowFunction" ,
2791+ _ => "Other" ,
2792+ } ;
2793+ log:: error!( "Unsupported assignment target reached in evaluate_expr_assign: {}" , variant) ;
2794+ Err ( EvalError :: Js ( raise_eval_error ! ( "Assignment target not supported" ) ) )
2795+ }
27692796 }
27702797}
27712798
@@ -4897,7 +4924,32 @@ pub fn evaluate_expr<'gc>(mc: &MutationContext<'gc>, env: &JSObjectDataPtr<'gc>,
48974924 evaluate_expr ( mc, env, left) ?;
48984925 evaluate_expr ( mc, env, right)
48994926 }
4900- Expr :: Assign ( target, value_expr) => evaluate_expr_assign ( mc, env, target, value_expr) ,
4927+ Expr :: Assign ( target, value_expr) => {
4928+ // Diagnostic: log the assignment target variant to help identify unsupported targets
4929+ let target_variant = match & * * target {
4930+ Expr :: Var ( _, _, _) => "Var" ,
4931+ Expr :: Property ( _, _) => "Property" ,
4932+ Expr :: Index ( _, _) => "Index" ,
4933+ Expr :: Spread ( inner) => {
4934+ // log inner variant for better diagnostics
4935+ let inner_variant = match & * * inner {
4936+ Expr :: Array ( _) => "Array" ,
4937+ Expr :: Index ( _, _) => "Index" ,
4938+ Expr :: Property ( _, _) => "Property" ,
4939+ Expr :: Var ( _, _, _) => "Var" ,
4940+ Expr :: Call ( _, _) => "Call" ,
4941+ _ => "Other" ,
4942+ } ;
4943+ log:: debug!( "evaluate_expr: Assign target is Spread with inner variant = {}" , inner_variant) ;
4944+ "Spread"
4945+ }
4946+ Expr :: Array ( _) => "Array" ,
4947+ Expr :: Object ( _) => "Object" ,
4948+ _ => "Other" ,
4949+ } ;
4950+ log:: debug!( "evaluate_expr: Assign target variant = {}" , target_variant) ;
4951+ evaluate_expr_assign ( mc, env, target, value_expr)
4952+ }
49014953 Expr :: AddAssign ( target, value_expr) => evaluate_expr_add_assign ( mc, env, target, value_expr) ,
49024954 Expr :: SubAssign ( target, value_expr) => evaluate_expr_sub_assign ( mc, env, target, value_expr) ,
49034955 Expr :: MulAssign ( target, value_expr) => evaluate_expr_mul_assign ( mc, env, target, value_expr) ,
@@ -7041,6 +7093,9 @@ fn evaluate_expr_new<'gc>(
70417093 _ => { }
70427094 }
70437095 }
7096+
7097+ crate :: js_class:: create_arguments_object ( mc, & call_env, & eval_args) ?;
7098+
70447099 let body_clone = cl. body . clone ( ) ;
70457100 match evaluate_statements_with_labels ( mc, & call_env, & body_clone, & [ ] , & [ ] ) ? {
70467101 ControlFlow :: Return ( Value :: Object ( obj) ) => Ok ( Value :: Object ( obj) ) ,
@@ -7163,7 +7218,7 @@ fn evaluate_expr_new<'gc>(
71637218 Err ( EvalError :: Js ( raise_type_error ! ( "Not a constructor" ) ) )
71647219 }
71657220 }
7166- _ => todo ! ( "New expression with non-object constructor not implemented yet" ) ,
7221+ _ => Err ( EvalError :: Js ( raise_type_error ! ( "Not a constructor" ) ) ) ,
71677222 }
71687223}
71697224
0 commit comments