What cost the most: about 15 turns went on finding my way through the checker and emitter. I had to work out where a std method’s key is handled after the call is checked (check_core_method_called), how the checker and the emitter share facts (check_facts.nika), and where the emitter writes a method call (emit_core_method_arm). I also had to find out that structs the compiler generates derive no Default. That last point made D1’s struct case an emitter change and not a simple pass-through. The tests-project run took the longest wall time, but it was a single run.
Default, so a struct V needs or_insert_with(|| V { defaults }).ty.text(), and that check_refusal lives in check_state.nika..iter() items are view types, and that a walk over numbers already gets .copied() (copied_walks). This decides when cloned lowers to nothing.or_default already exists in map.rs, so no twin was needed. The brief implied one was.sum problem, which is outside my change.--bless.seq:: unit tests and pre-push-check.sh.cargo build I ran for the fixpoint without first checking whether the second lower-std had changed anything. The first build was also partly wasted: the help-text slip (the f-string defect) only showed up when I ran the program.check_core_method_called after key is set; add the fact in check_facts.nika (field and constructor); the emitter reads it in emit_core_method_arm before emit_core_method_call; structs derive only Debug and Clone (and Copy or PartialEq where the facts say so)”. Ideally this would be a general Adding a std method with custom lowering section in builder-facts.md.