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 · 2024-03-19T20:17:24Z (2 wata ñawpaq) · tayta b3ee315cc · kay commitpi sach'ata qhaway
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 {