diff --git a/Cargo.lock b/Cargo.lock index c3c7d90d17d..3d672b38012 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -702,6 +702,7 @@ dependencies = [ "serde", "starknet-types-core", "thiserror", + "tracing", ] [[package]] @@ -4180,6 +4181,7 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", diff --git a/crates/cairo-lang-lowering/Cargo.toml b/crates/cairo-lang-lowering/Cargo.toml index 37458a327f0..f858252fb2b 100644 --- a/crates/cairo-lang-lowering/Cargo.toml +++ b/crates/cairo-lang-lowering/Cargo.toml @@ -28,6 +28,8 @@ salsa.workspace = true serde = { workspace = true, default-features = true } starknet-types-core.workspace = true thiserror.workspace = true +tracing = { workspace = true, features = ["log"] } + [dev-dependencies] cairo-lang-plugins = { path = "../cairo-lang-plugins" } diff --git a/crates/cairo-lang-lowering/src/optimizations/mod.rs b/crates/cairo-lang-lowering/src/optimizations/mod.rs index a8b41ab7fde..df5a80a67ef 100644 --- a/crates/cairo-lang-lowering/src/optimizations/mod.rs +++ b/crates/cairo-lang-lowering/src/optimizations/mod.rs @@ -1,3 +1,23 @@ +/// Macro for debug logging with "optimization" target. +#[allow(unused)] +macro_rules! debug { + ($($arg:tt)*) => { + tracing::debug!(target: "optimization", $($arg)*) + }; +} +#[allow(unused_imports)] +pub(crate) use debug; + +/// Macro for trace logging with "optimization" target. +#[allow(unused)] +macro_rules! trace { + ($($arg:tt)*) => { + tracing::trace!(target: "optimization", $($arg)*) + }; +} +#[allow(unused_imports)] +pub(crate) use trace; + pub mod branch_inversion; pub mod cancel_ops; pub mod config; diff --git a/crates/cairo-lang-lowering/src/optimizations/strategy.rs b/crates/cairo-lang-lowering/src/optimizations/strategy.rs index 21ec55a50a0..3e197fb9859 100644 --- a/crates/cairo-lang-lowering/src/optimizations/strategy.rs +++ b/crates/cairo-lang-lowering/src/optimizations/strategy.rs @@ -69,6 +69,8 @@ impl<'db> OptimizationPhase<'db> { function: ConcreteFunctionWithBodyId<'db>, lowered: &mut Lowered<'db>, ) -> Maybe<()> { + debug!("Applying optimization: {self:?}"); + match self { OptimizationPhase::ApplyInlining { enable_const_folding } => { apply_inlining(db, function, lowered, enable_const_folding)? diff --git a/crates/cairo-lang-test-utils/src/parse_test_file.rs b/crates/cairo-lang-test-utils/src/parse_test_file.rs index 3b1780054ba..eb993495a52 100644 --- a/crates/cairo-lang-test-utils/src/parse_test_file.rs +++ b/crates/cairo-lang-test-utils/src/parse_test_file.rs @@ -102,12 +102,14 @@ pub fn dump_to_test_file( for (test_name, test) in tests { let mut tag_strings = vec![TAG_PREFIX.to_string() + &test_name]; for (tag, content) in test.attributes { - tag_strings.push( - TAG_PREFIX.to_string() - + &tag - + if content.is_empty() { "" } else { "\n" } - + &content, - ); + if tag != "test_name" { + tag_strings.push( + TAG_PREFIX.to_string() + + &tag + + if content.is_empty() { "" } else { "\n" } + + &content, + ); + } } test_strings.push(tag_strings.join("\n\n")); } @@ -139,8 +141,11 @@ impl TestBuilder { } fn set_test_name(&mut self, line: String, line_num: usize) { - self.current_test_name = Some(line); - self.current_test = Some(Test { attributes: OrderedHashMap::default(), line_num }); + self.current_test_name = Some(line.clone()); + self.current_test = Some(Test { + attributes: OrderedHashMap::from([("test_name".to_string(), line)]), + line_num, + }); } fn add_content_line(&mut self, line: String) {