diff --git a/src/metadata/trace_dump.rs b/src/metadata/trace_dump.rs index 6742d5683..a3fb3833b 100644 --- a/src/metadata/trace_dump.rs +++ b/src/metadata/trace_dump.rs @@ -810,8 +810,84 @@ pub mod trace_dump_runtime { Value::Bytes31(Felt::from_bytes_le(&data)) } - CoreTypeConcrete::IntRange(_) - | CoreTypeConcrete::Blake(_) + CoreTypeConcrete::IntRange(info) => { + let type_info = registry.get_type(&info.ty).unwrap(); + + match type_info { + CoreTypeConcrete::Sint8(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Sint16(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Sint32(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Sint64(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Sint128(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Uint8(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Uint16(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Uint32(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Uint64(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + CoreTypeConcrete::Uint128(_) => { + let value = value_ptr.cast::>().read(); + Value::IntRange { + x: Box::new(value.x.into()), + y: Box::new(value.y.into()), + } + } + _ => unreachable!(), + } + } + CoreTypeConcrete::Blake(_) | CoreTypeConcrete::GasReserve(_) | CoreTypeConcrete::QM31(_) => { todo!() @@ -833,6 +909,13 @@ pub mod trace_dump_runtime { BigUint::from_bytes_le(&output_limbs) } + #[derive(Debug)] + #[repr(C)] + struct IntRange { + x: T, + y: T, + } + #[derive(Debug)] struct FeltDictEntry<'a> { dict: &'a FeltDict,