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.