Phase 2j-b/c + 7d-c AST disjoint policy + MIR in-out write-back¶
Summary¶
Adds private def, true var object write-back in MIR for CallProc/MethodCall receivers, and AST-first parallel disjoint policy checks; physics integrate stays -> unit without return-assign.
Agent continuation¶
- Read
docs/superpowers/plans/2026-05-20-li-oop-roadmap.md§ 2j-d (inheritance v1). - Run
LI_REPO_ROOT=$PWD cmake --build build && LI_REPO_ROOT=$PWD ./li-tests/run_all.sh(expect 152 pass). - Then merge #134 after
merge-approved+ review; addinheritance_layout.li/override_mismatch.liper roadmap. - Blocked on httpd packages — other agents own #84 / #87.
Changed¶
| Path | What |
|---|---|
compiler/mir/lower.cpp | lower_callproc_with_optional_inout — __li_o_wb* copy-in/out for var object first param |
compiler/ast.hpp, parser.cpp, import_resolve.cpp | ProcDecl.visibility; private def / public def |
packages/li-physics-rigid, li-physics-runtime | rigid_integrate_semi_implicit → unit (in-out, not return) |
li-tests/composable/import_physics_runtime.li | stmt call; verify_ok; runtime exit 0 |
li-tests/encapsulation/* | private_method_*.li, object_method_mutate.li (c.bump() no assign) |
compiler/types/policy.cpp, policy_module.cpp | AST-first disjoint; false-proof string guard |
.cursor/rules/li-test-driven-validation.mdc | Merge premise: pass/fail tests prove capabilities |
| Master plan + OOP roadmap trackers | 2j-a/b/c exit gates met |
Not changed¶
packages/li-http/**,li_rt_httpd.cserve paths.- 2j-d–f traits/inheritance/method VCs; 2i matrix
@lowering. - Full G-lean certificate (2f).
Breaking¶
N/A — rigid_integrate_semi_implicit remains -> unit; callers use stmt or method call (write-back), not return-assign.
Security¶
N/A — stronger private API surface on import.
Performance¶
N/A — extra MIR copy for var object in-out (correctness path; alias opts later).
Downstream¶
- Physics integrators: call
rigid_integrate_semi_implicit(body, …)without assignment. - Benchmarks ingest unchanged; composable smoke asserts integrated
pz.