Xo is experimental. The source code is not public yet; it will be soon. Read the release notes
Menu · XO0410

Docs

XO0410: reading a Map by index; use `get` or `get_or_fault`

error · reported by the checker

A missing key is the Map form of a nil dereference, so m[k] in an expression, or an in place change through it (m[k].f = v, m[k] += 1), is an error. Use m.get(k) (an optional), m.get_or_fault(k, "why the key must exist"), or m.update(k, init, fn(var v) { ... }). On a var map the whole value assignment m[k] = v is allowed and means m.put(k, v). See core 3.6.

Example

fn f(m: Map[Str, Int]) -> Int {
  m["a"]
}

Fix

fn f(m: Map[Str, Int]) -> Int {
  m.get("a") ?? 0
}

Run xo explain XO0410 for this text in a terminal, or see section 10.6 of the specification.