This repository has no description
bez specs absolute-resolver-default.md
2.3 kB


enabled: true touches: [crates/layout/src/fragment.rs] depends-on: [] #

Default layout_with_resolver to the generated absolute resolver #

absolute-batches's review (already landed) noted one non-disqualifying gap: layout_with_resolver in crates/layout/src/fragment.rs still hardcodes crate::absolute::resolve_baseline for the absolute seam when the caller doesn't override it, instead of generated::absolute::resolve — the candidate layout() already defaults to. generated is already imported (use crate::generated;) and generated::absolute is already pub; this is a one-line change, no new imports, no signature or type changes. layout_with_resolvers (plural) has no defaults to change — every one of its five resolver parameters is a required argument, so the fix is entirely inside layout_with_resolver (singular).

layout_with_resolver's doc comment currently says margin collapsing, percentage resolution and absolute positioning all stay on their own baselines. Absolute no longer will; update the comment to say so, and that margin/percentage still do.

Add a regression test in crates/layout/src/fragment.rs's own #[cfg(test)] mod tests, modeled on layout_correct's shape: call layout_with_resolver with no absolute override, on a fixture with position: absolute and an explicit left/top, and assert the box lands where the generated resolver puts it (honors left/top) rather than where baseline would (ignores them, uses the static position) — the same contrast crates/generation/src/absolute_runner.rs's baseline_ignores_an_explicit_left_and_uses_the_static_position and a_candidate_that_reads_left_and_top_resolves_them_against_the_containing_block already draw between baseline and an override.

fragment_check only ever calls plain layout() (already generated-by-default), never layout_with_resolver/layout_with_resolvers, and the 227-case corpus it runs has no absolute-positioning category at all — absolute cases live in the separate absolute_cases.rs/absolute-ground-truth corpus. So cargo test --workspace passing and fragment_check --random staying at 216/227 with every category unchanged is the verify condition, and there is no path by which this change could move that number; run both anyway to confirm rather than reasoning about it.