ambiguous-empty

The type of `{}` cannot be told.

compile error, shown by synod check.

{} is an empty list or an empty map. Its type comes from where it appears: the field or local it is assigned to, the hole it fills, or how that place is used anywhere in the package. If nothing in the package fixes the type, the compiler asks you to.

Example

Check this program to see the diagnostic.

# package p
Node has
  set items to {}

Diagnostic

p/p.synod:3:16: error[ambiguous-empty]: cannot tell the type of {}
  hint: use it with std/lists or std/maps, or assign it where the type is known

Fix

Use the place with a `std/lists` or `std/maps` phrase, so the type is known.

# package p
use std/lists

Node has
  set items to {}

define [n: Node] Add [v: number]
  set n.items to (lists.Append v to n.items)