Issue #1164: emit: a list literal of tuples with a nullable slot does not lower (rustc E0308)

Open and answer this issue on GitHub.

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

Found by the M6 move (Part of #125): the codegen-units manifest test stays in Rust because of this.

Probe:

fn show(n: i64?) { }
fn main() {
    let rows = [("a", 0), ("b", null)]
    for (t, n) in rows { show(n) }
}

nikaia run gives rustc E0308: no Some(..) around 0, and .into() on an integer. The same with the annotation Vec[(String, i64?)].

To build

  1. Widen tuple elements of a list literal to the joined element type (the nullable slot) in the checker/emitter, so 0 is written Some(0).
  2. A tests/compiler program with .stdout, with and without the annotation.
  3. Move the codegen-units manifest test to Nikaia (manifest.nika test block).

Back to Open Issues