Result: done (part; sharing 510 waits on #973) Files: crates/nikaia-std/src/tools/check_core_stmt.nika crates/nikaia-std/src/tools/view_changes.nika crates/nikaia-std/src/tools/lowered/check_core_stmt.rs crates/nikaia-std/src/tools/lowered/view_changes.rs docs/briefs/b950e.md.report.md Commit: check_core_stmt, view_changes: the #949 files’ insert loops use extend, vc_index uses BTreeMap::entry Part: #950 Model: Opus 5.5 Tests: it element_views lending match_views method_code_recursion stored_views text_views views_handed_back views_kept + guard set 99 ok; nikaia test –both-settings –project tests/compiler 329 ok (own binary copy); clippy clean; pre-push-check ok; lower-std fixpoint (rebuild, same lowered diff) Gate: green Deviation: no new test (tools rewrite, no compiler change). lowered.rs not staged (its only diff is the foreign comptime_tree names; vc_insert_all was not re-exported). Probe of every form first on target/fast/nikaia run (scratchpad b950e/p.nika: same answers as the old code). Found: done check_core_stmt 1384-1391 (stored code of a for over code): the get-clone of the whole CheckStoredCode and its two insert loops become match state.stored_code[from] { null => { entry.unresolved = true }, given => { entry.resolved.extend(given.resolved.clone()) .. } }, lowered extend(iter().cloned()), no copy of the struct; a view ?? with a built fallback is NK1185 by design, hence the match (the fallback only set unresolved) Found: done view_changes vc_index 155: remove-push-insert -> methods.entry(name).or_insert([]).push(..) (name owned, given away); vc_coalesced/vc_mut_viewed: for (id, _) loops -> ids.extend(m.keys()) (lowered keys().copied()), vc_insert_all removed, six calls -> ids.extend(set.clone()); vc_through 250-255 -> roots/parts.extend(outer[at].roots.clone()) Found: kept check_core_stmt 1379/1395 stored_code.remove(to) .. insert(to, entry): take/give back already; not entry, the loop reads stored_code[from] while entry is held (from may be to) Found: kept check_core_stmt 1578 for b in bindings { lent_lets.insert((f”..”, frame_at)) }: inserts a built tuple, not the loop variable (not the step-6 shape) Found: kept emit_stmt: no insert loop, contains_key-then-insert or get-clone-insert site; 172 walk.preluded.clone() is needed (both values used, return path keeps the new one); 896 let outer = walk.at_field?.clone() save/restore around a call Found: NOTE emit_stmt 896 take form: let outer = walk.at_field; walk.at_field = P {..}; visit(walk); walk.at_field = outer in a for over a list, walk a mut parameter, is NK2105 (let inside a loop of an outer part) and NK2305 (outer a view of walk, #962). ADR-views-1 D5 has no mem::replace, so a save-and-restore of a field keeps .clone(). Probe: scratchpad b950e/take.nika. Not a site of this task; architect to judge whether D1 (a let that moves a part, given back by assignment) was meant to cover it Needs: none Changelog: none (no version change, tools rewrite only) Owner: issue comment for #950: the #949 files are done (check_core_stmt stored code, view_changes vc_index/vc_coalesced/vc_mut_viewed/vc_through); left only sharing 510 (#973); kept sites and reasons in docs/briefs/b950d.md.report.md and b950e.md.report.md Disk freed: none (target/nikaia-project-tests 2.0G; / 9.7G free; no new entry over 100 MB from this run) Rs2nika: none (no move) Attribution: Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01GFeMqxRbtUMiGVyDMxsvEq Pushed: d6ffb5bb1ee59507d24eb9cae680b78d09b2592a

This site is open source. Improve this page.