@@ -620,6 +620,7 @@ def _build_parameters(model: StateStaticTest) -> list[ParameterCaseIR]:
620620def _resolve_storage_values (
621621 storage : dict [int , int ],
622622 addr_to_var : dict [Address | EOA , str ],
623+ imports : ImportsIR | None = None ,
623624) -> dict [int , int | str ]:
624625 """Replace storage values matching known addresses with var names."""
625626 if not storage or not addr_to_var :
@@ -628,10 +629,25 @@ def _resolve_storage_values(
628629 int_to_var : dict [int , str ] = {}
629630 for addr , var_name in addr_to_var .items ():
630631 int_to_var [int .from_bytes (addr , "big" )] = var_name
632+ # Also build CREATE-derived address lookup
633+ create_to_expr : dict [int , str ] = {}
634+ for addr , var_name in addr_to_var .items ():
635+ for nonce in range (256 ):
636+ created = compute_create_address (address = addr , nonce = nonce )
637+ created_int = int .from_bytes (created , "big" )
638+ if created_int not in int_to_var :
639+ create_to_expr [created_int ] = (
640+ f"compute_create_address(address={ var_name } ,"
641+ f" nonce={ nonce } )"
642+ )
631643 result : dict [int , int | str ] = {}
632644 for k , v in storage .items ():
633645 if v in int_to_var :
634646 result [k ] = int_to_var [v ]
647+ elif v in create_to_expr :
648+ if imports is not None :
649+ imports .needs_compute_create_address = True
650+ result [k ] = create_to_expr [v ]
635651 else :
636652 result [k ] = v
637653 return result
@@ -775,7 +791,9 @@ def _build_accounts(
775791 resolved_storage = account .storage .resolve (tags )
776792 for k , v in resolved_storage .items ():
777793 storage [int (k )] = int (v )
778- storage = _resolve_storage_values (storage , addr_to_var )
794+ storage = _resolve_storage_values (
795+ storage , addr_to_var , imports
796+ )
779797
780798 # Balance and nonce
781799 balance = int (account .balance ) if account .balance is not None else 0
@@ -1098,7 +1116,9 @@ def _build_expect_entries(
10981116 resolved_storage = account_expect .storage .resolve (tags )
10991117 for k , v in resolved_storage .items ():
11001118 storage [int (k )] = int (v )
1101- storage = _resolve_storage_values (storage , addr_to_var )
1119+ storage = _resolve_storage_values (
1120+ storage , addr_to_var , imports
1121+ )
11021122 # Capture ANY keys from _any_map
11031123 if hasattr (resolved_storage , "_any_map" ):
11041124 for k in resolved_storage ._any_map :
0 commit comments