@@ -15,11 +15,12 @@ use crate::conv::checker::inst::check_inst;
1515use crate :: conv:: checker:: modport:: { check_modport, check_modport_default, check_modport_in_port} ;
1616use crate :: conv:: checker:: port:: { check_direction, check_port_default_value, check_port_direction} ;
1717use crate :: conv:: utils:: {
18- TypePosition , check_assign_clock_domain, eval_array_range_assign, eval_assign_statement,
19- eval_clock, eval_const_assign, eval_expr, eval_factor_symbol, eval_factor_symbol_external,
20- eval_generate_for_range, eval_reset, eval_size, eval_type, eval_variable, expand_connect,
21- expand_connect_const, get_component, get_overridden_params, get_port_connects, get_return_str,
22- insert_port_connect, try_infer_decl_type, try_infer_var_assign, var_path_to_assign_destination,
18+ TypePosition , assign_rhs_context_type, check_assign_clock_domain, eval_array_range_assign,
19+ eval_assign_statement, eval_clock, eval_const_assign, eval_expr, eval_factor_symbol,
20+ eval_factor_symbol_external, eval_generate_for_range, eval_reset, eval_size, eval_type,
21+ eval_variable, expand_connect, expand_connect_const, get_component, get_overridden_params,
22+ get_port_connects, get_return_str, insert_port_connect, try_infer_decl_type,
23+ try_infer_var_assign, var_path_to_assign_destination,
2324} ;
2425use crate :: conv:: { Affiliation , Context , Conv } ;
2526use crate :: definition_table:: { self , Definition } ;
@@ -948,12 +949,8 @@ impl Conv<&AssignDeclaration> for ir::Declaration {
948949 let mut expr = if let Some ( inferred) = inferred {
949950 inferred
950951 } else {
951- eval_expr (
952- context,
953- Some ( dst. comptime . r#type . clone ( ) ) ,
954- & value. expression ,
955- false ,
956- ) ?
952+ let ctx_type = assign_rhs_context_type ( context, & dst) ;
953+ eval_expr ( context, Some ( ctx_type) , & value. expression , false ) ?
957954 } ;
958955
959956 let statements = eval_assign_statement ( context, & mut dst, & mut expr, token) ?;
0 commit comments