[INFO] cloning repository https://github.com/ConnorVoisey/lang
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ConnorVoisey/lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FConnorVoisey%2Flang", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FConnorVoisey%2Flang'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 81ad789138450aea8a51b0a68e282f9d8d262824
[INFO] testing ConnorVoisey/lang against try#bd7d74411512a3dd3b35d2f699c51dd2557c7e7e+cargoflags=-Zbuild-dir-new-layout for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FConnorVoisey%2Flang" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ConnorVoisey/lang
[INFO] finished tweaking git repo https://github.com/ConnorVoisey/lang
[INFO] tweaked toml for git repo https://github.com/ConnorVoisey/lang written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ConnorVoisey/lang on toolchain bd7d74411512a3dd3b35d2f699c51dd2557c7e7e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ConnorVoisey/lang already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 406e84839774845687247c689a2998ce5de4b082447f6555a501f974a8de63ab
[INFO] running `Command { std: "docker" "start" "-a" "406e84839774845687247c689a2998ce5de4b082447f6555a501f974a8de63ab", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "406e84839774845687247c689a2998ce5de4b082447f6555a501f974a8de63ab", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "406e84839774845687247c689a2998ce5de4b082447f6555a501f974a8de63ab", kill_on_drop: false }`
[INFO] [stdout] 406e84839774845687247c689a2998ce5de4b082447f6555a501f974a8de63ab
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "build" "--frozen" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] c6031ce1e5ac00f386ecd8ae96faacf83572da692894fe99e834f66effead212
[INFO] running `Command { std: "docker" "start" "-a" "c6031ce1e5ac00f386ecd8ae96faacf83572da692894fe99e834f66effead212", kill_on_drop: false }`
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling cranelift-srcgen v0.123.2
[INFO] [stderr]    Compiling cfg-if v1.0.3
[INFO] [stderr]    Compiling cranelift-isle v0.123.2
[INFO] [stderr]    Compiling cranelift-codegen-shared v0.123.2
[INFO] [stderr]    Compiling cranelift-bitset v0.123.2
[INFO] [stderr]    Compiling target-lexicon v0.13.3
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]    Compiling rustc-hash v2.1.1
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling arbitrary v1.4.2
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling wasmtime-internal-math v36.0.2
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling nu-ansi-term v0.50.1
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling cranelift-assembler-x64-meta v0.123.2
[INFO] [stderr]    Compiling anyhow v1.0.99
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling cranelift-entity v0.123.2
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling serde_core v1.0.223
[INFO] [stderr]    Compiling owo-colors v4.2.2
[INFO] [stderr]    Compiling tracing-subscriber v0.3.20
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling cranelift-bforest v0.123.2
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling indexmap v2.11.1
[INFO] [stderr]    Compiling regalloc2 v0.12.2
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling cranelift-control v0.123.2
[INFO] [stderr]    Compiling indenter v0.3.4
[INFO] [stderr]    Compiling rustc-demangle v0.1.26
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling clap_builder v4.5.51
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling cranelift-codegen-meta v0.123.2
[INFO] [stderr]    Compiling unicode-width v0.2.1
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling gimli v0.32.3
[INFO] [stderr]    Compiling tracing-tree v0.4.1
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling quickscope v0.2.0
[INFO] [stderr]    Compiling codespan-reporting v0.12.0
[INFO] [stderr]    Compiling cranelift-assembler-x64 v0.123.2
[INFO] [stderr]    Compiling addr2line v0.24.2
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling cranelift-codegen v0.123.2
[INFO] [stderr]    Compiling tracing-chrome v0.7.2
[INFO] [stderr]    Compiling backtrace v0.3.75
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling tracing-error v0.2.1
[INFO] [stderr]    Compiling clap v4.5.51
[INFO] [stderr]    Compiling color-eyre v0.6.5
[INFO] [stderr]    Compiling cranelift-module v0.123.2
[INFO] [stderr]    Compiling cranelift-frontend v0.123.2
[INFO] [stderr]    Compiling cranelift-native v0.123.2
[INFO] [stderr]    Compiling cranelift-object v0.123.2
[INFO] [stderr]    Compiling cranelift v0.123.2
[INFO] [stderr]    Compiling lang v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `StructLayout` and `self`
[INFO] [stdout]  --> src/rvsdg/builder.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 |     struct_layout::{self, StructLayout},
[INFO] [stdout]   |                     ^^^^  ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/types/mod.rs:313:44
[INFO] [stdout]     |
[INFO] [stdout] 312 | ...                   params: todo!(),
[INFO] [stdout]     |                               ------- any code following this expression is unreachable
[INFO] [stdout] 313 | ...                   param_symbols: todo!(),
[INFO] [stdout]     |                                      ^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cached_node`
[INFO] [stdout]    --> src/rvsdg/builder.rs:152:22
[INFO] [stdout]     |
[INFO] [stdout] 152 |         if let Some(&cached_node) = self.value_cache.get(&key) {
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cached_node`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/rvsdg/builder.rs:431:13
[INFO] [stdout]     |
[INFO] [stdout] 431 |         let ty = value.node; // Placeholder - we'd need to track types properly
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |             _ => ("white", "rounded"),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |             NodeKind::Lambda { .. } | NodeKind::Gamma { .. } | NodeKind::Theta { .. } => {
[INFO] [stdout]     |             ------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 103 |             NodeKind::Const { .. } => ("lightgreen", "filled,rounded"),
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 104 |             NodeKind::Binary { .. } | NodeKind::Unary { .. } => ("lightyellow", "filled,rounded"),
[INFO] [stdout]     |             ------------------------------------------------ matches some of the same values
[INFO] [stdout] 105 |             NodeKind::Call { .. } => ("orange", "filled,rounded"),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |             _ => ("white", "rounded"),
[INFO] [stdout]     |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `outer_state`
[INFO] [stdout]   --> src/rvsdg/lower/theta.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let outer_state = self.current_state;
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outer_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/rvsdg/lower/mod.rs:458:31
[INFO] [stdout]     |
[INFO] [stdout] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stdout]     |                               ^^^^ help: try ignoring the field: `left: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]    --> src/rvsdg/lower/mod.rs:458:37
[INFO] [stdout]     |
[INFO] [stdout] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stdout]     |                                     ^^^^^ help: try ignoring the field: `right: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `call_conv`
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         call_conv: CallConv,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_call_conv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:777:31
[INFO] [stdout]     |
[INFO] [stdout] 777 |             NodeKind::Store { ty, inputs } => {
[INFO] [stdout]     |                               ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:439:36
[INFO] [stdout]     |
[INFO] [stdout] 439 |                     SymbolKind::Fn(fn_symbol_data) => todo!(),
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_arg_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:440:39
[INFO] [stdout]     |
[INFO] [stdout] 440 |                     SymbolKind::FnArg(fn_arg_symbol_data) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_arg_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:441:37
[INFO] [stdout]     |
[INFO] [stdout] 441 |                     SymbolKind::Var(var_symbol_data) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enum_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:445:38
[INFO] [stdout]     |
[INFO] [stdout] 445 |                     SymbolKind::Enum(enum_symbol_data) => todo!(),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enum_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `peek_n_token` is never used
[INFO] [stdout]   --> src/ast/mod.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl Ast {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn peek_n_token(&self, amount: usize) -> Option<&Token> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `StructFieldAddr` is never constructed
[INFO] [stdout]    --> src/rvsdg/mod.rs:631:5
[INFO] [stdout]     |
[INFO] [stdout] 627 | pub(crate) enum NodeKeyKind {
[INFO] [stdout]     |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 631 |     StructFieldAddr { field: FieldId },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeKeyKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fb` and `region_id` are never read
[INFO] [stdout]   --> src/rvsdg/builder.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct RegionBuilder<'a> {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 57 |     fb: &'a mut FunctionBuilder<'a>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 58 |     region_id: RegionId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_function` is never read
[INFO] [stdout]   --> src/rvsdg/to_cranelift.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct RvsdgToCranelift<'a> {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     current_function: Option<FunctionId>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_map` is never read
[INFO] [stdout]   --> src/rvsdg/to_cranelift.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct FunctionCompiler<'a, 'b> {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     block_map: FxHashMap<NodeId, Vec<Block>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_struct_id_from_ptr` is never used
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:805:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | impl<'a, 'b> FunctionCompiler<'a, 'b> {
[INFO] [stdout]     | ------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 805 |     fn get_struct_id_from_ptr(&self, ptr_value_id: ValueId) -> color_eyre::Result<StructId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 24s
[INFO] running `Command { std: "docker" "inspect" "c6031ce1e5ac00f386ecd8ae96faacf83572da692894fe99e834f66effead212", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c6031ce1e5ac00f386ecd8ae96faacf83572da692894fe99e834f66effead212", kill_on_drop: false }`
[INFO] [stdout] c6031ce1e5ac00f386ecd8ae96faacf83572da692894fe99e834f66effead212
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "--no-run" "--message-format=json" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] a08b3fffffb6d04bcd7168458865799490882f81c68c6d96deaea528265a2a4f
[INFO] running `Command { std: "docker" "start" "-a" "a08b3fffffb6d04bcd7168458865799490882f81c68c6d96deaea528265a2a4f", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling sdd v3.0.10
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling scc v2.4.0
[INFO] [stderr]    Compiling tracing-chrome v0.7.2
[INFO] [stderr]    Compiling backtrace v0.3.75
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling serial_test v3.2.0
[INFO] [stderr]    Compiling color-eyre v0.6.5
[INFO] [stderr]    Compiling cranelift-object v0.123.2
[INFO] [stderr]    Compiling lang v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `StructLayout` and `self`
[INFO] [stdout]  --> src/rvsdg/builder.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 |     struct_layout::{self, StructLayout},
[INFO] [stdout]   |                     ^^^^  ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/types/mod.rs:313:44
[INFO] [stdout]     |
[INFO] [stdout] 312 | ...                   params: todo!(),
[INFO] [stdout]     |                               ------- any code following this expression is unreachable
[INFO] [stdout] 313 | ...                   param_symbols: todo!(),
[INFO] [stdout]     |                                      ^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cached_node`
[INFO] [stdout]    --> src/rvsdg/builder.rs:152:22
[INFO] [stdout]     |
[INFO] [stdout] 152 |         if let Some(&cached_node) = self.value_cache.get(&key) {
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cached_node`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/rvsdg/builder.rs:431:13
[INFO] [stdout]     |
[INFO] [stdout] 431 |         let ty = value.node; // Placeholder - we'd need to track types properly
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TokenKind`, `Token`, and `VarType`
[INFO] [stdout]   --> src/ast/ast_import.rs:71:20
[INFO] [stdout]    |
[INFO] [stdout] 71 |         ast::{Ast, VarType},
[INFO] [stdout]    |                    ^^^^^^^
[INFO] [stdout] 72 |         interner::{Interner, SharedInterner},
[INFO] [stdout] 73 |         lexer::{Lexer, Token, TokenKind},
[INFO] [stdout]    |                        ^^^^^  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pretty_assertions::assert_eq`
[INFO] [stdout]   --> src/ast/ast_import.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     use pretty_assertions::assert_eq;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Token`
[INFO] [stdout]    --> src/ast/ast_struct.rs:156:24
[INFO] [stdout]     |
[INFO] [stdout] 156 |         lexer::{Lexer, Token, TokenKind},
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StructLayout` and `self`
[INFO] [stdout]  --> src/rvsdg/builder.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 |     struct_layout::{self, StructLayout},
[INFO] [stdout]   |                     ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/rvsdg/optimize.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |             _ => ("white", "rounded"),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |             NodeKind::Lambda { .. } | NodeKind::Gamma { .. } | NodeKind::Theta { .. } => {
[INFO] [stdout]     |             ------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 103 |             NodeKind::Const { .. } => ("lightgreen", "filled,rounded"),
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 104 |             NodeKind::Binary { .. } | NodeKind::Unary { .. } => ("lightyellow", "filled,rounded"),
[INFO] [stdout]     |             ------------------------------------------------ matches some of the same values
[INFO] [stdout] 105 |             NodeKind::Call { .. } => ("orange", "filled,rounded"),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |             _ => ("white", "rounded"),
[INFO] [stdout]     |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `outer_state`
[INFO] [stdout]   --> src/rvsdg/lower/theta.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let outer_state = self.current_state;
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outer_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/rvsdg/lower/mod.rs:458:31
[INFO] [stdout]     |
[INFO] [stdout] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stdout]     |                               ^^^^ help: try ignoring the field: `left: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]    --> src/rvsdg/lower/mod.rs:458:37
[INFO] [stdout]     |
[INFO] [stdout] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stdout]     |                                     ^^^^^ help: try ignoring the field: `right: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `call_conv`
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         call_conv: CallConv,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_call_conv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:777:31
[INFO] [stdout]     |
[INFO] [stdout] 777 |             NodeKind::Store { ty, inputs } => {
[INFO] [stdout]     |                               ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:439:36
[INFO] [stdout]     |
[INFO] [stdout] 439 |                     SymbolKind::Fn(fn_symbol_data) => todo!(),
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_arg_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:440:39
[INFO] [stdout]     |
[INFO] [stdout] 440 |                     SymbolKind::FnArg(fn_arg_symbol_data) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_arg_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:441:37
[INFO] [stdout]     |
[INFO] [stdout] 441 |                     SymbolKind::Var(var_symbol_data) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enum_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:445:38
[INFO] [stdout]     |
[INFO] [stdout] 445 |                     SymbolKind::Enum(enum_symbol_data) => todo!(),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enum_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `peek_n_token` is never used
[INFO] [stdout]   --> src/ast/mod.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl Ast {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn peek_n_token(&self, amount: usize) -> Option<&Token> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `StructFieldAddr` is never constructed
[INFO] [stdout]    --> src/rvsdg/mod.rs:631:5
[INFO] [stdout]     |
[INFO] [stdout] 627 | pub(crate) enum NodeKeyKind {
[INFO] [stdout]     |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 631 |     StructFieldAddr { field: FieldId },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeKeyKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fb` and `region_id` are never read
[INFO] [stdout]   --> src/rvsdg/builder.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct RegionBuilder<'a> {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 57 |     fb: &'a mut FunctionBuilder<'a>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 58 |     region_id: RegionId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_function` is never read
[INFO] [stdout]   --> src/rvsdg/to_cranelift.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct RvsdgToCranelift<'a> {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     current_function: Option<FunctionId>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_map` is never read
[INFO] [stdout]   --> src/rvsdg/to_cranelift.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct FunctionCompiler<'a, 'b> {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     block_map: FxHashMap<NodeId, Vec<Block>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_struct_id_from_ptr` is never used
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:805:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | impl<'a, 'b> FunctionCompiler<'a, 'b> {
[INFO] [stdout]     | ------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 805 |     fn get_struct_id_from_ptr(&self, ptr_value_id: ValueId) -> color_eyre::Result<StructId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/types/mod.rs:313:44
[INFO] [stdout]     |
[INFO] [stdout] 312 | ...                   params: todo!(),
[INFO] [stdout]     |                               ------- any code following this expression is unreachable
[INFO] [stdout] 313 | ...                   param_symbols: todo!(),
[INFO] [stdout]     |                                      ^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/ast/ast_import.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let i = shared_interner.write();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args_mapped`
[INFO] [stdout]   --> src/ast/ast_import.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let args_mapped = args
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args_mapped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ast/ast_struct.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let mut i = shared_interner.write();
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lexer/mod.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |         let mut i = shared_interner.write();
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/lexer/mod.rs:476:13
[INFO] [stdout]     |
[INFO] [stdout] 476 |         let mut i = shared_interner.write();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cached_node`
[INFO] [stdout]    --> src/rvsdg/builder.rs:152:22
[INFO] [stdout]     |
[INFO] [stdout] 152 |         if let Some(&cached_node) = self.value_cache.get(&key) {
[INFO] [stdout]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cached_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/rvsdg/builder.rs:431:13
[INFO] [stdout]     |
[INFO] [stdout] 431 |         let ty = value.node; // Placeholder - we'd need to track types properly
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |             _ => ("white", "rounded"),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |             NodeKind::Lambda { .. } | NodeKind::Gamma { .. } | NodeKind::Theta { .. } => {
[INFO] [stdout]     |             ------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 103 |             NodeKind::Const { .. } => ("lightgreen", "filled,rounded"),
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 104 |             NodeKind::Binary { .. } | NodeKind::Unary { .. } => ("lightyellow", "filled,rounded"),
[INFO] [stdout]     |             ------------------------------------------------ matches some of the same values
[INFO] [stdout] 105 |             NodeKind::Call { .. } => ("orange", "filled,rounded"),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |             _ => ("white", "rounded"),
[INFO] [stdout]     |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `outer_state`
[INFO] [stdout]   --> src/rvsdg/lower/theta.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let outer_state = self.current_state;
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outer_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/rvsdg/lower/mod.rs:458:31
[INFO] [stdout]     |
[INFO] [stdout] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stdout]     |                               ^^^^ help: try ignoring the field: `left: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]    --> src/rvsdg/lower/mod.rs:458:37
[INFO] [stdout]     |
[INFO] [stdout] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stdout]     |                                     ^^^^^ help: try ignoring the field: `right: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `call_conv`
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         call_conv: CallConv,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_call_conv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:777:31
[INFO] [stdout]     |
[INFO] [stdout] 777 |             NodeKind::Store { ty, inputs } => {
[INFO] [stdout]     |                               ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:439:36
[INFO] [stdout]     |
[INFO] [stdout] 439 |                     SymbolKind::Fn(fn_symbol_data) => todo!(),
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fn_arg_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:440:39
[INFO] [stdout]     |
[INFO] [stdout] 440 |                     SymbolKind::FnArg(fn_arg_symbol_data) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_arg_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:441:37
[INFO] [stdout]     |
[INFO] [stdout] 441 |                     SymbolKind::Var(var_symbol_data) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enum_symbol_data`
[INFO] [stdout]    --> src/symbols/mod.rs:445:38
[INFO] [stdout]     |
[INFO] [stdout] 445 |                     SymbolKind::Enum(enum_symbol_data) => todo!(),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enum_symbol_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `peek_n_token` is never used
[INFO] [stdout]   --> src/ast/mod.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl Ast {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn peek_n_token(&self, amount: usize) -> Option<&Token> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `StructFieldAddr` is never constructed
[INFO] [stdout]    --> src/rvsdg/mod.rs:631:5
[INFO] [stdout]     |
[INFO] [stdout] 627 | pub(crate) enum NodeKeyKind {
[INFO] [stdout]     |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 631 |     StructFieldAddr { field: FieldId },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeKeyKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fb` and `region_id` are never read
[INFO] [stdout]   --> src/rvsdg/builder.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct RegionBuilder<'a> {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 57 |     fb: &'a mut FunctionBuilder<'a>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 58 |     region_id: RegionId,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_function` is never read
[INFO] [stdout]   --> src/rvsdg/to_cranelift.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct RvsdgToCranelift<'a> {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     current_function: Option<FunctionId>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_map` is never read
[INFO] [stdout]   --> src/rvsdg/to_cranelift.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct FunctionCompiler<'a, 'b> {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     block_map: FxHashMap<NodeId, Vec<Block>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_struct_id_from_ptr` is never used
[INFO] [stdout]    --> src/rvsdg/to_cranelift.rs:805:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | impl<'a, 'b> FunctionCompiler<'a, 'b> {
[INFO] [stdout]     | ------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 805 |     fn get_struct_id_from_ptr(&self, ptr_value_id: ValueId) -> color_eyre::Result<StructId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ast` and `arena` are never read
[INFO] [stdout]    --> src/type_checker/mod.rs:896:9
[INFO] [stdout]     |
[INFO] [stdout] 894 |     struct TypeCheckResult {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 895 |         errors: Vec<TypeCheckingError>,
[INFO] [stdout] 896 |         ast: Ast,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 897 |         arena: TypeArena,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 19.55s
[INFO] running `Command { std: "docker" "inspect" "a08b3fffffb6d04bcd7168458865799490882f81c68c6d96deaea528265a2a4f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a08b3fffffb6d04bcd7168458865799490882f81c68c6d96deaea528265a2a4f", kill_on_drop: false }`
[INFO] [stdout] a08b3fffffb6d04bcd7168458865799490882f81c68c6d96deaea528265a2a4f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bd7d74411512a3dd3b35d2f699c51dd2557c7e7e" "test" "--frozen" "-Zbuild-dir-new-layout", kill_on_drop: false }`
[INFO] [stdout] 48d8a544282657bf09987d7bec4d53081ca79f6cc3246f91859b2e7c14b46c90
[INFO] running `Command { std: "docker" "start" "-a" "48d8a544282657bf09987d7bec4d53081ca79f6cc3246f91859b2e7c14b46c90", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `StructLayout` and `self`
[INFO] [stderr]  --> src/rvsdg/builder.rs:6:21
[INFO] [stderr]   |
[INFO] [stderr] 6 |     struct_layout::{self, StructLayout},
[INFO] [stderr]   |                     ^^^^  ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable expression
[INFO] [stderr]    --> src/types/mod.rs:313:44
[INFO] [stderr]     |
[INFO] [stderr] 312 | ...                   params: todo!(),
[INFO] [stderr]     |                               ------- any code following this expression is unreachable
[INFO] [stderr] 313 | ...                   param_symbols: todo!(),
[INFO] [stderr]     |                                      ^^^^^^^ unreachable expression
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr]     = note: this warning originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cached_node`
[INFO] [stderr]    --> src/rvsdg/builder.rs:152:22
[INFO] [stderr]     |
[INFO] [stderr] 152 |         if let Some(&cached_node) = self.value_cache.get(&key) {
[INFO] [stderr]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cached_node`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ty`
[INFO] [stderr]    --> src/rvsdg/builder.rs:431:13
[INFO] [stderr]     |
[INFO] [stderr] 431 |         let ty = value.node; // Placeholder - we'd need to track types properly
[INFO] [stderr]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stderr]     |
[INFO] [stderr] 113 |             _ => ("white", "rounded"),
[INFO] [stderr]     |             ^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr] note: multiple earlier patterns match some of the same values
[INFO] [stderr]    --> src/rvsdg/graphviz.rs:113:13
[INFO] [stderr]     |
[INFO] [stderr] 100 |             NodeKind::Lambda { .. } | NodeKind::Gamma { .. } | NodeKind::Theta { .. } => {
[INFO] [stderr]     |             ------------------------------------------------------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 103 |             NodeKind::Const { .. } => ("lightgreen", "filled,rounded"),
[INFO] [stderr]     |             ---------------------- matches some of the same values
[INFO] [stderr] 104 |             NodeKind::Binary { .. } | NodeKind::Unary { .. } => ("lightyellow", "filled,rounded"),
[INFO] [stderr]     |             ------------------------------------------------ matches some of the same values
[INFO] [stderr] 105 |             NodeKind::Call { .. } => ("orange", "filled,rounded"),
[INFO] [stderr]     |             --------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 113 |             _ => ("white", "rounded"),
[INFO] [stderr]     |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `outer_state`
[INFO] [stderr]   --> src/rvsdg/lower/theta.rs:48:13
[INFO] [stderr]    |
[INFO] [stderr] 48 |         let outer_state = self.current_state;
[INFO] [stderr]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outer_state`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `left`
[INFO] [stderr]    --> src/rvsdg/lower/mod.rs:458:31
[INFO] [stderr]     |
[INFO] [stderr] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stderr]     |                               ^^^^ help: try ignoring the field: `left: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `right`
[INFO] [stderr]    --> src/rvsdg/lower/mod.rs:458:37
[INFO] [stderr]     |
[INFO] [stderr] 458 |             Op::DoubleColon { left, right } => {
[INFO] [stderr]     |                                     ^^^^^ help: try ignoring the field: `right: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `call_conv`
[INFO] [stderr]    --> src/rvsdg/to_cranelift.rs:201:9
[INFO] [stderr]     |
[INFO] [stderr] 201 |         call_conv: CallConv,
[INFO] [stderr]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_call_conv`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ty`
[INFO] [stderr]    --> src/rvsdg/to_cranelift.rs:777:31
[INFO] [stderr]     |
[INFO] [stderr] 777 |             NodeKind::Store { ty, inputs } => {
[INFO] [stderr]     |                               ^^ help: try ignoring the field: `ty: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fn_symbol_data`
[INFO] [stderr]    --> src/symbols/mod.rs:439:36
[INFO] [stderr]     |
[INFO] [stderr] 439 |                     SymbolKind::Fn(fn_symbol_data) => todo!(),
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_symbol_data`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fn_arg_symbol_data`
[INFO] [stderr]    --> src/symbols/mod.rs:440:39
[INFO] [stderr]     |
[INFO] [stderr] 440 |                     SymbolKind::FnArg(fn_arg_symbol_data) => todo!(),
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fn_arg_symbol_data`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `var_symbol_data`
[INFO] [stderr]    --> src/symbols/mod.rs:441:37
[INFO] [stderr]     |
[INFO] [stderr] 441 |                     SymbolKind::Var(var_symbol_data) => todo!(),
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_symbol_data`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `enum_symbol_data`
[INFO] [stderr]    --> src/symbols/mod.rs:445:38
[INFO] [stderr]     |
[INFO] [stderr] 445 |                     SymbolKind::Enum(enum_symbol_data) => todo!(),
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enum_symbol_data`
[INFO] [stderr] 
[INFO] [stderr] warning: method `peek_n_token` is never used
[INFO] [stderr]   --> src/ast/mod.rs:63:8
[INFO] [stderr]    |
[INFO] [stderr] 47 | impl Ast {
[INFO] [stderr]    | -------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     fn peek_n_token(&self, amount: usize) -> Option<&Token> {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variant `StructFieldAddr` is never constructed
[INFO] [stderr]    --> src/rvsdg/mod.rs:631:5
[INFO] [stderr]     |
[INFO] [stderr] 627 | pub(crate) enum NodeKeyKind {
[INFO] [stderr]     |                 ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 631 |     StructFieldAddr { field: FieldId },
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `NodeKeyKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `fb` and `region_id` are never read
[INFO] [stderr]   --> src/rvsdg/builder.rs:57:5
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub struct RegionBuilder<'a> {
[INFO] [stderr]    |            ------------- fields in this struct
[INFO] [stderr] 57 |     fb: &'a mut FunctionBuilder<'a>,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 58 |     region_id: RegionId,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `current_function` is never read
[INFO] [stderr]   --> src/rvsdg/to_cranelift.rs:59:5
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub struct RvsdgToCranelift<'a> {
[INFO] [stderr]    |            ---------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 59 |     current_function: Option<FunctionId>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `block_map` is never read
[INFO] [stderr]   --> src/rvsdg/to_cranelift.rs:73:5
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct FunctionCompiler<'a, 'b> {
[INFO] [stderr]    |            ---------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 73 |     block_map: FxHashMap<NodeId, Vec<Block>>,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_struct_id_from_ptr` is never used
[INFO] [stderr]    --> src/rvsdg/to_cranelift.rs:805:8
[INFO] [stderr]     |
[INFO] [stderr] 237 | impl<'a, 'b> FunctionCompiler<'a, 'b> {
[INFO] [stderr]     | ------------------------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 805 |     fn get_struct_id_from_ptr(&self, ptr_value_id: ValueId) -> color_eyre::Result<StructId> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `lang` (lib) generated 20 warnings (run `cargo fix --lib -p lang` to apply 12 suggestions)
[INFO] [stderr] warning: unused imports: `TokenKind`, `Token`, and `VarType`
[INFO] [stderr]   --> src/ast/ast_import.rs:71:20
[INFO] [stderr]    |
[INFO] [stderr] 71 |         ast::{Ast, VarType},
[INFO] [stderr]    |                    ^^^^^^^
[INFO] [stderr] 72 |         interner::{Interner, SharedInterner},
[INFO] [stderr] 73 |         lexer::{Lexer, Token, TokenKind},
[INFO] [stderr]    |                        ^^^^^  ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `pretty_assertions::assert_eq`
[INFO] [stderr]   --> src/ast/ast_import.rs:77:9
[INFO] [stderr]    |
[INFO] [stderr] 77 |     use pretty_assertions::assert_eq;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Token`
[INFO] [stderr]    --> src/ast/ast_struct.rs:156:24
[INFO] [stderr]     |
[INFO] [stderr] 156 |         lexer::{Lexer, Token, TokenKind},
[INFO] [stderr]     |                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `StructLayout` and `self`
[INFO] [stderr]  --> src/rvsdg/builder.rs:6:21
[INFO] [stderr]   |
[INFO] [stderr] 6 |     struct_layout::{self, StructLayout},
[INFO] [stderr]   |                     ^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/rvsdg/optimize.rs:151:9
[INFO] [stderr]     |
[INFO] [stderr] 151 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/ast/ast_import.rs:91:13
[INFO] [stderr]    |
[INFO] [stderr] 91 |         let i = shared_interner.write();
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `args_mapped`
[INFO] [stderr]   --> src/ast/ast_import.rs:92:13
[INFO] [stderr]    |
[INFO] [stderr] 92 |         let args_mapped = args
[INFO] [stderr]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args_mapped`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/ast/ast_struct.rs:179:13
[INFO] [stderr]     |
[INFO] [stderr] 179 |         let mut i = shared_interner.write();
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lexer/mod.rs:476:13
[INFO] [stderr]     |
[INFO] [stderr] 476 |         let mut i = shared_interner.write();
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/lexer/mod.rs:476:13
[INFO] [stderr]     |
[INFO] [stderr] 476 |         let mut i = shared_interner.write();
[INFO] [stderr]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cached_node`
[INFO] [stderr]    --> src/rvsdg/builder.rs:152:22
[INFO] [stderr]     |
[INFO] [stderr] 152 |         if let Some(&cached_node) = self.value_cache.get(&key) {
[INFO] [stderr]     |                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cached_node`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `ast` and `arena` are never read
[INFO] [stderr]    --> src/type_checker/mod.rs:896:9
[INFO] [stderr]     |
[INFO] [stderr] 894 |     struct TypeCheckResult {
[INFO] [stderr]     |            --------------- fields in this struct
[INFO] [stderr] 895 |         errors: Vec<TypeCheckingError>,
[INFO] [stderr] 896 |         ast: Ast,
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 897 |         arena: TypeArena,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `lang` (lib test) generated 30 warnings (18 duplicates) (run `cargo fix --lib -p lang --tests` to apply 11 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.25s
[INFO] [stdout] 
[INFO] [stdout] running 275 tests
[INFO] [stdout] test ast::ast_enum::test::basic_enum ... ok
[INFO] [stdout] test ast::ast_enum::test::enum_with_basic_union ... ok
[INFO] [stdout] test ast::ast_enum::test::enum_with_enum ... ok
[INFO] [stdout] test ast::ast_enum::test::enum_with_struct ... ok
[INFO] [stdout] test ast::ast_expr::array::test::access_with_identifier ... ok
[INFO] [stdout] test ast::ast_expr::array::test::array_access_in_arithmetic ... ok
[INFO] [stdout] test ast::ast_expr::array::test::access_with_expression ... ok
[INFO] [stdout] test ast::ast_expr::array::test::array_init_then_access ... ok
[INFO] [stdout] test ast::ast_expr::array::test::array_with_expressions ... ok
[INFO] [stdout] test ast::ast_expr::array::test::simple_access ... ok
[INFO] [stdout] test ast::ast_expr::array::test::chained_access ... ok
[INFO] [stdout] test ast::ast_expr::array::test::empty_array ... ok
[INFO] [stdout] test ast::ast_expr::array::test::multiple_elements ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_else_basic ... ok
[INFO] [stdout] test ast::ast_expr::array::test::array_trailing_comma ... ok
[INFO] [stdout] test ast::ast_expr::func::test::nested_fn_calls ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/lang/a11868d7ef24617f/deps/lang-a11868d7ef24617f)
[INFO] [stdout] test ast::ast_expr::array::test::nested_arrays ... ok
[INFO] [stdout] test ast::ast_expr::array::test::array_with_identifiers ... ok
[INFO] [stdout] test ast::ast_expr::array::test::function_return_array_access ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_as_function_argument ... ok
[INFO] [stdout] test ast::ast_expr::array::test::single_element_array ... ok
[INFO] [stdout] test ast::ast_expr::func::test::fn_call_multi_param ... ok
[INFO] [stdout] test ast::ast_expr::array::test::struct_field_array_access ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_arithmetic_in_condition ... ok
[INFO] [stdout] test ast::ast_expr::func::test::fn_call ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_array_access_comparison ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_array_literal_in_condition ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_else_if_chain ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_identifier_then_block_not_struct ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_in_array_literal ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_eq ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_array_access_condition ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_chained_comparison ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_chained_dot_access ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_chained_method_call ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_in_arithmetic ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_empty_array_in_condition ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_dot_access_condition ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_function_call_condition ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_identifier_condition ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_explicit_struct_in_parens ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_function_call_with_args ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_comparison ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_negation ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_multiple_statements_in_block ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_nested_blocks ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_reference ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::simple_if_with_bool ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_empty ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::nested_if_expressions ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_chained_with_dot ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_multiple_fields ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_single_field ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_struct_field_comparison ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::multiple_else_if_no_final_else ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_add_left_assoc ... ok
[INFO] [stdout] test ast::ast_expr::test::basic_expr ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_trailing_comma ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_nested ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_comparison_same_precedence ... ok
[INFO] [stdout] test ast::ast_expr::struct_create::test::struct_create_with_expressions ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_complex_expression ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_div_over_sub ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_comparison_over_arithmetic ... ok
[INFO] [stdout] test ast::ast_expr::test::all_binary_operators_mixed ... ok
[INFO] [stdout] test ast::ast_expr::test::array_of_function_results ... ok
[INFO] [stdout] test ast::ast_expr::if_expr::test::if_with_parenthesized_condition ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_dot_same_as_postfix ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_mul_left_assoc ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_ref_over_dot ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_mul_over_add ... ok
[INFO] [stdout] test ast::ast_expr::test::block_as_function_argument ... ok
[INFO] [stdout] test ast::ast_expr::test::chained_double_colons ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_prefix_over_infix ... ok
[INFO] [stdout] test ast::ast_expr::test::block_in_arithmetic ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_prefix_over_mul ... ok
[INFO] [stdout] test ast::ast_expr::test::complex_parens_with_multiple_operators ... ok
[INFO] [stdout] test ast::ast_expr::test::complex_postfix_chain ... ok
[INFO] [stdout] test ast::ast_expr::test::chained_greater_than ... ok
[INFO] [stdout] test ast::ast_expr::test::comparison_of_comparisons ... ok
[INFO] [stdout] test ast::ast_expr::test::greater_than_basic ... ok
[INFO] [stdout] test ast::ast_expr::test::bracketed ... ok
[INFO] [stdout] test ast::ast_expr::test::greater_than_eq_basic ... ok
[INFO] [stdout] test ast::ast_expr::test::deeply_nested_field_access ... ok
[INFO] [stdout] test ast::ast_expr::test::just_false ... ok
[INFO] [stdout] test ast::ast_expr::test::just_identifier ... ok
[INFO] [stdout] test ast::ast_expr::test::double_negation_in_expression ... ok
[INFO] [stdout] test ast::ast_expr::test::deeply_nested_function_calls ... ok
[INFO] [stdout] test ast::ast_expr::test::empty_function_call ... ok
[INFO] [stdout] test ast::ast_expr::test::division_left_assoc ... ok
[INFO] [stdout] test ast::ast_expr::test::double_negation ... ok
[INFO] [stdout] test ast::ast_expr::test::just_true ... ok
[INFO] [stdout] test ast::ast_expr::test::less_than ... ok
[INFO] [stdout] test ast::ast_expr::test::mixed_add_sub_left_assoc ... ok
[INFO] [stdout] test ast::ast_expr::test::function_with_complex_args ... ok
[INFO] [stdout] test ast::ast_expr::test::just_integer ... ok
[INFO] [stdout] test ast::ast_expr::test::greater_than_with_arithmetic ... ok
[INFO] [stdout] test ast::ast_expr::test::not_equivalence ... ok
[INFO] [stdout] test ast::ast_expr::test::parens_override_precedence ... ok
[INFO] [stdout] test ast::ast_expr::test::mixed_call_index_dot ... ok
[INFO] [stdout] test ast::ast_expr::test::mixed_mul_div_left_assoc ... ok
[INFO] [stdout] test ast::ast_expr::test::parens_with_division ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_all_comparisons_same ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_call_same_as_dot ... ok
[INFO] [stdout] test ast::ast_expr::test::multi_squared_brackets ... ok
[INFO] [stdout] test ast::ast_expr::test::negation_of_reference ... ok
[INFO] [stdout] test ast::ast_expr::test::nested_blocks ... ok
[INFO] [stdout] test ast::ast_expr::test::deeply_nested_parens ... ok
[INFO] [stdout] test ast::ast_expr::test::precedence_mixed ... ok
[INFO] [stdout] test ast::ast_expr::test::prefix_and_postfix_together ... ok
[INFO] [stdout] test ast::ast_expr::test::reference_of_expression ... ok
[INFO] [stdout] test ast::ast_expr::test::string_and_cstr_literals ... ok
[INFO] [stdout] test ast::ast_expr::test::subtraction_left_assoc ... ok
[INFO] [stdout] test ast::ast_expr::test::binding_postfix_over_prefix ... ok
[INFO] [stdout] test ast::ast_expr::test::reference_in_arithmetic ... ok
[INFO] [stdout] test ast::ast_expr::test::negation_of_negation_multiply ... ok
[INFO] [stdout] test lexer::test::basic_lexing ... ok
[INFO] [stdout] test ast::ast_expr::test::reference_of_negation ... ok
[INFO] [stdout] test ast::ast_expr::test::chained_dots ... ok
[INFO] [stdout] test ast::ast_expr::test::equivalence ... ok
[INFO] [stdout] test ast::ast_expr::test::unary_not ... ok
[INFO] [stdout] test lexer::test::keyword_no_space ... ok
[INFO] [stdout] test rvsdg::optimize::tests::test_dce_removes_unused_const ... ok
[INFO] [stdout] test struct_layout::dfs::tests::complex_dag ... ok
[INFO] [stdout] test struct_layout::dfs::tests::cycle_with_independent_nodes ... ok
[INFO] [stdout] test struct_layout::dfs::tests::dag_with_back_references ... ok
[INFO] [stdout] test struct_layout::dfs::tests::diamond_pattern ... ok
[INFO] [stdout] test struct_layout::dfs::tests::empty_graph ... ok
[INFO] [stdout] test ast::ast_import::test::basic_fn_params ... ok
[INFO] [stdout] test ast::ast_expr::test::triple_negation ... ok
[INFO] [stdout] test struct_layout::dfs::tests::independent_nodes ... ok
[INFO] [stdout] test struct_layout::dfs::tests::linear_chain ... ok
[INFO] [stdout] test struct_layout::dfs::tests::multiple_roots ... ok
[INFO] [stdout] test struct_layout::dfs::tests::partial_cycle ... ok
[INFO] [stdout] test struct_layout::dfs::tests::simple_cycle ... ok
[INFO] [stdout] test struct_layout::dfs::tests::self_loop ... ok
[INFO] [stdout] test type_checker::test::test_arithmetic_with_variables ... ok
[INFO] [stdout] test type_checker::test::test_array_mixed_expr_types ... ok
[INFO] [stdout] test type_checker::test::test_arithmetic_with_function_result ... ok
[INFO] [stdout] test type_checker::test::test_array_init_empty ... ok
[INFO] [stdout] test type_checker::test::test_assignment_arithmetic_result ... ok
[INFO] [stdout] test type_checker::test::test_array_init_homogeneous_ints ... ok
[INFO] [stdout] test type_checker::test::test_assignment_incompatible_int_to_bool ... ok
[INFO] [stdout] test type_checker::test::test_block_in_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_block_return_mismatched ... ok
[INFO] [stdout] test type_checker::test::test_assignment_incompatible_bool_to_int ... ok
[INFO] [stdout] test type_checker::test::test_block_multiple_statements ... ok
[INFO] [stdout] test type_checker::test::test_array_init_homogeneous_bools ... ok
[INFO] [stdout] test type_checker::test::test_block_return_matching ... ok
[INFO] [stdout] test type_checker::test::test_array_with_expressions ... ok
[INFO] [stdout] test type_checker::test::test_array_with_function_results ... ok
[INFO] [stdout] test type_checker::test::test_assignment_compatible_type ... ok
[INFO] [stdout] test type_checker::test::test_assignment_to_if_result ... ok
[INFO] [stdout] test type_checker::test::test_array_init_heterogeneous ... ok
[INFO] [stdout] test struct_layout::dfs::tests::single_node ... ok
[INFO] [stdout] test type_checker::test::test_block_with_return_value ... ok
[INFO] [stdout] test type_checker::test::test_boolean_expression ... ok
[INFO] [stdout] test type_checker::test::test_break_inside_nested_while ... ok
[INFO] [stdout] test type_checker::test::test_assignment_function_result ... ok
[INFO] [stdout] test type_checker::test::test_break_inside_while ... ok
[INFO] [stdout] test type_checker::test::test_comparison_both_function_calls ... ok
[INFO] [stdout] test type_checker::test::test_complex_boolean_expression ... ok
[INFO] [stdout] test type_checker::test::test_break_outside_while ... ok
[INFO] [stdout] test type_checker::test::test_comparison_with_function_call ... ok
[INFO] [stdout] test type_checker::test::test_comparison_complex_left ... ok
[INFO] [stdout] test type_checker::test::test_complex_arithmetic_chain ... ok
[INFO] [stdout] test type_checker::test::test_call_variable_not_function ... ok
[INFO] [stdout] test type_checker::test::test_comparison_with_expressions ... ok
[INFO] [stdout] test type_checker::test::test_block_single_statement ... ok
[INFO] [stdout] test type_checker::test::test_division_left_string ... ok
[INFO] [stdout] test type_checker::test::test_chained_comparisons ... ok
[INFO] [stdout] test type_checker::test::test_empty_struct ... ok
[INFO] [stdout] test type_checker::test::test_deeply_nested_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_early_return_wrong_type ... ok
[INFO] [stdout] test type_checker::test::test_comparison_with_variables ... ok
[INFO] [stdout] test type_checker::test::test_empty_block ... ok
[INFO] [stdout] test type_checker::test::test_explicit_return_matching ... ok
[INFO] [stdout] test type_checker::test::test_complex_nested_expression ... ok
[INFO] [stdout] test type_checker::test::test_comparison_complex_right ... ok
[INFO] [stdout] test type_checker::test::test_division_valid ... ok
[INFO] [stdout] test type_checker::test::test_field_access_on_non_struct ... ok
[INFO] [stdout] test type_checker::test::test_double_negation ... ok
[INFO] [stdout] test type_checker::test::test_function_no_args ... ok
[INFO] [stdout] test type_checker::test::test_explicit_return_mismatched ... ok
[INFO] [stdout] test type_checker::test::test_function_wrong_arg_count ... ok
[INFO] [stdout] test type_checker::test::test_function_call_result_in_expr ... ok
[INFO] [stdout] test type_checker::test::test_greater_than_both_bool ... ok
[INFO] [stdout] test type_checker::test::test_greater_than_eq_mixed ... ok
[INFO] [stdout] test type_checker::test::test_function_calling_function ... ok
[INFO] [stdout] test type_checker::test::test_greater_than_eq_valid ... ok
[INFO] [stdout] test type_checker::test::test_function_too_many_args ... ok
[INFO] [stdout] test type_checker::test::test_function_multiple_wrong_args ... ok
[INFO] [stdout] test type_checker::test::test_function_three_args ... ok
[INFO] [stdout] test type_checker::test::test_if_bool_literal ... ok
[INFO] [stdout] test type_checker::test::test_if_else_matching_types ... ok
[INFO] [stdout] test type_checker::test::test_if_else_if_non_bool_condition ... ok
[INFO] [stdout] test type_checker::test::test_if_else_branch_mismatch ... ok
[INFO] [stdout] test type_checker::test::test_greater_than_valid ... ok
[INFO] [stdout] test type_checker::test::test_if_else_type_mismatch_bool_int ... ok
[INFO] [stdout] test type_checker::test::test_deep_nesting ... ok
[INFO] [stdout] test type_checker::test::test_function_wrong_middle_arg ... ok
[INFO] [stdout] test type_checker::test::test_function_wrong_second_arg ... ok
[INFO] [stdout] test type_checker::test::test_function_wrong_first_arg ... ok
[INFO] [stdout] test type_checker::test::test_if_as_function_arg ... ok
[INFO] [stdout] test type_checker::test::test_function_with_struct_param ... ok
[INFO] [stdout] test type_checker::test::test_if_string_condition ... ok
[INFO] [stdout] test type_checker::test::test_if_non_bool_condition ... ok
[INFO] [stdout] test type_checker::test::test_if_without_else ... ok
[INFO] [stdout] test type_checker::test::test_function_returning_struct ... ok
[INFO] [stdout] test type_checker::test::test_if_in_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_less_than_eq_mixed ... ok
[INFO] [stdout] test type_checker::test::test_less_than_eq_valid ... ok
[INFO] [stdout] test type_checker::test::test_if_with_block_body ... ok
[INFO] [stdout] test type_checker::test::test_less_than_valid ... ok
[INFO] [stdout] test ast::ast_expr::test::squared_brackets ... ok
[INFO] [stdout] test ast::ast_struct::test::basic_struct ... ok
[INFO] [stdout] test type_checker::test::test_multiplication_right_bool ... ok
[INFO] [stdout] test type_checker::test::test_multiplication_valid ... ok
[INFO] [stdout] test type_checker::test::test_if_only_else_if_no_final_else ... ok
[INFO] [stdout] test type_checker::test::test_mixed_control_flow ... ok
[INFO] [stdout] test type_checker::test::test_less_than_right_bool ... ok
[INFO] [stdout] test type_checker::test::test_negation_on_bool ... ok
[INFO] [stdout] test type_checker::test::test_mixed_type_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_negation_on_int ... ok
[INFO] [stdout] test type_checker::test::test_less_than_left_bool ... ok
[INFO] [stdout] test type_checker::test::test_multiple_else_if_mismatched ... ok
[INFO] [stdout] test type_checker::test::test_if_comparison_condition ... ok
[INFO] [stdout] test type_checker::test::test_multiple_var_decls ... ok
[INFO] [stdout] test type_checker::test::test_multiple_returns_all_matching ... ok
[INFO] [stdout] test type_checker::test::test_multiple_assignments ... ok
[INFO] [stdout] test type_checker::test::test_negation_on_expression ... ok
[INFO] [stdout] test type_checker::test::test_multiple_errors_in_function ... ok
[INFO] [stdout] test type_checker::test::test_negation_on_string ... ok
[INFO] [stdout] test type_checker::test::test_multiple_else_if_matching ... ok
[INFO] [stdout] test type_checker::test::test_nested_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_nested_arrays ... ok
[INFO] [stdout] test type_checker::test::test_nested_reference ... ok
[INFO] [stdout] test type_checker::test::test_nested_if_expressions ... ok
[INFO] [stdout] test type_checker::test::test_reassignment_same_type ... ok
[INFO] [stdout] test type_checker::test::test_reference_on_int ... ok
[INFO] [stdout] test type_checker::test::test_reference_in_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_nested_struct_field_access ... ok
[INFO] [stdout] test type_checker::test::test_return_in_else_branch ... ok
[INFO] [stdout] test type_checker::test::test_multiple_function_calls_in_expr ... ok
[INFO] [stdout] test type_checker::test::test_nested_blocks ... ok
[INFO] [stdout] test type_checker::test::test_struct_creation_all_fields ... ok
[INFO] [stdout] test type_checker::test::test_return_in_if_branch ... ok
[INFO] [stdout] test type_checker::test::test_struct_creation_extra_field ... ok
[INFO] [stdout] test type_checker::test::test_struct_field_access ... ok
[INFO] [stdout] test type_checker::test::test_struct_creation_duplicate_field ... ok
[INFO] [stdout] test type_checker::test::test_nested_function_calls ... ok
[INFO] [stdout] test type_checker::test::test_return_with_expression ... ok
[INFO] [stdout] test type_checker::test::test_struct_creation_wrong_field_type ... ok
[INFO] [stdout] test type_checker::test::test_struct_creation_missing_field ... ok
[INFO] [stdout] test type_checker::test::test_var_decl_with_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_triple_negation ... ok
[INFO] [stdout] test type_checker::test::test_struct_field_in_arithmetic ... ok
[INFO] [stdout] test type_checker::test::test_return_in_nested_block ... ok
[INFO] [stdout] test type_checker::test::test_subtraction_left_bool ... ok
[INFO] [stdout] test type_checker::test::test_simple_addition ... ok
[INFO] [stdout] test type_checker::test::test_var_decl_with_function_call ... ok
[INFO] [stdout] test type_checker::test::test_subtraction_valid ... ok
[INFO] [stdout] test type_checker::test::test_struct_as_function_param ... ok
[INFO] [stdout] test type_checker::test::test_var_decl_complex_expr ... ok
[INFO] [stdout] test type_checker::test::test_while_bool_condition ... ok
[INFO] [stdout] test type_checker::test::test_subtraction_both_sides_wrong ... ok
[INFO] [stdout] test type_checker::test::test_var_decl_int ... ok
[INFO] [stdout] test type_checker::test::test_while_int_condition ... ok
[INFO] [stdout] test type_checker::test::test_var_decl_bool ... ok
[INFO] [stdout] test type_checker::test::test_while_with_body ... ok
[INFO] [stdout] test type_checker::test::test_while_comparison_condition ... ok
[INFO] [stdout] test type_checker::test::test_while_empty_body ... ok
[INFO] [stdout] test type_checker::test::test_reference_on_bool ... ok
[INFO] [stdout] test type_checker::test::test_program_with_multiple_functions ... ok
[INFO] [stdout] test ast::ast_expr::test::unary_negation ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/lang/1d3d6503a9c7411d/deps/lang-1d3d6503a9c7411d)
[INFO] [stdout] 
[INFO] [stderr]      Running tests/example_dir_test.rs (/opt/rustwide/target/debug/build/lang/fa8414c207fe2237/deps/example_dir_test-fa8414c207fe2237)
[INFO] [stdout] test result: ok. 275 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test compile_example_fib ... FAILED
[INFO] [stdout] test compile_example_hello ... FAILED
[INFO] [stdout] test compile_example_add ... FAILED
[INFO] [stdout] test compile_example_while ... FAILED
[INFO] [stdout] test compile_example_fn_add ... FAILED
[INFO] [stdout] test compile_example_yes ... FAILED
[INFO] [stdout] test compile_example_cat ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- compile_example_fib stdout ----
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 28,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 29,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 31,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 33,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 37,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 39,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 41,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 44,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 46,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 48,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 19,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 5,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 4,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         6,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             body: Some(
[INFO] [stdout]                 AstBlock {
[INFO] [stdout]                     block_open_token_at: 26,
[INFO] [stdout]                     block_close_token_at: 50,
[INFO] [stdout]                     statements: [
[INFO] [stdout]                         AstStatement {
[INFO] [stdout]                             start_token_at: 27,
[INFO] [stdout]                             kind: BlockReturn {
[INFO] [stdout]                                 expr: AstExpr {
[INFO] [stdout]                                     span: Span {
[INFO] [stdout]                                         start: 91,
[INFO] [stdout]                                         end: 162,
[INFO] [stdout]                                     },
[INFO] [stdout]                                     kind: Op(
[INFO] [stdout]                                         IfCond {
[INFO] [stdout]                                             condition: AstExpr {
[INFO] [stdout]                                                 span: Span {
[INFO] [stdout]                                                     start: 94,
[INFO] [stdout]                                                     end: 101,
[INFO] [stdout]                                                 },
[INFO] [stdout]                                                 kind: Op(
[INFO] [stdout]                                                     LessThan {
[INFO] [stdout]                                                         left: AstExpr {
[INFO] [stdout]                                                             span: Span {
[INFO] [stdout]                                                                 start: 94,
[INFO] [stdout]                                                                 end: 95,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             kind: Atom(
[INFO] [stdout]                                                                 Ident(
[INFO] [stdout]                                                                     (
[INFO] [stdout]                                                                         IdentId(
[INFO] [stdout]                                                                             6,
[INFO] [stdout]                                                                         ),
[INFO] [stdout]                                                                         None,
[INFO] [stdout]                                                                     ),
[INFO] [stdout]                                                                 ),
[INFO] [stdout]                                                             ),
[INFO] [stdout]                                                             type_id: None,
[INFO] [stdout]                                                             expr_count: 1,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                         right: AstExpr {
[INFO] [stdout]                                                             span: Span {
[INFO] [stdout]                                                                 start: 98,
[INFO] [stdout]                                                                 end: 99,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             kind: Atom(
[INFO] [stdout]                                                                 Int(
[INFO] [stdout]                                                                     2,
[INFO] [stdout]                                                                 ),
[INFO] [stdout]                                                             ),
[INFO] [stdout]                                                             type_id: None,
[INFO] [stdout]                                                             expr_count: 1,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                     },
[INFO] [stdout]                                                 ),
[INFO] [stdout]                                                 type_id: None,
[INFO] [stdout]                                                 expr_count: 3,
[INFO] [stdout]                                             },
[INFO] [stdout]                                             block: AstBlock {
[INFO] [stdout]                                                 block_open_token_at: 31,
[INFO] [stdout]                                                 block_close_token_at: 33,
[INFO] [stdout]                                                 statements: [
[INFO] [stdout]                                                     AstStatement {
[INFO] [stdout]                                                         start_token_at: 32,
[INFO] [stdout]                                                         kind: BlockReturn {
[INFO] [stdout]                                                             expr: AstExpr {
[INFO] [stdout]                                                                 span: Span {
[INFO] [stdout]                                                                     start: 110,
[INFO] [stdout]                                                                     end: 111,
[INFO] [stdout]                                                                 },
[INFO] [stdout]                                                                 kind: Atom(
[INFO] [stdout]                                                                     Ident(
[INFO] [stdout]                                                                         (
[INFO] [stdout]                                                                             IdentId(
[INFO] [stdout]                                                                                 6,
[INFO] [stdout]                                                                             ),
[INFO] [stdout]                                                                             None,
[INFO] [stdout]                                                                         ),
[INFO] [stdout]                                                                     ),
[INFO] [stdout]                                                                 ),
[INFO] [stdout]                                                                 type_id: None,
[INFO] [stdout]                                                                 expr_count: 1,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             is_fn_return: false,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                         expr_count: 1,
[INFO] [stdout]                                                     },
[INFO] [stdout]                                                 ],
[INFO] [stdout]                                                 type_id: None,
[INFO] [stdout]                                                 expr_count: 2,
[INFO] [stdout]                                             },
[INFO] [stdout]                                             else_ifs: [],
[INFO] [stdout]                                             unconditional_else: Some(
[INFO] [stdout]                                                 AstBlock {
[INFO] [stdout]                                                     block_open_token_at: 35,
[INFO] [stdout]                                                     block_close_token_at: 49,
[INFO] [stdout]                                                     statements: [
[INFO] [stdout]                                                         AstStatement {
[INFO] [stdout]                                                             start_token_at: 36,
[INFO] [stdout]                                                             kind: BlockReturn {
[INFO] [stdout]                                                                 expr: AstExpr {
[INFO] [stdout]                                                                     span: Span {
[INFO] [stdout]                                                                         start: 133,
[INFO] [stdout]                                                                         end: 162,
[INFO] [stdout]                                                                     },
[INFO] [stdout]                                                                     kind: Op(
[INFO] [stdout]                                                                         Add {
[INFO] [stdout]                                                                             left: AstExpr {
[INFO] [stdout]                                                                                 span: Span {
[INFO] [stdout]                                                                                     start: 133,
[INFO] [stdout]                                                                                     end: 145,
[INFO] [stdout]                                                                                 },
[INFO] [stdout]                                                                                 kind: Op(
[INFO] [stdout]                                                                                     FnCall {
[INFO] [stdout]                                                                                         ident: AstExpr {
[INFO] [stdout]                                                                                             span: Span {
[INFO] [stdout]                                                                                                 start: 133,
[INFO] [stdout]                                                                                                 end: 136,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                 Ident(
[INFO] [stdout]                                                                                                     (
[INFO] [stdout]                                                                                                         IdentId(
[INFO] [stdout]                                                                                                             5,
[INFO] [stdout]                                                                                                         ),
[INFO] [stdout]                                                                                                         None,
[INFO] [stdout]                                                                                                     ),
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                             ),
[INFO] [stdout]                                                                                             type_id: None,
[INFO] [stdout]                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                         },
[INFO] [stdout]                                                                                         args: [
[INFO] [stdout]                                                                                             AstExpr {
[INFO] [stdout]                                                                                                 span: Span {
[INFO] [stdout]                                                                                                     start: 137,
[INFO] [stdout]                                                                                                     end: 143,
[INFO] [stdout]                                                                                                 },
[INFO] [stdout]                                                                                                 kind: Op(
[INFO] [stdout]                                                                                                     Minus {
[INFO] [stdout]                                                                                                         left: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 137,
[INFO] [stdout]                                                                                                                 end: 138,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Ident(
[INFO] [stdout]                                                                                                                     (
[INFO] [stdout]                                                                                                                         IdentId(
[INFO] [stdout]                                                                                                                             6,
[INFO] [stdout]                                                                                                                         ),
[INFO] [stdout]                                                                                                                         None,
[INFO] [stdout]                                                                                                                     ),
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                         right: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 141,
[INFO] [stdout]                                                                                                                 end: 142,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Int(
[INFO] [stdout]                                                                                                                     1,
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                     },
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                                 type_id: None,
[INFO] [stdout]                                                                                                 expr_count: 3,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                         ],
[INFO] [stdout]                                                                                     },
[INFO] [stdout]                                                                                 ),
[INFO] [stdout]                                                                                 type_id: None,
[INFO] [stdout]                                                                                 expr_count: 4,
[INFO] [stdout]                                                                             },
[INFO] [stdout]                                                                             right: AstExpr {
[INFO] [stdout]                                                                                 span: Span {
[INFO] [stdout]                                                                                     start: 146,
[INFO] [stdout]                                                                                     end: 162,
[INFO] [stdout]                                                                                 },
[INFO] [stdout]                                                                                 kind: Op(
[INFO] [stdout]                                                                                     FnCall {
[INFO] [stdout]                                                                                         ident: AstExpr {
[INFO] [stdout]                                                                                             span: Span {
[INFO] [stdout]                                                                                                 start: 146,
[INFO] [stdout]                                                                                                 end: 149,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                 Ident(
[INFO] [stdout]                                                                                                     (
[INFO] [stdout]                                                                                                         IdentId(
[INFO] [stdout]                                                                                                             5,
[INFO] [stdout]                                                                                                         ),
[INFO] [stdout]                                                                                                         None,
[INFO] [stdout]                                                                                                     ),
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                             ),
[INFO] [stdout]                                                                                             type_id: None,
[INFO] [stdout]                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                         },
[INFO] [stdout]                                                                                         args: [
[INFO] [stdout]                                                                                             AstExpr {
[INFO] [stdout]                                                                                                 span: Span {
[INFO] [stdout]                                                                                                     start: 150,
[INFO] [stdout]                                                                                                     end: 156,
[INFO] [stdout]                                                                                                 },
[INFO] [stdout]                                                                                                 kind: Op(
[INFO] [stdout]                                                                                                     Minus {
[INFO] [stdout]                                                                                                         left: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 150,
[INFO] [stdout]                                                                                                                 end: 151,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Ident(
[INFO] [stdout]                                                                                                                     (
[INFO] [stdout]                                                                                                                         IdentId(
[INFO] [stdout]                                                                                                                             6,
[INFO] [stdout]                                                                                                                         ),
[INFO] [stdout]                                                                                                                         None,
[INFO] [stdout]                                                                                                                     ),
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                         right: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 154,
[INFO] [stdout]                                                                                                                 end: 155,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Int(
[INFO] [stdout]                                                                                                                     2,
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                     },
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                                 type_id: None,
[INFO] [stdout]                                                                                                 expr_count: 3,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                         ],
[INFO] [stdout]                                                                                     },
[INFO] [stdout]                                                                                 ),
[INFO] [stdout]                                                                                 type_id: None,
[INFO] [stdout]                                                                                 expr_count: 4,
[INFO] [stdout]                                                                             },
[INFO] [stdout]                                                                         },
[INFO] [stdout]                                                                     ),
[INFO] [stdout]                                                                     type_id: None,
[INFO] [stdout]                                                                     expr_count: 9,
[INFO] [stdout]                                                                 },
[INFO] [stdout]                                                                 is_fn_return: false,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             expr_count: 9,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                     ],
[INFO] [stdout]                                                     type_id: None,
[INFO] [stdout]                                                     expr_count: 10,
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             ),
[INFO] [stdout]                                         },
[INFO] [stdout]                                     ),
[INFO] [stdout]                                     type_id: None,
[INFO] [stdout]                                     expr_count: 15,
[INFO] [stdout]                                 },
[INFO] [stdout]                                 is_fn_return: true,
[INFO] [stdout]                             },
[INFO] [stdout]                             expr_count: 16,
[INFO] [stdout]                         },
[INFO] [stdout]                     ],
[INFO] [stdout]                     type_id: None,
[INFO] [stdout]                     expr_count: 17,
[INFO] [stdout]                 },
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     next_token_i: 58,
[INFO] [stdout]     interner: RwLock {
[INFO] [stdout]         data: Interner {
[INFO] [stdout]             map: {
[INFO] [stdout]                 "Int": IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "printf": IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "n": IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "main": IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "str": IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "fib": IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "val": IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]                 "CStr": IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             },
[INFO] [stdout]             vec: [
[INFO] [stdout]                 "printf",
[INFO] [stdout]                 "str",
[INFO] [stdout]                 "CStr",
[INFO] [stdout]                 "val",
[INFO] [stdout]                 "Int",
[INFO] [stdout]                 "fib",
[INFO] [stdout]                 "n",
[INFO] [stdout]                 "main",
[INFO] [stdout]             ],
[INFO] [stdout]         },
[INFO] [stdout]     },
[INFO] [stdout] }
[INFO] [stdout] [src/ast/ast_expr/mod.rs:128:9] &self = Ast {
[INFO] [stdout]     errs: [],
[INFO] [stdout]     imports: [],
[INFO] [stdout]     fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 19,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 5,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 4,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         6,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             body: Some(
[INFO] [stdout]                 AstBlock {
[INFO] [stdout]                     block_open_token_at: 26,
[INFO] [stdout]                     block_close_token_at: 50,
[INFO] [stdout]                     statements: [
[INFO] [stdout]                         AstStatement {
[INFO] [stdout]                             start_token_at: 27,
[INFO] [stdout]                             kind: BlockReturn {
[INFO] [stdout]                                 expr: AstExpr {
[INFO] [stdout]                                     span: Span {
[INFO] [stdout]                                         start: 91,
[INFO] [stdout]                                         end: 162,
[INFO] [stdout]                                     },
[INFO] [stdout]                                     kind: Op(
[INFO] [stdout]                                         IfCond {
[INFO] [stdout]                                             condition: AstExpr {
[INFO] [stdout]                                                 span: Span {
[INFO] [stdout]                                                     start: 94,
[INFO] [stdout]                                                     end: 101,
[INFO] [stdout]                                                 },
[INFO] [stdout]                                                 kind: Op(
[INFO] [stdout]                                                     LessThan {
[INFO] [stdout]                                                         left: AstExpr {
[INFO] [stdout]                                                             span: Span {
[INFO] [stdout]                                                                 start: 94,
[INFO] [stdout]                                                                 end: 95,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             kind: Atom(
[INFO] [stdout]                                                                 Ident(
[INFO] [stdout]                                                                     (
[INFO] [stdout]                                                                         IdentId(
[INFO] [stdout]                                                                             6,
[INFO] [stdout]                                                                         ),
[INFO] [stdout]                                                                         None,
[INFO] [stdout]                                                                     ),
[INFO] [stdout]                                                                 ),
[INFO] [stdout]                                                             ),
[INFO] [stdout]                                                             type_id: None,
[INFO] [stdout]                                                             expr_count: 1,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                         right: AstExpr {
[INFO] [stdout]                                                             span: Span {
[INFO] [stdout]                                                                 start: 98,
[INFO] [stdout]                                                                 end: 99,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             kind: Atom(
[INFO] [stdout]                                                                 Int(
[INFO] [stdout]                                                                     2,
[INFO] [stdout]                                                                 ),
[INFO] [stdout]                                                             ),
[INFO] [stdout]                                                             type_id: None,
[INFO] [stdout]                                                             expr_count: 1,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                     },
[INFO] [stdout]                                                 ),
[INFO] [stdout]                                                 type_id: None,
[INFO] [stdout]                                                 expr_count: 3,
[INFO] [stdout]                                             },
[INFO] [stdout]                                             block: AstBlock {
[INFO] [stdout]                                                 block_open_token_at: 31,
[INFO] [stdout]                                                 block_close_token_at: 33,
[INFO] [stdout]                                                 statements: [
[INFO] [stdout]                                                     AstStatement {
[INFO] [stdout]                                                         start_token_at: 32,
[INFO] [stdout]                                                         kind: BlockReturn {
[INFO] [stdout]                                                             expr: AstExpr {
[INFO] [stdout]                                                                 span: Span {
[INFO] [stdout]                                                                     start: 110,
[INFO] [stdout]                                                                     end: 111,
[INFO] [stdout]                                                                 },
[INFO] [stdout]                                                                 kind: Atom(
[INFO] [stdout]                                                                     Ident(
[INFO] [stdout]                                                                         (
[INFO] [stdout]                                                                             IdentId(
[INFO] [stdout]                                                                                 6,
[INFO] [stdout]                                                                             ),
[INFO] [stdout]                                                                             None,
[INFO] [stdout]                                                                         ),
[INFO] [stdout]                                                                     ),
[INFO] [stdout]                                                                 ),
[INFO] [stdout]                                                                 type_id: None,
[INFO] [stdout]                                                                 expr_count: 1,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             is_fn_return: false,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                         expr_count: 1,
[INFO] [stdout]                                                     },
[INFO] [stdout]                                                 ],
[INFO] [stdout]                                                 type_id: None,
[INFO] [stdout]                                                 expr_count: 2,
[INFO] [stdout]                                             },
[INFO] [stdout]                                             else_ifs: [],
[INFO] [stdout]                                             unconditional_else: Some(
[INFO] [stdout]                                                 AstBlock {
[INFO] [stdout]                                                     block_open_token_at: 35,
[INFO] [stdout]                                                     block_close_token_at: 49,
[INFO] [stdout]                                                     statements: [
[INFO] [stdout]                                                         AstStatement {
[INFO] [stdout]                                                             start_token_at: 36,
[INFO] [stdout]                                                             kind: BlockReturn {
[INFO] [stdout]                                                                 expr: AstExpr {
[INFO] [stdout]                                                                     span: Span {
[INFO] [stdout]                                                                         start: 133,
[INFO] [stdout]                                                                         end: 162,
[INFO] [stdout]                                                                     },
[INFO] [stdout]                                                                     kind: Op(
[INFO] [stdout]                                                                         Add {
[INFO] [stdout]                                                                             left: AstExpr {
[INFO] [stdout]                                                                                 span: Span {
[INFO] [stdout]                                                                                     start: 133,
[INFO] [stdout]                                                                                     end: 145,
[INFO] [stdout]                                                                                 },
[INFO] [stdout]                                                                                 kind: Op(
[INFO] [stdout]                                                                                     FnCall {
[INFO] [stdout]                                                                                         ident: AstExpr {
[INFO] [stdout]                                                                                             span: Span {
[INFO] [stdout]                                                                                                 start: 133,
[INFO] [stdout]                                                                                                 end: 136,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                 Ident(
[INFO] [stdout]                                                                                                     (
[INFO] [stdout]                                                                                                         IdentId(
[INFO] [stdout]                                                                                                             5,
[INFO] [stdout]                                                                                                         ),
[INFO] [stdout]                                                                                                         None,
[INFO] [stdout]                                                                                                     ),
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                             ),
[INFO] [stdout]                                                                                             type_id: None,
[INFO] [stdout]                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                         },
[INFO] [stdout]                                                                                         args: [
[INFO] [stdout]                                                                                             AstExpr {
[INFO] [stdout]                                                                                                 span: Span {
[INFO] [stdout]                                                                                                     start: 137,
[INFO] [stdout]                                                                                                     end: 143,
[INFO] [stdout]                                                                                                 },
[INFO] [stdout]                                                                                                 kind: Op(
[INFO] [stdout]                                                                                                     Minus {
[INFO] [stdout]                                                                                                         left: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 137,
[INFO] [stdout]                                                                                                                 end: 138,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Ident(
[INFO] [stdout]                                                                                                                     (
[INFO] [stdout]                                                                                                                         IdentId(
[INFO] [stdout]                                                                                                                             6,
[INFO] [stdout]                                                                                                                         ),
[INFO] [stdout]                                                                                                                         None,
[INFO] [stdout]                                                                                                                     ),
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                         right: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 141,
[INFO] [stdout]                                                                                                                 end: 142,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Int(
[INFO] [stdout]                                                                                                                     1,
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                     },
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                                 type_id: None,
[INFO] [stdout]                                                                                                 expr_count: 3,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                         ],
[INFO] [stdout]                                                                                     },
[INFO] [stdout]                                                                                 ),
[INFO] [stdout]                                                                                 type_id: None,
[INFO] [stdout]                                                                                 expr_count: 4,
[INFO] [stdout]                                                                             },
[INFO] [stdout]                                                                             right: AstExpr {
[INFO] [stdout]                                                                                 span: Span {
[INFO] [stdout]                                                                                     start: 146,
[INFO] [stdout]                                                                                     end: 162,
[INFO] [stdout]                                                                                 },
[INFO] [stdout]                                                                                 kind: Op(
[INFO] [stdout]                                                                                     FnCall {
[INFO] [stdout]                                                                                         ident: AstExpr {
[INFO] [stdout]                                                                                             span: Span {
[INFO] [stdout]                                                                                                 start: 146,
[INFO] [stdout]                                                                                                 end: 149,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                 Ident(
[INFO] [stdout]                                                                                                     (
[INFO] [stdout]                                                                                                         IdentId(
[INFO] [stdout]                                                                                                             5,
[INFO] [stdout]                                                                                                         ),
[INFO] [stdout]                                                                                                         None,
[INFO] [stdout]                                                                                                     ),
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                             ),
[INFO] [stdout]                                                                                             type_id: None,
[INFO] [stdout]                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                         },
[INFO] [stdout]                                                                                         args: [
[INFO] [stdout]                                                                                             AstExpr {
[INFO] [stdout]                                                                                                 span: Span {
[INFO] [stdout]                                                                                                     start: 150,
[INFO] [stdout]                                                                                                     end: 156,
[INFO] [stdout]                                                                                                 },
[INFO] [stdout]                                                                                                 kind: Op(
[INFO] [stdout]                                                                                                     Minus {
[INFO] [stdout]                                                                                                         left: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 150,
[INFO] [stdout]                                                                                                                 end: 151,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Ident(
[INFO] [stdout]                                                                                                                     (
[INFO] [stdout]                                                                                                                         IdentId(
[INFO] [stdout]                                                                                                                             6,
[INFO] [stdout]                                                                                                                         ),
[INFO] [stdout]                                                                                                                         None,
[INFO] [stdout]                                                                                                                     ),
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                         right: AstExpr {
[INFO] [stdout]                                                                                                             span: Span {
[INFO] [stdout]                                                                                                                 start: 154,
[INFO] [stdout]                                                                                                                 end: 155,
[INFO] [stdout]                                                                                                             },
[INFO] [stdout]                                                                                                             kind: Atom(
[INFO] [stdout]                                                                                                                 Int(
[INFO] [stdout]                                                                                                                     2,
[INFO] [stdout]                                                                                                                 ),
[INFO] [stdout]                                                                                                             ),
[INFO] [stdout]                                                                                                             type_id: None,
[INFO] [stdout]                                                                                                             expr_count: 1,
[INFO] [stdout]                                                                                                         },
[INFO] [stdout]                                                                                                     },
[INFO] [stdout]                                                                                                 ),
[INFO] [stdout]                                                                                                 type_id: None,
[INFO] [stdout]                                                                                                 expr_count: 3,
[INFO] [stdout]                                                                                             },
[INFO] [stdout]                                                                                         ],
[INFO] [stdout]                                                                                     },
[INFO] [stdout]                                                                                 ),
[INFO] [stdout]                                                                                 type_id: None,
[INFO] [stdout]                                                                                 expr_count: 4,
[INFO] [stdout]                                                                             },
[INFO] [stdout]                                                                         },
[INFO] [stdout]                                                                     ),
[INFO] [stdout]                                                                     type_id: None,
[INFO] [stdout]                                                                     expr_count: 9,
[INFO] [stdout]                                                                 },
[INFO] [stdout]                                                                 is_fn_return: false,
[INFO] [stdout]                                                             },
[INFO] [stdout]                                                             expr_count: 9,
[INFO] [stdout]                                                         },
[INFO] [stdout]                                                     ],
[INFO] [stdout]                                                     type_id: None,
[INFO] [stdout]                                                     expr_count: 10,
[INFO] [stdout]                                                 },
[INFO] [stdout]                                             ),
[INFO] [stdout]                                         },
[INFO] [stdout]                                     ),
[INFO] [stdout]                                     type_id: None,
[INFO] [stdout]                                     expr_count: 15,
[INFO] [stdout]                                 },
[INFO] [stdout]                                 is_fn_return: true,
[INFO] [stdout]                             },
[INFO] [stdout]                             expr_count: 16,
[INFO] [stdout]                         },
[INFO] [stdout]                     ],
[INFO] [stdout]                     type_id: None,
[INFO] [stdout]                     expr_count: 17,
[INFO] [stdout]                 },
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     extern_fns: [
[INFO] [stdout]         AstFunc {
[INFO] [stdout]             fn_token_at: 6,
[INFO] [stdout]             ident_id: IdentId(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]             symbol_id: SymbolId(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]             args: [
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Ref(
[INFO] [stdout]                         CStr,
[INFO] [stdout]                     ),
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         0,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]                 AstFnArg {
[INFO] [stdout]                     ident_id: IdentId(
[INFO] [stdout]                         3,
[INFO] [stdout]                     ),
[INFO] [stdout]                     var_type: Int,
[INFO] [stdout]                     symbol_id: SymbolId(
[INFO] [stdout]                         1,
[INFO] [stdout]                     ),
[INFO] [stdout]                 },
[INFO] [stdout]             ],
[INFO] [stdout]             return_type: Int,
[INFO] [stdout]             return_type_span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             body: None,
[INFO] [stdout]         },
[INFO] [stdout]     ],
[INFO] [stdout]     enums: [],
[INFO] [stdout]     structs: [],
[INFO] [stdout]     tokens: [
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 0,
[INFO] [stdout]                 end: 6,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ImportKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 7,
[INFO] [stdout]                 end: 8,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 9,
[INFO] [stdout]                 end: 10,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 12,
[INFO] [stdout]                 end: 18,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ExternKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 19,
[INFO] [stdout]                 end: 21,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Str(
[INFO] [stdout]                 "C",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 23,
[INFO] [stdout]                 end: 24,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 29,
[INFO] [stdout]                 end: 31,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 32,
[INFO] [stdout]                 end: 38,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 38,
[INFO] [stdout]                 end: 39,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 39,
[INFO] [stdout]                 end: 42,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     1,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 43,
[INFO] [stdout]                 end: 44,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 44,
[INFO] [stdout]                 end: 48,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     2,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 48,
[INFO] [stdout]                 end: 49,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 50,
[INFO] [stdout]                 end: 53,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     3,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 54,
[INFO] [stdout]                 end: 57,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 57,
[INFO] [stdout]                 end: 58,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 59,
[INFO] [stdout]                 end: 62,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 62,
[INFO] [stdout]                 end: 63,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 64,
[INFO] [stdout]                 end: 65,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 67,
[INFO] [stdout]                 end: 69,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 70,
[INFO] [stdout]                 end: 73,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 73,
[INFO] [stdout]                 end: 74,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 74,
[INFO] [stdout]                 end: 75,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 76,
[INFO] [stdout]                 end: 79,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 79,
[INFO] [stdout]                 end: 80,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 81,
[INFO] [stdout]                 end: 84,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 85,
[INFO] [stdout]                 end: 86,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 91,
[INFO] [stdout]                 end: 93,
[INFO] [stdout]             },
[INFO] [stdout]             kind: IfKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 94,
[INFO] [stdout]                 end: 95,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 96,
[INFO] [stdout]                 end: 97,
[INFO] [stdout]             },
[INFO] [stdout]             kind: LessThan,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 98,
[INFO] [stdout]                 end: 99,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 100,
[INFO] [stdout]                 end: 101,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 110,
[INFO] [stdout]                 end: 111,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 116,
[INFO] [stdout]                 end: 117,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 118,
[INFO] [stdout]                 end: 122,
[INFO] [stdout]             },
[INFO] [stdout]             kind: ElseKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 123,
[INFO] [stdout]                 end: 124,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 133,
[INFO] [stdout]                 end: 136,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 136,
[INFO] [stdout]                 end: 137,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 137,
[INFO] [stdout]                 end: 138,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 139,
[INFO] [stdout]                 end: 140,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 141,
[INFO] [stdout]                 end: 142,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 1,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 142,
[INFO] [stdout]                 end: 143,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 144,
[INFO] [stdout]                 end: 145,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Add,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 146,
[INFO] [stdout]                 end: 149,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 149,
[INFO] [stdout]                 end: 150,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 150,
[INFO] [stdout]                 end: 151,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     6,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 152,
[INFO] [stdout]                 end: 153,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Subtract,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 154,
[INFO] [stdout]                 end: 155,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 2,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 155,
[INFO] [stdout]                 end: 156,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 161,
[INFO] [stdout]                 end: 162,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 163,
[INFO] [stdout]                 end: 164,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 166,
[INFO] [stdout]                 end: 168,
[INFO] [stdout]             },
[INFO] [stdout]             kind: FnKeyWord,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 169,
[INFO] [stdout]                 end: 173,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     7,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 173,
[INFO] [stdout]                 end: 174,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 174,
[INFO] [stdout]                 end: 175,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 176,
[INFO] [stdout]                 end: 179,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     4,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 180,
[INFO] [stdout]                 end: 181,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 186,
[INFO] [stdout]                 end: 192,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     0,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 192,
[INFO] [stdout]                 end: 193,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 193,
[INFO] [stdout]                 end: 194,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Amp,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 194,
[INFO] [stdout]                 end: 200,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CStr(
[INFO] [stdout]                 "%d\n",
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 201,
[INFO] [stdout]                 end: 202,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Comma,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 203,
[INFO] [stdout]                 end: 206,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Ident(
[INFO] [stdout]                 IdentId(
[INFO] [stdout]                     5,
[INFO] [stdout]                 ),
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 206,
[INFO] [stdout]                 end: 207,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketOpen,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 207,
[INFO] [stdout]                 end: 209,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 43,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 209,
[INFO] [stdout]                 end: 210,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 210,
[INFO] [stdout]                 end: 211,
[INFO] [stdout]             },
[INFO] [stdout]             kind: BracketClose,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 211,
[INFO] [stdout]                 end: 212,
[INFO] [stdout]             },
[INFO] [stdout]             kind: SemiColon,
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 217,
[INFO] [stdout]                 end: 218,
[INFO] [stdout]             },
[INFO] [stdout]             kind: Int(
[INFO] [stdout]                 0,
[INFO] [stdout]             ),
[INFO] [stdout]         },
[INFO] [stdout]         Token {
[INFO] [stdout]             span: Span {
[INFO] [stdout]                 start: 219,
[INFO] [stdout]                 end: 220,
[INFO] [stdout]             },
[INFO] [stdout]             kind: CurlyBracketClose,
[INFO] [stdout]         },
[WARN] too many lines in the log, truncating it
