@@ -309,6 +309,11 @@ def evaluate_and_or(node, scope, and_op:)
309309 end
310310 end
311311
312+ def operator_write_node_binop ( node )
313+ # `operator` is deprecated in Prism 0.29.0
314+ node . respond_to? ( :binary_operator ) ? node . binary_operator : node . operator
315+ end
316+
312317 def evaluate_call_operator_write_node ( node , scope ) = evaluate_call_write ( node , scope , :operator , node . write_name )
313318 def evaluate_call_and_write_node ( node , scope ) = evaluate_call_write ( node , scope , :and , node . write_name )
314319 def evaluate_call_or_write_node ( node , scope ) = evaluate_call_write ( node , scope , :or , node . write_name )
@@ -342,14 +347,14 @@ def evaluate_call_write(node, scope, operator, write_name)
342347 Types ::UnionType [ left , right ]
343348 else
344349 right = evaluate node . value , scope
345- method_call left , node . operator , [ right ] , nil , nil , scope , name_match : false
350+ method_call left , operator_write_node_binop ( node ) , [ right ] , nil , nil , scope , name_match : false
346351 end
347352 end
348353
349354 def evaluate_variable_operator_write ( node , scope )
350355 left = scope [ node . name . to_s ] || Types ::OBJECT
351356 right = evaluate node . value , scope
352- scope [ node . name . to_s ] = method_call left , node . operator , [ right ] , nil , nil , scope , name_match : false
357+ scope [ node . name . to_s ] = method_call left , operator_write_node_binop ( node ) , [ right ] , nil , nil , scope , name_match : false
353358 end
354359 alias evaluate_global_variable_operator_write_node evaluate_variable_operator_write
355360 alias evaluate_local_variable_operator_write_node evaluate_variable_operator_write
@@ -378,7 +383,7 @@ def evaluate_variable_or_write(node, scope)
378383 def evaluate_constant_operator_write_node ( node , scope )
379384 left = scope [ node . name . to_s ] || Types ::OBJECT
380385 right = evaluate node . value , scope
381- scope [ node . name . to_s ] = method_call left , node . operator , [ right ] , nil , nil , scope , name_match : false
386+ scope [ node . name . to_s ] = method_call left , operator_write_node_binop ( node ) , [ right ] , nil , nil , scope , name_match : false
382387 end
383388
384389 def evaluate_constant_and_write_node ( node , scope )
@@ -395,7 +400,7 @@ def evaluate_constant_or_write_node(node, scope)
395400 def evaluate_constant_path_operator_write_node ( node , scope )
396401 left , receiver , _parent_module , name = evaluate_constant_node_info node . target , scope
397402 right = evaluate node . value , scope
398- value = method_call left , node . operator , [ right ] , nil , nil , scope , name_match : false
403+ value = method_call left , operator_write_node_binop ( node ) , [ right ] , nil , nil , scope , name_match : false
399404 const_path_write receiver , name , value , scope
400405 value
401406 end
0 commit comments