@@ -2,7 +2,11 @@ use std::collections::{BTreeMap, HashMap, HashSet};
22use std:: sync:: Arc ;
33
44use async_trait:: async_trait;
5- use blockifier:: execution:: contract_class:: { CompiledClassV1 , RunnableCompiledClass } ;
5+ use blockifier:: execution:: contract_class:: {
6+ program_hints_to_casm_hints,
7+ CompiledClassV1 ,
8+ RunnableCompiledClass ,
9+ } ;
610use blockifier:: state:: state_api:: StateReader ;
711use blockifier:: state:: state_reader_and_contract_manager:: {
812 FetchCompiledClasses ,
@@ -20,9 +24,10 @@ use crate::errors::ClassesProviderError;
2024/// Converts a `CompiledClassV1` to a `CasmContractClass` for OS execution.
2125/// Note: Some fields are not preserved in `CompiledClassV1` and are set to default values:
2226/// - `compiler_version`: Set to empty string
23- /// - `hints`: Set to empty (OS doesn't use them from this struct for Cairo 1 contracts)
2427/// - `pythonic_hints`: Set to None
25- fn compiled_class_v1_to_casm ( class : & CompiledClassV1 ) -> CasmContractClass {
28+ pub ( crate ) fn compiled_class_v1_to_casm (
29+ class : & CompiledClassV1 ,
30+ ) -> Result < CasmContractClass , ClassesProviderError > {
2631 // TODO(Aviv): Consider using dummy prime since it is not used in the OS.
2732 let prime = Felt :: prime ( ) ;
2833
@@ -35,15 +40,15 @@ fn compiled_class_v1_to_casm(class: &CompiledClassV1) -> CasmContractClass {
3540 } )
3641 . collect ( ) ;
3742
38- CasmContractClass {
43+ Ok ( CasmContractClass {
3944 prime,
4045 compiler_version : String :: new ( ) ,
4146 bytecode,
4247 bytecode_segment_lengths : Some ( class. bytecode_segment_felt_sizes ( ) . into ( ) ) ,
43- hints : Vec :: new ( ) ,
48+ hints : program_hints_to_casm_hints ( & class . program . shared_program_data . hints_collection ) ? ,
4449 pythonic_hints : None ,
4550 entry_points_by_type : ( & class. entry_points_by_type ) . into ( ) ,
46- }
51+ } )
4752}
4853
4954/// Fetch class from the state reader and contract manager.
@@ -65,13 +70,13 @@ where
6570 Err ( ClassesProviderError :: DeprecatedContractError ( class_hash) )
6671 }
6772 RunnableCompiledClass :: V1 ( compiled_class_v1) => {
68- let casm = compiled_class_v1_to_casm ( & compiled_class_v1) ;
73+ let casm = compiled_class_v1_to_casm ( & compiled_class_v1) ? ;
6974 Ok ( ( compiled_class_hash, casm) )
7075 }
7176 #[ cfg( feature = "cairo_native" ) ]
7277 RunnableCompiledClass :: V1Native ( compiled_class_v1_native) => {
7378 let compiled_class_v1 = compiled_class_v1_native. casm ( ) ;
74- let casm = compiled_class_v1_to_casm ( & compiled_class_v1) ;
79+ let casm = compiled_class_v1_to_casm ( & compiled_class_v1) ? ;
7580 Ok ( ( compiled_class_hash, casm) )
7681 }
7782 }
0 commit comments