gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 89Markdown 11TOML 91930 Sutichaykuna

Fix debug mode (#631)

* Fix compilation of debug mode

* Enable debug_log! macro to be used in expression contexts

* Debug log individual grid track sizes

* Add CI check to ensure that debug feature compiles

d920d5f15282dc8a92ddda4f7f9588550c8224ab · ruwaq Nico Burns · (2 wata ñawpaq) · tayta b3ee315cc · kay commitpi sach'ata qhaway

Semántico sayk'uy · 4

src/compute/grid/mod.rs

src/compute/mod.rs

src/util/debug.rs

4 qillqakuna · +22 −12

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2bc4db5b4..4670d290d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -30,6 +30,14 @@ jobs:
           toolchain: 1.65
       - run: cargo build
 
+  test-features-debug:
+    name: "Build [debug feature]"
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@stable
+      - run: cargo build --features debug
+
   # No features
   test-features-none:
     name: "Test Suite [no features]"
diff --git a/src/compute/grid/mod.rs b/src/compute/grid/mod.rs
index de787415c..cc755769e 100644
--- a/src/compute/grid/mod.rs
+++ b/src/compute/grid/mod.rs
@@ -206,7 +206,9 @@ pub fn compute_grid_layout(tree: &mut impl LayoutPartialTree, node: NodeId, inpu
     inner_node_size.height = inner_node_size.height.or_else(|| initial_row_sum.into());
 
     debug_log!("initial_column_sum", dbg:initial_column_sum);
+    debug_log!(dbg: columns.iter().map(|track| track.base_size).collect::<Vec<_>>());
     debug_log!("initial_row_sum", dbg:initial_row_sum);
+    debug_log!(dbg: rows.iter().map(|track| track.base_size).collect::<Vec<_>>());
 
     // 6. Compute container size
     let resolved_style_size = known_dimensions.or(preferred_size);
diff --git a/src/compute/mod.rs b/src/compute/mod.rs
index 09aa7226a..f78a22df9 100644
--- a/src/compute/mod.rs
+++ b/src/compute/mod.rs
@@ -108,7 +108,7 @@ where
     let cache_entry = tree.get_cache_mut(node).get(known_dimensions, available_space, run_mode);
     if let Some(cached_size_and_baselines) = cache_entry {
         debug_log!("CACHE", dbg:cached_size_and_baselines.size);
-        debug_log_node!(known_dimensions, parent_size, available_space, run_mode, sizing_mode);
+        debug_log_node!(known_dimensions, inputs.parent_size, available_space, run_mode, inputs.sizing_mode);
         debug_pop_node!();
         return cached_size_and_baselines;
     }
diff --git a/src/util/debug.rs b/src/util/debug.rs
index d05025f18..c0de89821 100644
--- a/src/util/debug.rs
+++ b/src/util/debug.rs
@@ -19,7 +19,7 @@ impl DebugLogger {
         Self { stack: Mutex::new(Vec::new()) }
     }
 
-    pub fn push_node(&self, new_key: NodeId) {
+    pub fn push_node(&self, new_key: crate::NodeId) {
         let mut stack = self.stack.lock().unwrap();
         let mut key_string = String::new();
         write!(&mut key_string, "{:?}", new_key).unwrap();
@@ -69,30 +69,30 @@ pub(crate) static NODE_LOGGER: DebugLogger = DebugLogger::new();
 
 macro_rules! debug_log {
     // String literal label with debug printing
-    ($label:literal, dbg:$item:expr) => {
+    ($label:literal, dbg:$item:expr) => {{
         #[cfg(feature = "debug")]
         $crate::util::debug::NODE_LOGGER.labelled_debug_log($label, $item);
-    };
+    }};
     // String literal label with display printing
-    ($label:literal, $item:expr) => {
+    ($label:literal, $item:expr) => {{
         #[cfg(feature = "debug")]
         $crate::util::debug::NODE_LOGGER.labelled_log($label, $item);
-    };
+    }};
     // Debug printing
-    (dbg:$item:expr) => {
+    (dbg:$item:expr) => {{
         #[cfg(feature = "debug")]
         $crate::util::debug::NODE_LOGGER.debug_log($item);
-    };
+    }};
     // Display printing
-    ($item:expr) => {
+    ($item:expr) => {{
         #[cfg(feature = "debug")]
         $crate::util::debug::NODE_LOGGER.log($item);
-    };
+    }};
     // Blank newline
-    () => {
+    () => {{
         #[cfg(feature = "debug")]
         println!();
-    };
+    }};
 }
 
 macro_rules! debug_log_node {