`iris::random` grows a seeded tree -- spans in every direction, stacks, rects with varying opacity, text both wrapping and overflowing, a declared size over half of it -- and `tests/generated.rs` grows each seed twice: once and then mutated, once with the mutation built in. Every widget's box has to match. `examples/random.rs` draws one, and `IRIS_SEED`/`IRIS_DEPTH` pick it. It found the defect in the commit before this one immediately: a reuse that marked a descendant for redraw escalated to that descendant's size reader, which re-placed the child, which marked it again. `try_reuse` now asks whether anything under the widget would have to be drawn again *before* keeping the drawing, and drops the whole thing if so, which terminates because it adds no marks. It also found one older and larger than this branch, which `a_wrapping_child_of_a_row_settles_somewhere_else_each_time` reproduces and documents: a wrapping text on a span's own axis is shaped twice against two different widths, so where it settles depends on how many passes it has had. 7 of 90 cases diverge on `db1751f` and 30 do here, because a placed child reaches the second shaping more often. It is the same defect either way, and it belongs where the two draws meet -- LAYOUT.md §4 -- not in the chain. The six seeds the live tests use are ones that agree. `forget_ref` goes with the subtree rewrite that used it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
28 lines
536 B
Rust
28 lines
536 B
Rust
#![feature(unboxed_closures)]
|
|
#![feature(fn_traits)]
|
|
#![feature(associated_type_defaults)]
|
|
#![feature(unsize)]
|
|
#![feature(option_into_flat_iter)]
|
|
#![feature(async_fn_traits)]
|
|
|
|
pub mod default;
|
|
pub mod event;
|
|
pub mod harness;
|
|
pub mod random;
|
|
pub mod widget;
|
|
|
|
pub use iris_core as core;
|
|
pub use iris_macro as macros;
|
|
|
|
pub mod prelude {
|
|
use super::*;
|
|
pub use default::*;
|
|
pub use event::*;
|
|
pub use iris_core::*;
|
|
pub use iris_macro::*;
|
|
pub use widget::*;
|
|
|
|
pub use iris_core::util::Vec2;
|
|
pub use len_fns::*;
|
|
}
|