Issue #1169: Check: a sync function in tools/*.nika calling an async function is not refused, lowers to .await in a non-async fn

Open and answer this issue on GitHub.

ready · opened 2026-11-02 · updated 2026-11-02 · 0 comments

Found during the M8 move (project_*.nika, Part of #125).

Probe: in crates/nikaia-std/src/tools/*.nika, a function that is not async calls an async function. The checker lets it through. The lowered Rust then has .await inside a non-async function, which rustc refuses. A user program with the same shape gets the correct NK2202 refusal. So the check is skipped, or works differently, on the tools path (lower-std).

To build

  1. Reduce it to a test on the lower-std / tools path. A tests/compiler/ program passes already, so the test must go through the tools path.
  2. Make the tools path apply the NK2202 check. The test then shows the refusal.

Back to Open Issues