Issue #991: async: remove overlap, task::scope and spawn

Open and answer this issue on GitHub.

blocked · opened 2026-10-30 · updated 2026-10-30 · 0 comments

Part of #983. Needs #990 (migration; nothing in the repository uses the forms any more).

To build

  1. Parser: overlap and spawn no longer parsed or reserved (ADR-298 D7: the undeclared-name refusal tells); in the same commit Part I’s reserved-word list drops spawn and its sentence (ADR-async-3 D5), and parser::RESERVED_WORDS with it.
  2. Checker: the overlap branch walks in check_walks.nika (branches_meet_on_nothing, the binding refusal, the arity refusal), task::scope handling in check_core_call*.nika, check_crossings, check_doors, check_pauses, check_state, check_imports; the spawn name lookups (keep the code under the async(detached) node).
  3. Lowering: emit_core_reads.nika overlap code, emit_below, emit_core_args scope code, emit_core_flow, emit_kinds, emit_state; regenerate lowered/*.rs.
  4. std: task::scope, Scope, the overlap<n> / combine<n> vehicles, std::task::spawn; std.contracts’ once entry for task::scope; workers: on fold/par_fold.
  5. fmt.nika (overlap, seq heads, spawn), parse_errors.nika, order.nika, sync.nika.
  6. Tests: tests/compiler/tests/overlap_is_a_name.nika and spawn_is_a_name.nika (a name compiles), task_scope_is_gone.nika (unknown function, .stderr).

Generated by Claude Code

Back to Open Issues