diff --git a/examples/easy_api.rs b/examples/easy_api.rs index a68c9fc76..f4f888bdc 100644 --- a/examples/easy_api.rs +++ b/examples/easy_api.rs @@ -1,6 +1,4 @@ -use cairo_native::context::NativeContext; -use cairo_native::executor::JitNativeExecutor; -use cairo_native::values::JitValue; +use cairo_native::{context::NativeContext, executor::JitNativeExecutor, values::JitValue}; use starknet_types_core::felt::Felt; use std::path::Path; diff --git a/examples/erc20.rs b/examples/erc20.rs index 95993bd83..257f2d7db 100644 --- a/examples/erc20.rs +++ b/examples/erc20.rs @@ -1,11 +1,11 @@ use cairo_lang_compiler::CompilerConfig; use cairo_lang_starknet::contract_class::compile_path; -use cairo_native::context::NativeContext; -use cairo_native::executor::JitNativeExecutor; -use cairo_native::utils::find_entry_point_by_idx; use cairo_native::{ + context::NativeContext, + executor::JitNativeExecutor, metadata::syscall_handler::SyscallHandlerMeta, starknet::{BlockInfo, ExecutionInfo, StarkNetSyscallHandler, SyscallResult, TxInfo, U256}, + utils::find_entry_point_by_idx, }; use starknet_types_core::felt::Felt; use std::path::Path; @@ -224,58 +224,6 @@ impl StarkNetSyscallHandler for SyscallHandler { ) -> SyscallResult> { todo!() } - - fn pop_log(&mut self) { - todo!() - } - - fn set_account_contract_address(&mut self, _contract_address: Felt) { - todo!() - } - - fn set_block_number(&mut self, _block_number: u64) { - todo!() - } - - fn set_block_timestamp(&mut self, _block_timestamp: u64) { - todo!() - } - - fn set_caller_address(&mut self, _address: Felt) { - todo!() - } - - fn set_chain_id(&mut self, _chain_id: Felt) { - todo!() - } - - fn set_contract_address(&mut self, _address: Felt) { - todo!() - } - - fn set_max_fee(&mut self, _max_fee: u128) { - todo!() - } - - fn set_nonce(&mut self, _nonce: Felt) { - todo!() - } - - fn set_sequencer_address(&mut self, _address: Felt) { - todo!() - } - - fn set_signature(&mut self, _signature: &[Felt]) { - todo!() - } - - fn set_transaction_hash(&mut self, _transaction_hash: Felt) { - todo!() - } - - fn set_version(&mut self, _version: Felt) { - todo!() - } } fn main() { diff --git a/examples/invoke.rs b/examples/invoke.rs index 3a68ac655..98213ba64 100644 --- a/examples/invoke.rs +++ b/examples/invoke.rs @@ -1,6 +1,6 @@ -use cairo_native::executor::JitNativeExecutor; -use cairo_native::utils::find_entry_point; -use cairo_native::{context::NativeContext, values::JitValue}; +use cairo_native::{ + context::NativeContext, executor::JitNativeExecutor, utils::find_entry_point, values::JitValue, +}; use std::path::Path; use tracing_subscriber::{EnvFilter, FmtSubscriber}; diff --git a/examples/starknet.rs b/examples/starknet.rs index d0bff3cfc..2779731cb 100644 --- a/examples/starknet.rs +++ b/examples/starknet.rs @@ -1,11 +1,11 @@ use cairo_lang_compiler::CompilerConfig; use cairo_lang_starknet::contract_class::compile_path; -use cairo_native::context::NativeContext; -use cairo_native::executor::JitNativeExecutor; -use cairo_native::utils::find_entry_point_by_idx; use cairo_native::{ + context::NativeContext, + executor::JitNativeExecutor, metadata::syscall_handler::SyscallHandlerMeta, starknet::{BlockInfo, ExecutionInfo, StarkNetSyscallHandler, SyscallResult, TxInfo, U256}, + utils::find_entry_point_by_idx, }; use starknet_types_core::felt::Felt; use std::path::Path; diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 1afcc90d7..49e183e8e 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -457,21 +457,3 @@ pub unsafe extern "C" fn cairo_native__libfunc__ec__ec_state_try_finalize_nz( true } } - -// TODO: Remove from here. -#[no_mangle] -pub extern "C" fn __debug__breakpoint_marker() { - println!("[DEBUG] Breakpoint marker."); -} - -// TODO: Remove from here. -#[no_mangle] -pub extern "C" fn __debug__print_i1(value: bool) { - println!("[DEBUG] {value}"); -} - -// TODO: Remove from here. -#[no_mangle] -pub extern "C" fn __debug__print_pointer(value: *const ()) { - println!("[DEBUG] {value:018x?}"); -} diff --git a/src/error.rs b/src/error.rs index 08fcf937f..898c0dad0 100644 --- a/src/error.rs +++ b/src/error.rs @@ -4,6 +4,7 @@ pub use self::{ compile::Error as CompileError, jit_engine::Error as JitRunnerError, libfuncs::Error as CoreLibfuncBuilderError, types::Error as CoreTypeBuilderError, }; + pub mod compile; pub mod jit_engine; pub mod libfuncs; diff --git a/src/executor.rs b/src/executor.rs index 1e4eaa56c..0c17bee15 100644 --- a/src/executor.rs +++ b/src/executor.rs @@ -484,44 +484,7 @@ impl<'a> ArgumentMapper<'a> { | (CoreTypeConcrete::Poseidon(_), _) | (CoreTypeConcrete::RangeCheck(_), _) | (CoreTypeConcrete::SegmentArena(_), _) => {} - (sierra_ty, arg_ty) => match sierra_ty { - CoreTypeConcrete::Array(_) => todo!("Array {arg_ty:?}"), - CoreTypeConcrete::Bitwise(_) => todo!("Bitwise {arg_ty:?}"), - CoreTypeConcrete::Box(_) => todo!("Box {arg_ty:?}"), - CoreTypeConcrete::EcOp(_) => todo!("EcOp {arg_ty:?}"), - CoreTypeConcrete::EcPoint(_) => todo!("EcPoint {arg_ty:?}"), - CoreTypeConcrete::EcState(_) => todo!("EcState {arg_ty:?}"), - CoreTypeConcrete::Felt252(_) => todo!("Felt252 {arg_ty:?}"), - CoreTypeConcrete::GasBuiltin(_) => todo!("GasBuiltin {arg_ty:?}"), - CoreTypeConcrete::BuiltinCosts(_) => todo!("BuiltinCosts {arg_ty:?}"), - CoreTypeConcrete::Uint8(_) => todo!("Uint8 {arg_ty:?}"), - CoreTypeConcrete::Uint16(_) => todo!("Uint16 {arg_ty:?}"), - CoreTypeConcrete::Uint32(_) => todo!("Uint32 {arg_ty:?}"), - CoreTypeConcrete::Uint64(_) => todo!("Uint64 {arg_ty:?}"), - CoreTypeConcrete::Uint128(_) => todo!("Uint128 {arg_ty:?}"), - CoreTypeConcrete::Uint128MulGuarantee(_) => todo!("Uint128MulGuarantee {arg_ty:?}"), - CoreTypeConcrete::Sint8(_) => todo!("Sint8 {arg_ty:?}"), - CoreTypeConcrete::Sint16(_) => todo!("Sint16 {arg_ty:?}"), - CoreTypeConcrete::Sint32(_) => todo!("Sint32 {arg_ty:?}"), - CoreTypeConcrete::Sint64(_) => todo!("Sint64 {arg_ty:?}"), - CoreTypeConcrete::Sint128(_) => todo!("Sint128 {arg_ty:?}"), - CoreTypeConcrete::NonZero(_) => todo!("NonZero {arg_ty:?}"), - CoreTypeConcrete::Nullable(_) => todo!("Nullable {arg_ty:?}"), - CoreTypeConcrete::RangeCheck(_) => todo!("RangeCheck {arg_ty:?}"), - CoreTypeConcrete::Uninitialized(_) => todo!("Uninitialized {arg_ty:?}"), - CoreTypeConcrete::Enum(_) => todo!("Enum {arg_ty:?}"), - CoreTypeConcrete::Struct(_) => todo!("Struct {arg_ty:?}"), - CoreTypeConcrete::Felt252Dict(_) => todo!("Felt252Dict {arg_ty:?}"), - CoreTypeConcrete::Felt252DictEntry(_) => todo!("Felt252DictEntry {arg_ty:?}"), - CoreTypeConcrete::SquashedFelt252Dict(_) => todo!("SquashedFelt252Dict {arg_ty:?}"), - CoreTypeConcrete::Pedersen(_) => todo!("Pedersen {arg_ty:?}"), - CoreTypeConcrete::Poseidon(_) => todo!("Poseidon {arg_ty:?}"), - CoreTypeConcrete::Span(_) => todo!("Span {arg_ty:?}"), - CoreTypeConcrete::StarkNet(_) => todo!("StarkNet {arg_ty:?}"), - CoreTypeConcrete::SegmentArena(_) => todo!("SegmentArena {arg_ty:?}"), - CoreTypeConcrete::Snapshot(_) => todo!("Snapshot {arg_ty:?}"), - CoreTypeConcrete::Bytes31(_) => todo!("Bytes31 {arg_ty:?}"), - }, + (_, _) => todo!(), } Ok(()) diff --git a/src/libfuncs/ap_tracking.rs b/src/libfuncs/ap_tracking.rs index a64e83976..ece1a0edc 100644 --- a/src/libfuncs/ap_tracking.rs +++ b/src/libfuncs/ap_tracking.rs @@ -40,8 +40,6 @@ where ::Concrete: TypeBuilder, ::Concrete: LibfuncBuilder, { - // TODO: Is `revoke_ap_tracking` also a no-op? If it turns out it is NOT a no-op, update the - // docs. match selector { ApTrackingConcreteLibfunc::Revoke(info) => { build_revoke(context, registry, entry, location, helper, metadata, info) diff --git a/src/libfuncs/array.rs b/src/libfuncs/array.rs index f1712853e..b2c8b5ee9 100644 --- a/src/libfuncs/array.rs +++ b/src/libfuncs/array.rs @@ -808,7 +808,7 @@ where ::Concrete: TypeBuilder, ::Concrete: LibfuncBuilder, { - // same signature at sierra level + // Equivalent to `array_pop_front_consume` for our purposes. build_pop_front(context, registry, entry, location, helper, metadata, info) } @@ -828,8 +828,7 @@ where ::Concrete: TypeBuilder, ::Concrete: LibfuncBuilder, { - // same signature at sierra level - // TODO: is this really equal? + // Equivalent to `array_pop_front` for our purposes. build_pop_front(context, registry, entry, location, helper, metadata, info) } diff --git a/src/libfuncs/bitwise.rs b/src/libfuncs/bitwise.rs index 5008bab9f..403881feb 100644 --- a/src/libfuncs/bitwise.rs +++ b/src/libfuncs/bitwise.rs @@ -1,6 +1,4 @@ //! # Bitwise libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/bytes31.rs b/src/libfuncs/bytes31.rs index 9d5a5be36..8e73c8252 100644 --- a/src/libfuncs/bytes31.rs +++ b/src/libfuncs/bytes31.rs @@ -1,4 +1,4 @@ -//! # Struct-related libfuncs +//! # Bytes31-related libfuncs use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ @@ -209,7 +209,7 @@ mod test { use starknet_types_core::felt::Felt; lazy_static! { - // todo: bytes31_const is not yet possible in current cairo version. + // TODO: Test `bytes31_const` once the compiler supports it. static ref BYTES31_ROUNDTRIP: (String, Program) = load_cairo! { use core::bytes_31::{bytes31_try_from_felt252, bytes31_to_felt252}; diff --git a/src/libfuncs/cast.rs b/src/libfuncs/cast.rs index 47b0ec7aa..7232e4add 100644 --- a/src/libfuncs/cast.rs +++ b/src/libfuncs/cast.rs @@ -1,6 +1,4 @@ //! # Casting libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/debug.rs b/src/libfuncs/debug.rs index 182355e09..17962f35c 100644 --- a/src/libfuncs/debug.rs +++ b/src/libfuncs/debug.rs @@ -1,8 +1,6 @@ #![allow(dead_code)] //! # Debug libfuncs -//! -//! TODO // Printable: 9-13, 27, 32, 33-126 // is_ascii_graphic() -> 33-126 diff --git a/src/libfuncs/drop.rs b/src/libfuncs/drop.rs index 6c273b8f5..73d3e8dae 100644 --- a/src/libfuncs/drop.rs +++ b/src/libfuncs/drop.rs @@ -39,7 +39,7 @@ where ::Concrete: TypeBuilder, ::Concrete: LibfuncBuilder, { - // TODO: Implement drop for arrays. + // Note: Complex types implement drop within the type itself (in `build_drop`). let ty = registry.get_type(&info.signature.param_signatures[0].ty)?; ty.build_drop( diff --git a/src/libfuncs/dup.rs b/src/libfuncs/dup.rs index 2303205b2..3df1a8264 100644 --- a/src/libfuncs/dup.rs +++ b/src/libfuncs/dup.rs @@ -39,7 +39,11 @@ where ::Concrete: TypeBuilder, ::Concrete: LibfuncBuilder, { - // TODO: Handle non-trivially-copyable types (ex. arrays) and maybe update docs. + // Note: All non-trivially-copyable are automatically handled by the cairo compiler (to Sierra). + // In other words, this function will only be called for copyable types. + // + // Proof: The following code will fail in Cairo with an unsupported generic argument: + // `dup(ArrayTrait::::new())`. entry.append_operation(helper.br( 0, diff --git a/src/libfuncs/ec.rs b/src/libfuncs/ec.rs index 204c106cb..2e84d61e4 100644 --- a/src/libfuncs/ec.rs +++ b/src/libfuncs/ec.rs @@ -1,6 +1,4 @@ //! # Elliptic curve libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ @@ -11,10 +9,7 @@ use crate::{ metadata::{ prime_modulo::PrimeModuloMeta, runtime_bindings::RuntimeBindingsMeta, MetadataStorage, }, - types::{ - felt252::{register_prime_modulo_meta, Felt252}, - TypeBuilder, - }, + types::{felt252::register_prime_modulo_meta, TypeBuilder}, utils::{get_integer_layout, ProgramRegistryExt}, }; use cairo_lang_sierra::{ @@ -37,6 +32,7 @@ use melior::{ }, Context, }; +use starknet_types_core::felt::Felt; /// Select and call the correct libfunc builder function from the selector. pub fn build<'ctx, 'this, TType, TLibfunc>( @@ -192,7 +188,7 @@ where context, &format!( "{} : i252", - match metadata.get::>() { + match metadata.get::>() { Some(x) => x.prime(), None => { // Since the `EcPoint` type is external, there is no guarantee that diff --git a/src/libfuncs/felt252.rs b/src/libfuncs/felt252.rs index 8004c83e6..29d6901c6 100644 --- a/src/libfuncs/felt252.rs +++ b/src/libfuncs/felt252.rs @@ -7,7 +7,7 @@ use crate::{ CoreTypeBuilderError, }, metadata::{prime_modulo::PrimeModuloMeta, MetadataStorage}, - types::{felt252::Felt252, TypeBuilder}, + types::TypeBuilder, utils::{mlir_asm, ProgramRegistryExt}, }; use cairo_lang_sierra::{ @@ -33,6 +33,7 @@ use melior::{ Context, }; use num_bigint::{Sign, ToBigInt}; +use starknet_types_core::felt::Felt; /// Select and call the correct libfunc builder function from the selector. pub fn build<'ctx, 'this, TType, TLibfunc>( @@ -99,7 +100,7 @@ where &format!( "{} : {i256}", metadata - .get::>() + .get::>() .ok_or(ErrorImpl::MissingMetadata)? .prime() ), @@ -110,7 +111,7 @@ where &format!( "{} : {i512}", metadata - .get::>() + .get::>() .ok_or(ErrorImpl::MissingMetadata)? .prime() ), @@ -138,7 +139,7 @@ where let value = match operation.c.sign() { Sign::Minus => { let prime = metadata - .get::>() + .get::>() .ok_or(ErrorImpl::MissingMetadata)? .prime(); (&operation.c + prime.to_bigint().expect("always is Some")) @@ -151,7 +152,7 @@ where let attr_c = Attribute::parse(context, &format!("{value} : {felt252_ty}")) .ok_or(ErrorImpl::MissingMetadata)?; - // TODO: Ensure that the constant is on the right side of the operation. + // TODO: Ensure that the constant is on the correct side of the operation. mlir_asm! { context, entry, location => ; rhs = "arith.constant"() { "value" = attr_c } : () -> felt252_ty } @@ -420,7 +421,7 @@ where let value = match info.c.sign() { Sign::Minus => { let prime = metadata - .get::>() + .get::>() .ok_or(ErrorImpl::MissingMetadata)? .prime(); (&info.c + prime.to_bigint().expect("always is Some")) diff --git a/src/libfuncs/felt252_dict_entry.rs b/src/libfuncs/felt252_dict_entry.rs index e4df1f9b3..bfe0f7511 100644 --- a/src/libfuncs/felt252_dict_entry.rs +++ b/src/libfuncs/felt252_dict_entry.rs @@ -1,6 +1,4 @@ //! # `Felt` dictionary entry libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/gas.rs b/src/libfuncs/gas.rs index 1c75fcc98..40fabfc36 100644 --- a/src/libfuncs/gas.rs +++ b/src/libfuncs/gas.rs @@ -1,6 +1,4 @@ //! # Gas management libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/snapshot_take.rs b/src/libfuncs/snapshot_take.rs index 9fe705000..273e97033 100644 --- a/src/libfuncs/snapshot_take.rs +++ b/src/libfuncs/snapshot_take.rs @@ -1,6 +1,4 @@ //! # Snapshot taking libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/stark_net.rs b/src/libfuncs/stark_net.rs index 1b5597274..aab4a19d4 100644 --- a/src/libfuncs/stark_net.rs +++ b/src/libfuncs/stark_net.rs @@ -1,6 +1,4 @@ //! # StarkNet libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/uint128.rs b/src/libfuncs/uint128.rs index fd8f2322c..5cf10703a 100644 --- a/src/libfuncs/uint128.rs +++ b/src/libfuncs/uint128.rs @@ -823,13 +823,11 @@ mod test { u128_byte_reverse(value) } }; - static ref U128_CONST: (String, Program) = load_cairo! { fn run_test() -> u128 { 1234567890 } }; - static ref U128_SAFE_DIVMOD: (String, Program) = load_cairo! { fn run_test(lhs: u128, rhs: u128) -> (u128, u128) { let q = lhs / rhs; @@ -838,13 +836,11 @@ mod test { (q, r) } }; - static ref U128_EQUAL: (String, Program) = load_cairo! { fn run_test(lhs: u128, rhs: u128) -> bool { lhs == rhs } }; - static ref U128_FROM_FELT252: (String, Program) = load_cairo! { enum U128sFromFelt252Result { Narrow: u128, @@ -857,9 +853,6 @@ mod test { u128s_from_felt252(value) } }; - - // TODO: Add test program for `u128_guarantee_mul`. - static ref U128_IS_ZERO: (String, Program) = load_cairo! { use zeroable::IsZeroResult; @@ -872,28 +865,22 @@ mod test { } } }; - - // TODO: Add test program for `u128_mul_guarantee_verify`. - static ref U128_ADD: (String, Program) = load_cairo! { fn run_test(lhs: u128, rhs: u128) -> u128 { lhs + rhs } }; - static ref U128_SUB: (String, Program) = load_cairo! { fn run_test(lhs: u128, rhs: u128) -> u128 { lhs - rhs } }; - static ref U128_WIDEMUL: (String, Program) = load_cairo! { use integer::u128_wide_mul; fn run_test(lhs: u128, rhs: u128) -> (u128, u128) { u128_wide_mul(lhs, rhs) } }; - static ref U128_TO_FELT252: (String, Program) = load_cairo! { extern fn u128_to_felt252(a: u128) -> felt252 nopanic; @@ -901,7 +888,6 @@ mod test { u128_to_felt252(value) } }; - static ref U128_SQRT: (String, Program) = load_cairo! { use core::integer::u128_sqrt; diff --git a/src/libfuncs/uint256.rs b/src/libfuncs/uint256.rs index e97015d7c..0247c83fc 100644 --- a/src/libfuncs/uint256.rs +++ b/src/libfuncs/uint256.rs @@ -1,6 +1,4 @@ //! # `u256`-related libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/libfuncs/uint512.rs b/src/libfuncs/uint512.rs index 3fe018fad..b9628491e 100644 --- a/src/libfuncs/uint512.rs +++ b/src/libfuncs/uint512.rs @@ -1,6 +1,4 @@ //! # `u512`-related libfuncs -//! -//! TODO use super::{LibfuncBuilder, LibfuncHelper}; use crate::{ diff --git a/src/starknet.rs b/src/starknet.rs index b8cd28440..05f122d1e 100644 --- a/src/starknet.rs +++ b/src/starknet.rs @@ -187,32 +187,57 @@ pub trait StarkNetSyscallHandler { ) -> SyscallResult>; // Testing syscalls. - // TODO: Make them optional. Crash if called but not implemented. - fn pop_log(&mut self); + fn pop_log(&mut self) { + unimplemented!() + } - fn set_account_contract_address(&mut self, contract_address: Felt); + fn set_account_contract_address(&mut self, _contract_address: Felt) { + unimplemented!() + } - fn set_block_number(&mut self, block_number: u64); + fn set_block_number(&mut self, _block_number: u64) { + unimplemented!() + } - fn set_block_timestamp(&mut self, block_timestamp: u64); + fn set_block_timestamp(&mut self, _block_timestamp: u64) { + unimplemented!() + } - fn set_caller_address(&mut self, address: Felt); + fn set_caller_address(&mut self, _address: Felt) { + unimplemented!() + } - fn set_chain_id(&mut self, chain_id: Felt); + fn set_chain_id(&mut self, _chain_id: Felt) { + unimplemented!() + } - fn set_contract_address(&mut self, address: Felt); + fn set_contract_address(&mut self, _address: Felt) { + unimplemented!() + } - fn set_max_fee(&mut self, max_fee: u128); + fn set_max_fee(&mut self, _max_fee: u128) { + unimplemented!() + } - fn set_nonce(&mut self, nonce: Felt); + fn set_nonce(&mut self, _nonce: Felt) { + unimplemented!() + } - fn set_sequencer_address(&mut self, address: Felt); + fn set_sequencer_address(&mut self, _address: Felt) { + unimplemented!() + } - fn set_signature(&mut self, signature: &[Felt]); + fn set_signature(&mut self, _signature: &[Felt]) { + unimplemented!() + } - fn set_transaction_hash(&mut self, transaction_hash: Felt); + fn set_transaction_hash(&mut self, _transaction_hash: Felt) { + unimplemented!() + } - fn set_version(&mut self, version: Felt); + fn set_version(&mut self, _version: Felt) { + unimplemented!() + } } // TODO: Move to the correct place or remove if unused. diff --git a/src/types.rs b/src/types.rs index cb0034250..9d0e9c9d9 100644 --- a/src/types.rs +++ b/src/types.rs @@ -22,10 +22,7 @@ use cairo_lang_sierra::{ }; use melior::{ dialect::llvm::{self, r#type::opaque_pointer}, - ir::{attribute::DenseI64ArrayAttribute, Block, Location, Value}, -}; -use melior::{ - ir::{Module, Type}, + ir::{attribute::DenseI64ArrayAttribute, Block, Location, Module, Type, Value}, Context, }; use std::{alloc::Layout, error::Error, ops::Deref}; @@ -539,13 +536,13 @@ where CoreTypeConcrete::EcState(_) => layout_repeat(&get_integer_layout(252), 4)?.0, CoreTypeConcrete::Felt252(_) => get_integer_layout(252), CoreTypeConcrete::GasBuiltin(_) => get_integer_layout(128), - CoreTypeConcrete::BuiltinCosts(_) => Layout::new::<()>(), // TODO: Figure out builtins layout. + CoreTypeConcrete::BuiltinCosts(_) => Layout::new::<()>(), CoreTypeConcrete::Uint8(_) => get_integer_layout(8), CoreTypeConcrete::Uint16(_) => get_integer_layout(16), CoreTypeConcrete::Uint32(_) => get_integer_layout(32), CoreTypeConcrete::Uint64(_) => get_integer_layout(64), CoreTypeConcrete::Uint128(_) => get_integer_layout(128), - CoreTypeConcrete::Uint128MulGuarantee(_) => Layout::new::<()>(), // TODO: Figure out builtins layout. + CoreTypeConcrete::Uint128MulGuarantee(_) => Layout::new::<()>(), CoreTypeConcrete::NonZero(info) => registry.get_type(&info.ty)?.layout(registry)?, CoreTypeConcrete::Nullable(_) => Layout::new::<*mut ()>(), CoreTypeConcrete::RangeCheck(_) => Layout::new::<()>(), diff --git a/src/types/builtin_costs.rs b/src/types/builtin_costs.rs index 910e161bb..8b88c1dc5 100644 --- a/src/types/builtin_costs.rs +++ b/src/types/builtin_costs.rs @@ -1,6 +1,4 @@ //! # Builtin costs type -//! -//! TODO use super::{TypeBuilder, WithSelf}; use crate::{ diff --git a/src/types/felt252.rs b/src/types/felt252.rs index f877d79b7..b42bd4949 100644 --- a/src/types/felt252.rs +++ b/src/types/felt252.rs @@ -19,6 +19,7 @@ use melior::{ Context, }; use num_bigint::{BigInt, BigUint}; +use starknet_types_core::felt::Felt; lazy_static! { /// The `felt252` prime modulo. @@ -32,12 +33,6 @@ lazy_static! { .unwrap(); } -/// Marker type for the [PrimeModuloMeta] metadata. -// TODO: Maybe we should use the JIT value (in `crate::values::Felt`) instead of defining a dummy -// type? -#[derive(Debug)] -pub struct Felt252; - /// Build the MLIR type. /// /// Check out [the module](self) for more info. @@ -53,7 +48,7 @@ where TLibfunc: GenericLibfunc, ::Concrete: TypeBuilder, { - match metadata.get::>() { + match metadata.get::>() { Some(x) => assert_eq!(x.prime(), &*PRIME), None => { register_prime_modulo_meta(metadata); @@ -63,8 +58,8 @@ where Ok(IntegerType::new(context, 252).into()) } -pub fn register_prime_modulo_meta(metadata: &mut MetadataStorage) -> &mut PrimeModuloMeta { +pub fn register_prime_modulo_meta(metadata: &mut MetadataStorage) -> &mut PrimeModuloMeta { metadata - .insert(PrimeModuloMeta::::new(PRIME.clone())) + .insert(PrimeModuloMeta::::new(PRIME.clone())) .unwrap() } diff --git a/src/types/segment_arena.rs b/src/types/segment_arena.rs index 4b019104a..fbd6ca36d 100644 --- a/src/types/segment_arena.rs +++ b/src/types/segment_arena.rs @@ -1,6 +1,4 @@ //! # Segment arena type -//! -//! TODO use super::{TypeBuilder, WithSelf}; use crate::{ diff --git a/src/types/squashed_felt252_dict.rs b/src/types/squashed_felt252_dict.rs index 70901a67b..61a3c46d7 100644 --- a/src/types/squashed_felt252_dict.rs +++ b/src/types/squashed_felt252_dict.rs @@ -1,6 +1,4 @@ //! # Squashed `Felt` dictionary type -//! -//! TODO use super::{TypeBuilder, WithSelf}; use crate::{ diff --git a/src/types/uninitialized.rs b/src/types/uninitialized.rs index 96e1a085d..47cdaf46f 100644 --- a/src/types/uninitialized.rs +++ b/src/types/uninitialized.rs @@ -1,6 +1,4 @@ //! # Uninitialized type -//! -//! TODO use super::{TypeBuilder, WithSelf}; use crate::{ diff --git a/src/utils.rs b/src/utils.rs index 6ea547c03..478ec32eb 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1098,57 +1098,5 @@ pub mod test { ) -> SyscallResult> { todo!() } - - fn pop_log(&mut self) { - todo!() - } - - fn set_account_contract_address(&mut self, _contract_address: Felt) { - todo!() - } - - fn set_block_number(&mut self, _block_number: u64) { - todo!() - } - - fn set_block_timestamp(&mut self, _block_timestamp: u64) { - todo!() - } - - fn set_caller_address(&mut self, _address: Felt) { - todo!() - } - - fn set_chain_id(&mut self, _chain_id: Felt) { - todo!() - } - - fn set_contract_address(&mut self, _address: Felt) { - todo!() - } - - fn set_max_fee(&mut self, _max_fee: u128) { - todo!() - } - - fn set_nonce(&mut self, _nonce: Felt) { - todo!() - } - - fn set_sequencer_address(&mut self, _address: Felt) { - todo!() - } - - fn set_signature(&mut self, _signature: &[Felt]) { - todo!() - } - - fn set_transaction_hash(&mut self, _transaction_hash: Felt) { - todo!() - } - - fn set_version(&mut self, _version: Felt) { - todo!() - } } } diff --git a/tests/boolean.rs b/tests/boolean.rs index ce1056b1e..d06d5ad21 100644 --- a/tests/boolean.rs +++ b/tests/boolean.rs @@ -111,7 +111,7 @@ lazy_static! { // Since comparing a felt to 1 to create boolean (uses felt252_is_zero and felt sub,add) has a bug, // we'll be using use u8 on other tests until this is fixed. The bug may be in felt subtraction. -#[ignore = "TODO: comparing a Felt == 1 will lead to wrong results"] +#[ignore = "comparing a Felt == 1 will lead to wrong results"] #[test] fn felt252_to_bool_bug() { let program = &FELT252_TO_BOOL; diff --git a/tests/starknet/keccak.rs b/tests/starknet/keccak.rs index bca6ee3ce..a4acdebc0 100644 --- a/tests/starknet/keccak.rs +++ b/tests/starknet/keccak.rs @@ -1,3 +1,4 @@ +use crate::common::run_native_starknet_contract; use cairo_lang_compiler::CompilerConfig; use cairo_lang_starknet::contract_class::{compile_path, ContractClass}; use cairo_native::starknet::{ @@ -7,8 +8,6 @@ use lazy_static::lazy_static; use starknet_types_core::felt::Felt; use std::path::Path; -use crate::common::run_native_starknet_contract; - #[derive(Debug)] struct SyscallHandler; @@ -223,58 +222,6 @@ impl StarkNetSyscallHandler for SyscallHandler { ) -> SyscallResult> { todo!() } - - fn pop_log(&mut self) { - todo!() - } - - fn set_account_contract_address(&mut self, _contract_address: Felt) { - todo!() - } - - fn set_block_number(&mut self, _block_number: u64) { - todo!() - } - - fn set_block_timestamp(&mut self, _block_timestamp: u64) { - todo!() - } - - fn set_caller_address(&mut self, _address: Felt) { - todo!() - } - - fn set_chain_id(&mut self, _chain_id: Felt) { - todo!() - } - - fn set_contract_address(&mut self, _address: Felt) { - todo!() - } - - fn set_max_fee(&mut self, _max_fee: u128) { - todo!() - } - - fn set_nonce(&mut self, _nonce: Felt) { - todo!() - } - - fn set_sequencer_address(&mut self, _address: Felt) { - todo!() - } - - fn set_signature(&mut self, _signature: &[Felt]) { - todo!() - } - - fn set_transaction_hash(&mut self, _transaction_hash: Felt) { - todo!() - } - - fn set_version(&mut self, _version: Felt) { - todo!() - } } lazy_static! {