///|
fn main {
  try {
    let files = Map([
      (
        "Kconfig", "config LEFT\n bool \"Left\"\nconfig RIGHT\n bool \"Right\"\nsource \"left/Kconfig\"\nsource \"right/Kconfig\"\n",
      ),
      (
        "left/Kconfig", "if LEFT\nconfig SHARED\n int \"Shared left\"\n default 11\nendif\n",
      ),
      (
        "right/Kconfig", "if RIGHT\nconfig SHARED\n int \"Shared right\"\n default 22\nendif\n",
      ),
    ])
    let schema = @config.parse_linux612("Kconfig", files)
    for
      (request, expected) in [
        ("CONFIG_LEFT=n\nCONFIG_RIGHT=n\n", "0"),
        ("CONFIG_LEFT=y\nCONFIG_RIGHT=n\n", "11"),
        ("CONFIG_LEFT=n\nCONFIG_RIGHT=y\n", "22"),
        ("CONFIG_LEFT=y\nCONFIG_RIGHT=y\n", "11"),
        ("CONFIG_LEFT=n\nCONFIG_RIGHT=y\nCONFIG_SHARED=37\n", "37"),
      ] {
      let (fragment, diagnostics) = schema.read_linux_config(request)
      assert_eq(diagnostics.length(), 0)
      let result = schema.resolve(fragment)
      assert_eq(result.value("SHARED").text(), expected)
      println("SHARED=" + expected)
      println(schema.export_linux_config(result))
    }
    assert_eq(schema.source_locations("SHARED"), [
      "left/Kconfig:2", "right/Kconfig:2",
    ])
  } catch {
    _ => abort("Linux v6.12 configuration failed")
  }
}