///|
/// A build tool separates term/message namespaces, reports duplicate keys and
/// unresolved resource-local references; external bundle resolution is not done.
fn main {
  let input = "-brand = Moon\nheadline = { -brand }\nheadline = Duplicate\nbutton =\n    .label = Open\npage = { button.label } { missing }\n"
  let catalog = match @ftl.Catalog::build(@ftl.parse(input)) {
    Ok(c) => c
    Err(_) => abort("index failed")
  }
  let duplicates = catalog.duplicates()
  let missing = catalog.missing_references()
  if duplicates.length() != 1 ||
    missing.length() != 1 ||
    catalog.references().length() != 3 {
    abort("index regression")
  }
  println("duplicate: \{duplicates[0].name}")
  println("unresolved: \{missing[0].reference.name}")
  for definition in catalog.definitions() {
    println(
      "definition: \{definition.name}, attributes=\{definition.attributes.length()}",
    )
  }
  println("build: 5 definitions, 3 references, 1 duplicate, 1 missing")
}