[INFO] cloning repository https://github.com/cat16/lang
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cat16/lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcat16%2Flang", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcat16%2Flang'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7f10a1c49e0134d6beff7b896812121236b27400
[INFO] testing cat16/lang against beta-2026-03-05 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcat16%2Flang" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/cat16/lang
[INFO] finished tweaking git repo https://github.com/cat16/lang
[INFO] tweaked toml for git repo https://github.com/cat16/lang written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/cat16/lang on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/cat16/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" "+beta-2026-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 498a615e9eef8c86ea3ac801f860d98f8ad399c23337fca9508fe29ae9ab7b60
[INFO] running `Command { std: "docker" "start" "-a" "498a615e9eef8c86ea3ac801f860d98f8ad399c23337fca9508fe29ae9ab7b60", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "498a615e9eef8c86ea3ac801f860d98f8ad399c23337fca9508fe29ae9ab7b60", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "498a615e9eef8c86ea3ac801f860d98f8ad399c23337fca9508fe29ae9ab7b60", kill_on_drop: false }`
[INFO] [stdout] 498a615e9eef8c86ea3ac801f860d98f8ad399c23337fca9508fe29ae9ab7b60
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 09246495d659a5c38b0235680bfa0a72a9d365b110e88b09782ba2f4e5794cb9
[INFO] running `Command { std: "docker" "start" "-a" "09246495d659a5c38b0235680bfa0a72a9d365b110e88b09782ba2f4e5794cb9", kill_on_drop: false }`
[INFO] [stderr]    Compiling lang v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: let chains are only allowed in Rust 2024 or later
[INFO] [stdout]    --> src/compiler/program.rs:119:23
[INFO] [stdout]     |
[INFO] [stdout] 119 |                 while let Some(c) = cur
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: let chains are only allowed in Rust 2024 or later
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:33:16
[INFO] [stdout]    |
[INFO] [stdout] 33 |             if let Some(ty) = self.res_ty(f.ret)
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `error`
[INFO] [stdout]  --> src/ir/upper/mod.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | mod error;
[INFO] [stdout]   | ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `error`, create file "src/ir/upper/error.rs" or "src/ir/upper/error/mod.rs"
[INFO] [stdout]   = note: if there is a `mod error` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: let chains are only allowed in Rust 2024 or later
[INFO] [stdout]   --> src/parser/v3/nodes/block.rs:91:20
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 && let Some(s) = self.statements.last()
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::ir::MemberPath`
[INFO] [stdout]  --> src/parser/v3/lower/func.rs:6:76
[INFO] [stdout]   |
[INFO] [stdout] 6 |         FnID, IdentID, IdentStatus, MemRes, Member, MemberID, MemberIdent, MemberPath, MemberTy,
[INFO] [stdout]   |                                                                            ^^^^^^^^^^ no `MemberPath` in `ir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::ir::MemberPath`
[INFO] [stdout]  --> src/parser/v3/lower/ty.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ir::{GenericID, MemberIdent, MemberPath, Type, TypeID, UGeneric, UProgram},
[INFO] [stdout]   |                                  ^^^^^^^^^^ no `MemberPath` in `ir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]    |             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]    |             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]    |             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:86:13
[INFO] [stdout]    |
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]    |             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:89:55
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let (dstty, dstid) = data.res_var_ty(dst, ctx)?;
[INFO] [stdout]    |                                                       ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |             res |= data.match_types(dstty, srcty, dst);
[INFO] [stdout]    |             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:51
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |                                                   ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:106:47
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let si = data.res::<UStruct>(dst, ctx)?;
[INFO] [stdout]     |                                               ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `res` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:21
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                     ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:135:53
[INFO] [stdout]     |
[INFO] [stdout] 135 |             if let Some(ty) = data.res_var_ty(cond, ctx) {
[INFO] [stdout]     |                                                     ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:146:30
[INFO] [stdout]     |
[INFO] [stdout] 146 |                         ret: ctx.ret,
[INFO] [stdout]     |                              ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:147:36
[INFO] [stdout]     |
[INFO] [stdout] 147 |                         breakable: ctx.breakable,
[INFO] [stdout]     |                                    ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:158:30
[INFO] [stdout]     |
[INFO] [stdout] 158 |                         ret: ctx.ret,
[INFO] [stdout]     |                              ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:166:17
[INFO] [stdout]     |
[INFO] [stdout] 166 |             if !ctx.breakable {
[INFO] [stdout]     |                 ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:169:29
[INFO] [stdout]     |
[INFO] [stdout] 169 |                     origin: ctx.i.origin,
[INFO] [stdout]     |                             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:174:17
[INFO] [stdout]     |
[INFO] [stdout] 174 |             if !ctx.breakable {
[INFO] [stdout]     |                 ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `ctx` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:177:29
[INFO] [stdout]     |
[INFO] [stdout] 177 |                     origin: ctx.i.origin,
[INFO] [stdout]     |                             ^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected value, found enum `MemberID`
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:185:41
[INFO] [stdout]     |
[INFO] [stdout] 185 | ...                   id: MemberID
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: the enum is defined here
[INFO] [stdout]    --> src/ir/upper/kind.rs:96:1
[INFO] [stdout]     |
[INFO] [stdout]  96 | / pub enum MemberID {
[INFO] [stdout]  97 | |     Fn(FnID),
[INFO] [stdout]  98 | |     Struct(StructID),
[INFO] [stdout]  99 | |     Var(VarID),
[INFO] [stdout] 100 | |     Module(ModID),
[INFO] [stdout] 101 | |     Type(TypeDef),
[INFO] [stdout] 102 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout] help: the following enum variants are available
[INFO] [stdout]     |
[INFO] [stdout] 185 -                                     id: MemberID
[INFO] [stdout] 185 +                                     id: (parser::v3::lower::func::MemberID::Fn(/* fields */))
[INFO] [stdout]     |
[INFO] [stdout] 185 -                                     id: MemberID
[INFO] [stdout] 185 +                                     id: (parser::v3::lower::func::MemberID::Module(/* fields */))
[INFO] [stdout]     |
[INFO] [stdout] 185 -                                     id: MemberID
[INFO] [stdout] 185 +                                     id: (parser::v3::lower::func::MemberID::Struct(/* fields */))
[INFO] [stdout]     |
[INFO] [stdout] 185 -                                     id: MemberID
[INFO] [stdout] 185 +                                     id: (parser::v3::lower::func::MemberID::Type(/* fields */))
[INFO] [stdout]     |
[INFO] [stdout]     = and 1 other candidate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the beta release channel
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(box_patterns)]
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: the feature `let_chains` has been stable since `1.88.0` and no longer requires an attribute to enable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::*`
[INFO] [stdout]   --> src/ir/upper/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use error::*;
[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: `ir::arch::riscv64::RegRef`
[INFO] [stdout]  --> src/ir/lower/func.rs:2:41
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{compiler::arch::riscv::Reg, ir::arch::riscv64::RegRef};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UIdent`
[INFO] [stdout]  --> src/parser/v3/lower/block.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 |     ir::{IdentID, Type, UIdent, UInstruction, UVar},
[INFO] [stdout]   |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Keyword`, `Node`, `PAsmBlock`, `PIdent`, `PType`, `PVarDef`, `Parsable`, `ParseResult`, `ParserCtx`, `Symbol`, and `util::parse_list`
[INFO] [stdout]  --> src/parser/v3/nodes/asm_fn.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     util::parse_list, PAsmBlock, PIdent, Keyword, Node, Parsable, ParseResult, ParserCtx, Symbol, PType, PVarDef,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^^  ^^^^  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CompilerMsg` and `Token`
[INFO] [stdout]  --> src/parser/v3/nodes/def.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     CompilerMsg, Node, PExpr, PIdent, PType, Parsable, ParseResult, ParserCtx,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 5 |     Symbol, Token,
[INFO] [stdout]   |             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `asm_fn::*`
[INFO] [stdout]   --> src/parser/v3/nodes/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use asm_fn::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trai::*`
[INFO] [stdout]   --> src/parser/v3/nodes/mod.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use trai::*;
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `let_chains` has been stable since 1.88.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | #![feature(let_chains)]
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/program.rs:87:41
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn res_ty(&self, i: IdentID) -> Option<TypeID> {
[INFO] [stdout]    |            ------                       ^^^^^^^^^^^^^^ expected `Option<ID<Type>>`, found `()`
[INFO] [stdout]    |            |
[INFO] [stdout]    |            implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stdout]    |
[INFO] [stdout]    = note:   expected enum `Option<id::ID<upper::ty::Type>>`
[INFO] [stdout]            found unit type `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: expected `{closure@program.rs:104:73}` to return `ID<Type>`, but it returns `URes<ID<UVar>>`
[INFO] [stdout]    --> src/ir/upper/program.rs:104:77
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     &self.type_list_str(self.fns[ty.id].args.iter().map(|v| self.vars[v].ty)),
[INFO] [stdout]     |                           -------------                                 --- ^^^^^^^^^^^^^^^ expected `ID<Type>`, found `URes<ID<UVar>>`
[INFO] [stdout]     |                           |                                             |
[INFO] [stdout]     |                           |                                             this closure
[INFO] [stdout]     |                           required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `id::ID<upper::ty::Type>`
[INFO] [stdout]                  found enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]     = note: required for `Map<Iter<'_, ID<UVar>>, {closure@program.rs:104:73}>` to implement `Iterator`
[INFO] [stdout] note: required by a bound in `upper::program::UProgram::type_list_str`
[INFO] [stdout]    --> src/ir/upper/program.rs:121:57
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn type_list_str(&self, mut args: impl Iterator<Item = TypeID>) -> String {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ required by this bound in `UProgram::type_list_str`
[INFO] [stdout]     = note: the full name for the type has been written to '/opt/rustwide/target/debug/deps/lang-f925103a5f3aff67.long-type-11677188999065106552.txt'
[INFO] [stdout]     = note: consider using `--verbose` to print the full type name to the console
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `URes<id::ID<kind::UVar>>: upper::program::Typed` is not satisfied
[INFO] [stdout]    --> src/ir/upper/program.rs:105:37
[INFO] [stdout]     |
[INFO] [stdout] 105 |                     &self.type_name(self.fns[ty.id].ret)
[INFO] [stdout]     |                           --------- ^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `upper::program::Typed` is not implemented for `URes<id::ID<kind::UVar>>`
[INFO] [stdout]    --> src/ir/upper/kind.rs:132:1
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub enum URes<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `upper::program::Typed`
[INFO] [stdout]    --> src/ir/upper/program.rs:156:1
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl Typed for &Type {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `&upper::ty::Type`
[INFO] [stdout] ...
[INFO] [stdout] 162 | impl Typed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 168 | impl Typed for &TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^ `&id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 174 | impl Typed for &Box<Type> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^ `&Box<upper::ty::Type>`
[INFO] [stdout] note: required by a bound in `upper::program::UProgram::type_name`
[INFO] [stdout]    --> src/ir/upper/program.rs:91:38
[INFO] [stdout]     |
[INFO] [stdout]  91 |     pub fn type_name(&self, ty: impl Typed) -> String {
[INFO] [stdout]     |                                      ^^^^^ required by this bound in `UProgram::type_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `ty` found for reference `&kind::UVar` in the current scope
[INFO] [stdout]    --> src/ir/upper/resolve/error.rs:119:31
[INFO] [stdout]     |
[INFO] [stdout] 119 |         if let Some(ty) = var.ty() {
[INFO] [stdout]     |                               ^^-- help: remove the arguments
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               field, not a method
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following traits define an item `ty`, perhaps you need to implement one of them:
[INFO] [stdout]             candidate #1: `Typable`
[INFO] [stdout]             candidate #2: `resolve::ResKind`
[INFO] [stdout]             candidate #3: `upper::program::Typed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instantiate.rs:19:17
[INFO] [stdout]    |
[INFO] [stdout] 19 |             ty: VarTy::Res(ty),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `VarTy`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]               found enum `kind::VarTy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instantiate.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |             ty: VarTy::Res(ty),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `VarTy`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]               found enum `kind::VarTy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 50 |             for &a in args {
[INFO] [stdout]    |                 ^^    ---- this is an iterator with items of type `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 types differ in mutability
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]                       found reference `&_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:53:30
[INFO] [stdout]    |
[INFO] [stdout] 53 |             data.res::<UVar>(dst);
[INFO] [stdout]    |                  ----------- ^^^ expected `ID<UIdent>`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note:         expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn res<K: ResKind>(&mut self, i: IdentID) -> Result<K::Res, ResolveRes> {
[INFO] [stdout]    |            ^^^                        ----------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `constraints` on type `resolve::Sources<'a>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:58:32
[INFO] [stdout]    |
[INFO] [stdout] 58 |                         data.s.constraints.push(UResEvent::AssignVVI { dst, src });
[INFO] [stdout]    |                                ^^^^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `idents`, `vars`, `fns`, `structs`, `generics` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant named `AssignVVI` found for enum `UResEvent`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:58:60
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum UResEvent {
[INFO] [stdout]    | ------------------ variant `AssignVVI` not found here
[INFO] [stdout] ...
[INFO] [stdout] 58 |                         data.s.constraints.push(UResEvent::AssignVVI { dst, src });
[INFO] [stdout]    |                                                            ^^^^^^^^^ variant not found in `UResEvent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: method takes 0 generic arguments but 2 generic arguments were supplied
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:66:25
[INFO] [stdout]    |
[INFO] [stdout] 66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]    |                         ^^^^^^^^^^^-------------- help: remove the unnecessary generics
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         expected 0 generic arguments
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here, with 0 generic parameters
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    = note: `impl Trait` cannot be explicitly specified as a generic argument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `kind::UVar: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:66:39
[INFO] [stdout]     |
[INFO] [stdout]  66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]     |                         -----------   ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `kind::UVar`
[INFO] [stdout]    --> src/ir/upper/kind.rs:55:1
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct UVar {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `kind::UVar` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:91:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&mut URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:66:61
[INFO] [stdout]     |
[INFO] [stdout]  66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]     |                         -----------                         ^^^ the trait `resolve::HasOrigin` is not implemented for `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:66:25
[INFO] [stdout]    |
[INFO] [stdout] 66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: expected `UVar`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:66:51
[INFO] [stdout]    |
[INFO] [stdout] 66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]    |                                                   ^^^
[INFO] [stdout]    = note:         expected struct `kind::UVar`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: expected `UVar`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:66:56
[INFO] [stdout]    |
[INFO] [stdout] 66 |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout]    |                                                        ^^^
[INFO] [stdout]    = note:         expected struct `kind::UVar`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         dst: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] 92 |         src: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:65:42
[INFO] [stdout]    |
[INFO] [stdout] 65 |           UInstruction::Mv { dst, src } => {
[INFO] [stdout]    |  __________________________________________^
[INFO] [stdout] 66 | |             res |= data.match_types::<UVar, UVar>(dst, src, src);
[INFO] [stdout] 67 | |         }
[INFO] [stdout]    | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:69:53
[INFO] [stdout]    |
[INFO] [stdout] 69 |             let dstty = &data.types[data.res_var_ty(dst)?];
[INFO] [stdout]    |                                          ---------- ^^^ expected `ID<UIdent>`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note:         expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn res_var_ty(&mut self, i: IdentID) -> Result<TypeID, ResolveRes> {
[INFO] [stdout]    |            ^^^^^^^^^^            ----------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: method takes 0 generic arguments but 2 generic arguments were supplied
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:73:25
[INFO] [stdout]    |
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]    |                         ^^^^^^^^^^^-------------- help: remove the unnecessary generics
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         expected 0 generic arguments
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here, with 0 generic parameters
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    = note: `impl Trait` cannot be explicitly specified as a generic argument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `upper::ty::Type: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:73:39
[INFO] [stdout]     |
[INFO] [stdout]  73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]     |                         -----------   ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `upper::ty::Type`
[INFO] [stdout]    --> src/ir/upper/ty.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub enum Type {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `upper::ty::Type` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:91:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `kind::UVar: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:73:45
[INFO] [stdout]     |
[INFO] [stdout]  73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]     |                         -----------         ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `kind::UVar`
[INFO] [stdout]    --> src/ir/upper/kind.rs:55:1
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct UVar {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `kind::UVar` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&mut URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:73:65
[INFO] [stdout]     |
[INFO] [stdout]  73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]     |                         -----------                             ^^^ the trait `resolve::HasOrigin` is not implemented for `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:73:25
[INFO] [stdout]    |
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: expected `Type`, found `ID<Type>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:73:51
[INFO] [stdout]    |
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]    |                                                   ^^^^^^^
[INFO] [stdout]    = note: expected enum `upper::ty::Type`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] note: expected `UVar`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:73:60
[INFO] [stdout]    |
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout]    |                                                            ^^^
[INFO] [stdout]    = note:         expected struct `kind::UVar`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         dst: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] 92 |         src: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `upper::ty::Type`
[INFO] [stdout]    |
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(ir::upper::ty::Type::Ref(dest_ty), src, src);
[INFO] [stdout]    |                                                   +++++++++++++++++++++++++       +
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(ir::upper::ty::Type::Slice(dest_ty), src, src);
[INFO] [stdout]    |                                                   +++++++++++++++++++++++++++       +
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(ir::upper::ty::Type::Deref(dest_ty), src, src);
[INFO] [stdout]    |                                                   +++++++++++++++++++++++++++       +
[INFO] [stdout] 73 |             res |= data.match_types::<Type, UVar>(ir::upper::ty::Type::Ptr(dest_ty), src, src);
[INFO] [stdout]    |                                                   +++++++++++++++++++++++++       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:68:43
[INFO] [stdout]    |
[INFO] [stdout] 68 |           UInstruction::Ref { dst, src } => {
[INFO] [stdout]    |  ___________________________________________^
[INFO] [stdout] 69 | |             let dstty = &data.types[data.res_var_ty(dst)?];
[INFO] [stdout] 70 | |             let &Type::Ref(dest_ty) = dstty else {
[INFO] [stdout] 71 | |                 compiler_error()
[INFO] [stdout] 72 | |             };
[INFO] [stdout] 73 | |             res |= data.match_types::<Type, UVar>(dest_ty, src, src);
[INFO] [stdout] 74 | |         }
[INFO] [stdout]    | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:76:41
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let srcid = data.res_var_ty(src)?;
[INFO] [stdout]    |                              ---------- ^^^ expected `ID<UIdent>`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note:         expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn res_var_ty(&mut self, i: IdentID) -> Result<TypeID, ResolveRes> {
[INFO] [stdout]    |            ^^^^^^^^^^            ----------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             let &Type::Ref(src_ty) = data.types[srcid] else {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^   ----------------- this expression has type `upper::ty::Type`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 expected `Type`, found `&_`
[INFO] [stdout]    |
[INFO] [stdout]    = note:   expected enum `upper::ty::Type`
[INFO] [stdout]            found reference `&_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `origin` found for mutable reference `&mut URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:78:34
[INFO] [stdout]     |
[INFO] [stdout]  78 |                 let origin = src.origin(data);
[INFO] [stdout]     |                                  ^^^^^^ method not found in `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `resolve::HasOrigin` defines an item `origin`, perhaps you need to implement it
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:285:1
[INFO] [stdout]     |
[INFO] [stdout] 285 | trait HasOrigin {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:80:24
[INFO] [stdout]    |
[INFO] [stdout] 45 | ) -> ResolveRes {
[INFO] [stdout]    |      ---------- expected `resolve::ResolveRes` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 80 |                 return None;
[INFO] [stdout]    |                        ^^^^ expected `ResolveRes`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `resolve::ResolveRes`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: method takes 0 generic arguments but 2 generic arguments were supplied
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]    |                         ^^^^^^^^^^^-------------- help: remove the unnecessary generics
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         expected 0 generic arguments
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here, with 0 generic parameters
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    = note: `impl Trait` cannot be explicitly specified as a generic argument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `kind::UVar: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:82:39
[INFO] [stdout]     |
[INFO] [stdout]  82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]     |                         -----------   ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `kind::UVar`
[INFO] [stdout]    --> src/ir/upper/kind.rs:55:1
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct UVar {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `kind::UVar` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:91:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `upper::ty::Type: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:82:45
[INFO] [stdout]     |
[INFO] [stdout]  82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]     |                         -----------         ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `upper::ty::Type`
[INFO] [stdout]    --> src/ir/upper/ty.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub enum Type {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `upper::ty::Type` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&mut URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:82:64
[INFO] [stdout]     |
[INFO] [stdout]  82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]     |                         -----------                            ^^^ the trait `resolve::HasOrigin` is not implemented for `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: expected `UVar`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:82:51
[INFO] [stdout]    |
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]    |                                                   ^^^
[INFO] [stdout]    = note:         expected struct `kind::UVar`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: expected `Type`, found `ID<Type>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:82:56
[INFO] [stdout]    |
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout]    |                                                        ^^^^^^
[INFO] [stdout]    = note: expected enum `upper::ty::Type`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         dst: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] 92 |         src: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `upper::ty::Type`
[INFO] [stdout]    |
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Ref(src_ty), src);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++      +
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Slice(src_ty), src);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++++      +
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Deref(src_ty), src);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++++      +
[INFO] [stdout] 82 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Ptr(src_ty), src);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:75:45
[INFO] [stdout]    |
[INFO] [stdout] 75 |           UInstruction::Deref { dst, src } => {
[INFO] [stdout]    |  _____________________________________________^
[INFO] [stdout] 76 | |             let srcid = data.res_var_ty(src)?;
[INFO] [stdout] 77 | |             let &Type::Ref(src_ty) = data.types[srcid] else {
[INFO] [stdout] 78 | |                 let origin = src.origin(data);
[INFO] [stdout] ...  |
[INFO] [stdout] 82 | |             res |= data.match_types::<UVar, Type>(dst, src_ty, src);
[INFO] [stdout] 83 | |         }
[INFO] [stdout]    | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: method takes 0 generic arguments but 2 generic arguments were supplied
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]    |                         ^^^^^^^^^^^-------------- help: remove the unnecessary generics
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         expected 0 generic arguments
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here, with 0 generic parameters
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    = note: `impl Trait` cannot be explicitly specified as a generic argument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `kind::UVar: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:86:39
[INFO] [stdout]     |
[INFO] [stdout]  86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]     |                         -----------   ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `kind::UVar`
[INFO] [stdout]    --> src/ir/upper/kind.rs:55:1
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct UVar {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `kind::UVar` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:91:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `upper::ty::Type: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:86:45
[INFO] [stdout]     |
[INFO] [stdout]  86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]     |                         -----------         ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `upper::ty::Type`
[INFO] [stdout]    --> src/ir/upper/ty.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub enum Type {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `upper::ty::Type` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&mut URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:86:63
[INFO] [stdout]     |
[INFO] [stdout]  86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]     |                         -----------                           ^^^ the trait `resolve::HasOrigin` is not implemented for `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: expected `UVar`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:86:51
[INFO] [stdout]    |
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]    |                                                   ^^^
[INFO] [stdout]    = note:         expected struct `kind::UVar`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: expected `Type`, found `ID<Type>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:86:56
[INFO] [stdout]    |
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout]    |                                                        ^^^^^
[INFO] [stdout]    = note: expected enum `upper::ty::Type`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub fn match_types(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         dst: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] 92 |         src: impl MaybeTypeID,
[INFO] [stdout]    |         ---------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `upper::ty::Type`
[INFO] [stdout]    |
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Ref(srcid), dst);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++     +
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Slice(srcid), dst);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++++     +
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Deref(srcid), dst);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++++     +
[INFO] [stdout] 86 |             res |= data.match_types::<UVar, Type>(dst, ir::upper::ty::Type::Ptr(srcid), dst);
[INFO] [stdout]    |                                                        +++++++++++++++++++++++++     +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:84:48
[INFO] [stdout]    |
[INFO] [stdout] 84 |           UInstruction::LoadData { dst, src } => {
[INFO] [stdout]    |  ________________________________________________^
[INFO] [stdout] 85 | |             let srcid = src.type_id(&data.s);
[INFO] [stdout] 86 | |             res |= data.match_types::<UVar, Type>(dst, srcid, dst);
[INFO] [stdout] 87 | |         }
[INFO] [stdout]    | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:89:39
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let (dstty, dstid) = data.res_var_ty(dst, ctx)?;
[INFO] [stdout]    |                                       ^^^^^^^^^^      --- unexpected argument #2
[INFO] [stdout]    |
[INFO] [stdout] note: expected `ID<UIdent>`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:89:50
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let (dstty, dstid) = data.res_var_ty(dst, ctx)?;
[INFO] [stdout]    |                                                  ^^^
[INFO] [stdout]    = note:         expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]            found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn res_var_ty(&mut self, i: IdentID) -> Result<TypeID, ResolveRes> {
[INFO] [stdout]    |            ^^^^^^^^^^            ----------
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]    |
[INFO] [stdout] 89 -             let (dstty, dstid) = data.res_var_ty(dst, ctx)?;
[INFO] [stdout] 89 +             let (dstty, dstid) = data.res_var_ty(/* id::ID<upper::ident::UIdent> */)?;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let (dstty, dstid) = data.res_var_ty(dst, ctx)?;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^   -------------------------- this expression has type `id::ID<upper::ty::Type>`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 expected `ID<Type>`, found `(_, _)`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `id::ID<upper::ty::Type>`
[INFO] [stdout]                found tuple `(_, _)`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&mut URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:97:51
[INFO] [stdout]     |
[INFO] [stdout]  97 |             res |= data.match_types(dstty, srcty, dst);
[INFO] [stdout]     |                         -----------               ^^^ the trait `resolve::HasOrigin` is not implemented for `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/instr.rs:88:49
[INFO] [stdout]    |
[INFO] [stdout] 88 |           UInstruction::LoadSlice { dst, src } => {
[INFO] [stdout]    |  _________________________________________________^
[INFO] [stdout] 89 | |             let (dstty, dstid) = data.res_var_ty(dst, ctx)?;
[INFO] [stdout] 90 | |             let &Type::Slice(dstty) = dstty else {
[INFO] [stdout] 91 | |                 compiler_error()
[INFO] [stdout] ...  |
[INFO] [stdout] 97 | |             res |= data.match_types(dstty, srcty, dst);
[INFO] [stdout] 98 | |         }
[INFO] [stdout]    | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:99:58
[INFO] [stdout]     |
[INFO] [stdout]  99 |           UInstruction::AsmBlock { instructions, args } => {
[INFO] [stdout]     |  __________________________________________________________^
[INFO] [stdout] 100 | |             // TODO
[INFO] [stdout] 101 | |         }
[INFO] [stdout]     | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: method takes 0 generic arguments but 2 generic arguments were supplied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:25
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |                         ^^^^^^^^^^^-------------- help: remove the unnecessary generics
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         expected 0 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here, with 0 generic parameters
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]     = note: `impl Trait` cannot be explicitly specified as a generic argument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `upper::ty::Type: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:39
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |                         -----------   ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `upper::ty::Type`
[INFO] [stdout]    --> src/ir/upper/ty.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub enum Type {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `upper::ty::Type` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:91:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `kind::UVar: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:45
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |                         -----------         ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `kind::UVar`
[INFO] [stdout]    --> src/ir/upper/kind.rs:55:1
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct UVar {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `kind::UVar` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&mut URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:65
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |                         -----------                             ^^^ the trait `resolve::HasOrigin` is not implemented for `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:103:60
[INFO] [stdout]     |
[INFO] [stdout] 103 |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout]     |                         -------------------------          ^^^ expected `UVar`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note:         expected struct `kind::UVar`
[INFO] [stdout]             found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:102:38
[INFO] [stdout]     |
[INFO] [stdout] 102 |           UInstruction::Ret { src } => {
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout] 103 | |             res |= data.match_types::<Type, UVar>(ctx.ret, src, src);
[INFO] [stdout] 104 | |         }
[INFO] [stdout]     | |_________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:106:27
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let si = data.res::<UStruct>(dst, ctx)?;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^      --- unexpected argument #2
[INFO] [stdout]     |
[INFO] [stdout] note: expected `ID<UIdent>`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:106:42
[INFO] [stdout]     |
[INFO] [stdout] 106 |             let si = data.res::<UStruct>(dst, ctx)?;
[INFO] [stdout]     |                                          ^^^
[INFO] [stdout]     = note:         expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]             found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout]  69 |     pub fn res<K: ResKind>(&mut self, i: IdentID) -> Result<K::Res, ResolveRes> {
[INFO] [stdout]     |            ^^^                        ----------
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 106 -             let si = data.res::<UStruct>(dst, ctx)?;
[INFO] [stdout] 106 +             let si = data.res::<UStruct>(/* id::ID<upper::ident::UIdent> */)?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: method takes 0 generic arguments but 2 generic arguments were supplied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:33
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                 ^^^^^^^^^^^-------------- help: remove the unnecessary generics
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 expected 0 generic arguments
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here, with 0 generic parameters
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]     = note: `impl Trait` cannot be explicitly specified as a generic argument
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `upper::ty::Type: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:47
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                 -----------   ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `upper::ty::Type`
[INFO] [stdout]    --> src/ir/upper/ty.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub enum Type {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `upper::ty::Type` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:91:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `kind::UVar: MaybeTypeID` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:53
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                 -----------         ^^^^ unsatisfied trait bound
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::TypeIDed` is not implemented for `kind::UVar`
[INFO] [stdout]    --> src/ir/upper/kind.rs:55:1
[INFO] [stdout]     |
[INFO] [stdout]  55 | pub struct UVar {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `resolve::TypeIDed`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl TypeIDed for TypeID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<upper::ty::Type>`
[INFO] [stdout] ...
[INFO] [stdout] 264 | impl TypeIDed for DataID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^ `id::ID<kind::UData>`
[INFO] [stdout] ...
[INFO] [stdout] 270 | impl<T: TypeIDed> TypeIDed for &T {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&T`
[INFO] [stdout] note: required for `kind::UVar` to implement `MaybeTypeID`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl<T: TypeIDed> MaybeTypeID for T {
[INFO] [stdout]     |         --------  ^^^^^^^^^^^     ^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:92:19
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |                   ^^^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&URes<id::ID<kind::UVar>>: resolve::HasOrigin` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:74
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                 -----------                              ^^^ the trait `resolve::HasOrigin` is not implemented for `&URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `resolve::HasOrigin` is implemented for `&id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl HasOrigin for &IdentID {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `matc::<impl resolve::ResData<'a>>::match_types`
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:93:22
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ----------- required by a bound in this associated function
[INFO] [stdout] ...
[INFO] [stdout]  93 |         origin: impl HasOrigin,
[INFO] [stdout]     |                      ^^^^^^^^^ required by this bound in `matc::<impl ResData<'a>>::match_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:33
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: expected `Type`, found `URes<ID<UVar>>`
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:59
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                                           ^^^^^^^^
[INFO] [stdout]     = note: expected enum `upper::ty::Type`
[INFO] [stdout]                found enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: expected `UVar`, found `&URes<ID<UVar>>`
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:113:69
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     res |= data.match_types::<Type, UVar>(field.ty, src, src);
[INFO] [stdout]     |                                                                     ^^^
[INFO] [stdout]     = note: expected struct `kind::UVar`
[INFO] [stdout]             found reference `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  89 |     pub fn match_types(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]  90 |         &mut self,
[INFO] [stdout]  91 |         dst: impl MaybeTypeID,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout]  92 |         src: impl MaybeTypeID,
[INFO] [stdout]     |         ---------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `origin` found for mutable reference `&mut URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:115:38
[INFO] [stdout]     |
[INFO] [stdout] 115 |                     let origin = dst.origin(data);
[INFO] [stdout]     |                                      ^^^^^^ method not found in `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `resolve::HasOrigin` defines an item `origin`, perhaps you need to implement it
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:285:1
[INFO] [stdout]     |
[INFO] [stdout] 285 | trait HasOrigin {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `origin` found for mutable reference `&mut URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:125:38
[INFO] [stdout]     |
[INFO] [stdout] 125 |                     let origin = dst.origin(data);
[INFO] [stdout]     |                                      ^^^^^^ method not found in `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `resolve::HasOrigin` defines an item `origin`, perhaps you need to implement it
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:285:1
[INFO] [stdout]     |
[INFO] [stdout] 285 | trait HasOrigin {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:123:13
[INFO] [stdout]     |
[INFO] [stdout]  45 |   ) -> ResolveRes {
[INFO] [stdout]     |        ---------- expected `resolve::ResolveRes` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 123 | /             for (name, _) in fields {
[INFO] [stdout] 124 | |                 if !used.contains(name) {
[INFO] [stdout] 125 | |                     let origin = dst.origin(data);
[INFO] [stdout] 126 | |                     data.errs.push(ResErr::UnknownStructField {
[INFO] [stdout] ...   |
[INFO] [stdout] 132 | |             }
[INFO] [stdout]     | |_____________^ expected `ResolveRes`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `for` loops evaluate to unit type `()`
[INFO] [stdout] help: consider returning a value here
[INFO] [stdout]     |
[INFO] [stdout] 132 ~             }
[INFO] [stdout] 133 +             /* `resolve::ResolveRes` value */
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:135:36
[INFO] [stdout]     |
[INFO] [stdout] 135 |             if let Some(ty) = data.res_var_ty(cond, ctx) {
[INFO] [stdout]     |                                    ^^^^^^^^^^       --- unexpected argument #2
[INFO] [stdout]     |
[INFO] [stdout] note: expected `ID<UIdent>`, found `&mut URes<ID<UVar>>`
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:135:47
[INFO] [stdout]     |
[INFO] [stdout] 135 |             if let Some(ty) = data.res_var_ty(cond, ctx) {
[INFO] [stdout]     |                                               ^^^^
[INFO] [stdout]     = note:         expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]             found mutable reference `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:78:12
[INFO] [stdout]     |
[INFO] [stdout]  78 |     pub fn res_var_ty(&mut self, i: IdentID) -> Result<TypeID, ResolveRes> {
[INFO] [stdout]     |            ^^^^^^^^^^            ----------
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 135 -             if let Some(ty) = data.res_var_ty(cond, ctx) {
[INFO] [stdout] 135 +             if let Some(ty) = data.res_var_ty(/* id::ID<upper::ident::UIdent> */) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:135:20
[INFO] [stdout]     |
[INFO] [stdout] 135 |             if let Some(ty) = data.res_var_ty(cond, ctx) {
[INFO] [stdout]     |                    ^^^^^^^^   -------------------------- this expression has type `Result<id::ID<upper::ty::Type>, resolve::ResolveRes>`
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    expected `Result<ID<Type>, ResolveRes>`, found `Option<_>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `Result<id::ID<upper::ty::Type>, resolve::ResolveRes>`
[INFO] [stdout]                found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `origin` found for mutable reference `&mut URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:138:39
[INFO] [stdout]     |
[INFO] [stdout] 138 |                     let origin = cond.origin(data);
[INFO] [stdout]     |                                       ^^^^^^ method not found in `&mut URes<id::ID<kind::UVar>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `resolve::HasOrigin` defines an item `origin`, perhaps you need to implement it
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:285:1
[INFO] [stdout]     |
[INFO] [stdout] 285 | trait HasOrigin {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:148:25
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         i,
[INFO] [stdout]     |                         ^ expected `ID<UInstrInst>`, found `&mut ID<UInstrInst>`
[INFO] [stdout]     |
[INFO] [stdout]     = note:         expected struct `id::ID<_>`
[INFO] [stdout]             found mutable reference `&mut id::ID<_>`
[INFO] [stdout] help: consider dereferencing the borrow
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         i: *i,
[INFO] [stdout]     |                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |                    resolve_instr(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 144 | /                      data,
[INFO] [stdout] 145 | |/                     ResolveCtx {
[INFO] [stdout] 146 | ||                         ret: ctx.ret,
[INFO] [stdout] 147 | ||                         breakable: ctx.breakable,
[INFO] [stdout] 148 | ||                         i,
[INFO] [stdout] 149 | ||                     },
[INFO] [stdout]     | ||                     -
[INFO] [stdout]     | ||_____________________|
[INFO] [stdout]     |  |_____________________two arguments of type `(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)` and `&mut Vec<upper::instr::UInstrInst>` are missing
[INFO] [stdout]     |                        unexpected argument #2 of type `ResolveCtx`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:41:8
[INFO] [stdout]     |
[INFO] [stdout]  41 | pub fn resolve_instr<'a>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout]  42 |     (fi, ii): (FnID, InstrID),
[INFO] [stdout]     |     -------------------------
[INFO] [stdout]  43 |     instrs: &mut Vec<UInstrInst>,
[INFO] [stdout]     |     ----------------------------
[INFO] [stdout] help: did you mean
[INFO] [stdout]     |
[INFO] [stdout] 143 -                 resolve_instr(
[INFO] [stdout] 144 -                     data,
[INFO] [stdout] 145 -                     ResolveCtx {
[INFO] [stdout] 146 -                         ret: ctx.ret,
[INFO] [stdout] 147 -                         breakable: ctx.breakable,
[INFO] [stdout] 148 -                         i,
[INFO] [stdout] 149 -                     },
[INFO] [stdout] 150 -                 );
[INFO] [stdout] 143 +                 resolve_instr(/* (id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>) */, /* &mut Vec<upper::instr::UInstrInst> */, data);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout]  45 |   ) -> ResolveRes {
[INFO] [stdout]     |        ---------- expected `resolve::ResolveRes` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 142 | /             for i in body {
[INFO] [stdout] 143 | |                 resolve_instr(
[INFO] [stdout] 144 | |                     data,
[INFO] [stdout] 145 | |                     ResolveCtx {
[INFO] [stdout] ...   |
[INFO] [stdout] 150 | |                 );
[INFO] [stdout] 151 | |             }
[INFO] [stdout]     | |_____________^ expected `ResolveRes`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `for` loops evaluate to unit type `()`
[INFO] [stdout] help: consider returning a value here
[INFO] [stdout]     |
[INFO] [stdout] 151 ~             }
[INFO] [stdout] 152 +             /* `resolve::ResolveRes` value */
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:160:25
[INFO] [stdout]     |
[INFO] [stdout] 160 |                         i,
[INFO] [stdout]     |                         ^ expected `ID<UInstrInst>`, found `&mut ID<UInstrInst>`
[INFO] [stdout]     |
[INFO] [stdout]     = note:         expected struct `id::ID<_>`
[INFO] [stdout]             found mutable reference `&mut id::ID<_>`
[INFO] [stdout] help: consider dereferencing the borrow
[INFO] [stdout]     |
[INFO] [stdout] 160 |                         i: *i,
[INFO] [stdout]     |                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:155:17
[INFO] [stdout]     |
[INFO] [stdout] 155 |                    resolve_instr(
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 156 | /                      data,
[INFO] [stdout] 157 | |/                     ResolveCtx {
[INFO] [stdout] 158 | ||                         ret: ctx.ret,
[INFO] [stdout] 159 | ||                         breakable: true,
[INFO] [stdout] 160 | ||                         i,
[INFO] [stdout] 161 | ||                     },
[INFO] [stdout]     | ||                     -
[INFO] [stdout]     | ||_____________________|
[INFO] [stdout]     |  |_____________________two arguments of type `(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)` and `&mut Vec<upper::instr::UInstrInst>` are missing
[INFO] [stdout]     |                        unexpected argument #2 of type `ResolveCtx`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:41:8
[INFO] [stdout]     |
[INFO] [stdout]  41 | pub fn resolve_instr<'a>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout]  42 |     (fi, ii): (FnID, InstrID),
[INFO] [stdout]     |     -------------------------
[INFO] [stdout]  43 |     instrs: &mut Vec<UInstrInst>,
[INFO] [stdout]     |     ----------------------------
[INFO] [stdout] help: did you mean
[INFO] [stdout]     |
[INFO] [stdout] 155 -                 resolve_instr(
[INFO] [stdout] 156 -                     data,
[INFO] [stdout] 157 -                     ResolveCtx {
[INFO] [stdout] 158 -                         ret: ctx.ret,
[INFO] [stdout] 159 -                         breakable: true,
[INFO] [stdout] 160 -                         i,
[INFO] [stdout] 161 -                     },
[INFO] [stdout] 162 -                 );
[INFO] [stdout] 155 +                 resolve_instr(/* (id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>) */, /* &mut Vec<upper::instr::UInstrInst> */, data);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout]  45 |   ) -> ResolveRes {
[INFO] [stdout]     |        ---------- expected `resolve::ResolveRes` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 154 | /             for i in body {
[INFO] [stdout] 155 | |                 resolve_instr(
[INFO] [stdout] 156 | |                     data,
[INFO] [stdout] 157 | |                     ResolveCtx {
[INFO] [stdout] ...   |
[INFO] [stdout] 162 | |                 );
[INFO] [stdout] 163 | |             }
[INFO] [stdout]     | |_____________^ expected `ResolveRes`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `for` loops evaluate to unit type `()`
[INFO] [stdout] help: consider returning a value here
[INFO] [stdout]     |
[INFO] [stdout] 163 ~             }
[INFO] [stdout] 164 +             /* `resolve::ResolveRes` value */
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:166:31
[INFO] [stdout]     |
[INFO] [stdout] 166 |               if !ctx.breakable {
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 167 | |                 data.errs.push(ResErr::BadControlFlow {
[INFO] [stdout] 168 | |                     op: ControlFlowOp::Break,
[INFO] [stdout] 169 | |                     origin: ctx.i.origin,
[INFO] [stdout] 170 | |                 });
[INFO] [stdout] 171 | |             }
[INFO] [stdout]     | |_____________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:174:31
[INFO] [stdout]     |
[INFO] [stdout] 174 |               if !ctx.breakable {
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 175 | |                 data.errs.push(ResErr::BadControlFlow {
[INFO] [stdout] 176 | |                     op: ControlFlowOp::Continue,
[INFO] [stdout] 177 | |                     origin: ctx.i.origin,
[INFO] [stdout] 178 | |                 });
[INFO] [stdout] 179 | |             }
[INFO] [stdout]     | |_____________^ expected `ResolveRes`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 141 |         match s.vars[self].ty {
[INFO] [stdout]     |               --------------- this expression has type `URes<id::ID<kind::UVar>>`
[INFO] [stdout] 142 |             VarTy::Ident(id) => todo!(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `VarTy`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]                found enum `kind::VarTy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/upper/resolve/matc.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 141 |         match s.vars[self].ty {
[INFO] [stdout]     |               --------------- this expression has type `URes<id::ID<kind::UVar>>`
[INFO] [stdout] 142 |             VarTy::Ident(id) => todo!(),
[INFO] [stdout] 143 |             VarTy::Res(id) => Ok(id),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `VarTy`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]                found enum `kind::VarTy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: a value of type `Vec<(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)>` cannot be built from an iterator over elements of type `id::ID<upper::instr::UInstrInst>`
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:22:78
[INFO] [stdout]    |
[INFO] [stdout] 22 |         self.unres_instrs = (0..self.instrs.len()).map(|i| InstrID::from(i)).collect();
[INFO] [stdout]    |                                                                              ^^^^^^^ value of type `Vec<(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)>` cannot be built from `std::iter::Iterator<Item=id::ID<upper::instr::UInstrInst>>`
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `FromIterator<id::ID<upper::instr::UInstrInst>>` is not implemented for `Vec<(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)>`
[INFO] [stdout]       but trait `FromIterator<(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)>` is implemented for it
[INFO] [stdout]   --> /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/vec/mod.rs:3862:0
[INFO] [stdout]    = help: for that trait implementation, expected `(id::ID<kind::UFunc>, id::ID<upper::instr::UInstrInst>)`, found `id::ID<upper::instr::UInstrInst>`
[INFO] [stdout] note: the method call chain might not have had the expected associated types
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:22:52
[INFO] [stdout]    |
[INFO] [stdout] 22 |         self.unres_instrs = (0..self.instrs.len()).map(|i| InstrID::from(i)).collect();
[INFO] [stdout]    |                             ---------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^ `Iterator::Item` is `ID<UInstrInst>` here
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             this expression has type `Range<usize>`
[INFO] [stdout] note: required by a bound in `collect`
[INFO] [stdout]   --> /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/iter/traits/iterator.rs:2051:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 |             if let Some(ty) = self.res_ty(f.ret)
[INFO] [stdout]    |                                    ------ ^^^^^ expected `ID<UIdent>`, found `URes<ID<UVar>>`
[INFO] [stdout]    |                                    |
[INFO] [stdout]    |                                    arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]                 found enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/ir/upper/program.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn res_ty(&self, i: IdentID) -> Option<TypeID> {
[INFO] [stdout]    |            ^^^^^^        ----------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let id = match self.s.vars[id].ty {
[INFO] [stdout]    |                        ------------------ this expression has type `URes<id::ID<kind::UVar>>`
[INFO] [stdout] 81 |             VarTy::Res(t) => Ok(t),
[INFO] [stdout]    |             ^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `VarTy`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]               found enum `kind::VarTy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/ir/upper/resolve/mod.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |         let id = match self.s.vars[id].ty {
[INFO] [stdout]    |                        ------------------ this expression has type `URes<id::ID<kind::UVar>>`
[INFO] [stdout] 81 |             VarTy::Res(t) => Ok(t),
[INFO] [stdout] 82 |             VarTy::Ident(i) => i.res_as::<Type>(&mut self.s, self.types),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `VarTy`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]               found enum `kind::VarTy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `id::ID<upper::ident::UIdent>: Resolvable<K>` is not satisfied
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:153:34
[INFO] [stdout]     |
[INFO] [stdout] 153 |         Resolvable::<K>::try_res(*self, s, types, errs)
[INFO] [stdout]     |         ------------------------ ^^^^^ the trait `Resolvable<K>` is not implemented for `id::ID<upper::ident::UIdent>`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 153 |         Resolvable::<K>::try_res(&*self, s, types, errs)
[INFO] [stdout]     |                                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `names` on type `&upper::program::UProgram`
[INFO] [stdout]   --> src/ir/lower/program.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 20 |             .names
[INFO] [stdout]    |              ^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `fns`, `structs`, `modules`, `data`, `generics` ... and 7 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/lower/program.rs:29:39
[INFO] [stdout]     |
[INFO] [stdout]  29 |                 fbuilder.insert_instr(i);
[INFO] [stdout]     |                          ------------ ^ expected `&UInstrInst`, found `&ID<UInstrInst>`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&upper::instr::UInstrInst`
[INFO] [stdout]                found reference `&id::ID<upper::instr::UInstrInst>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/lower/program.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn insert_instr(&mut self, i: &UInstrInst) -> Option<Option<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^            --------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/lower/program.rs:290:39
[INFO] [stdout]     |
[INFO] [stdout] 290 |                     self.insert_instr(&i);
[INFO] [stdout]     |                          ------------ ^^ expected `&UInstrInst`, found `&ID<UInstrInst>`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&upper::instr::UInstrInst`
[INFO] [stdout]                found reference `&id::ID<upper::instr::UInstrInst>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/lower/program.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn insert_instr(&mut self, i: &UInstrInst) -> Option<Option<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^            --------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/lower/program.rs:304:39
[INFO] [stdout]     |
[INFO] [stdout] 304 |                     self.insert_instr(i);
[INFO] [stdout]     |                          ------------ ^ expected `&UInstrInst`, found `ID<UInstrInst>`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&upper::instr::UInstrInst`
[INFO] [stdout]                   found struct `id::ID<upper::instr::UInstrInst>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/lower/program.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn insert_instr(&mut self, i: &UInstrInst) -> Option<Option<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^            --------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/lower/program.rs:340:45
[INFO] [stdout]     |
[INFO] [stdout] 340 |                 .size_of_type(self.program, &f.ret)
[INFO] [stdout]     |                  ------------               ^^^^^^ expected `&ID<Type>`, found `&URes<ID<UVar>>`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&id::ID<upper::ty::Type>`
[INFO] [stdout]                found reference `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/lower/program.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 |     pub fn size_of_type(&mut self, p: &UProgram, ty: &TypeID) -> Option<Size> {
[INFO] [stdout]     |            ^^^^^^^^^^^^                          -----------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get` found for reference `&upper::program::UProgram` in the current scope
[INFO] [stdout]    --> src/ir/lower/program.rs:353:44
[INFO] [stdout]     |
[INFO] [stdout] 353 |         while let Type::Field(parent) = &p.get(var)?.ty {
[INFO] [stdout]     |                                            ^^^ method not found in `&upper::program::UProgram`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `get`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `SliceIndex`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 353 |         while let Type::Field(parent) = &p.data.get(var)?.ty {
[INFO] [stdout]     |                                            +++++
[INFO] [stdout] 353 |         while let Type::Field(parent) = &p.fns.get(var)?.ty {
[INFO] [stdout]     |                                            ++++
[INFO] [stdout] 353 |         while let Type::Field(parent) = &p.generics.get(var)?.ty {
[INFO] [stdout]     |                                            +++++++++
[INFO] [stdout] 353 |         while let Type::Field(parent) = &p.idents.get(var)?.ty {
[INFO] [stdout]     |                                            +++++++
[INFO] [stdout]     = and 7 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Field` found for enum `upper::ty::Type` in the current scope
[INFO] [stdout]    --> src/ir/lower/program.rs:353:25
[INFO] [stdout]     |
[INFO] [stdout] 353 |         while let Type::Field(parent) = &p.get(var)?.ty {
[INFO] [stdout]     |                         ^^^^^ variant or associated item not found in `upper::ty::Type`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/ir/upper/ty.rs:24:1
[INFO] [stdout]     |
[INFO] [stdout]  24 | pub enum Type {
[INFO] [stdout]     | ------------- variant or associated item `Field` not found for this enum
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get` found for reference `&upper::program::UProgram` in the current scope
[INFO] [stdout]    --> src/ir/lower/program.rs:357:25
[INFO] [stdout]     |
[INFO] [stdout] 357 |         let mut ty = &p.get(var)?.ty;
[INFO] [stdout]     |                         ^^^ method not found in `&upper::program::UProgram`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `get`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `SliceIndex`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 357 |         let mut ty = &p.data.get(var)?.ty;
[INFO] [stdout]     |                         +++++
[INFO] [stdout] 357 |         let mut ty = &p.fns.get(var)?.ty;
[INFO] [stdout]     |                         ++++
[INFO] [stdout] 357 |         let mut ty = &p.generics.get(var)?.ty;
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 357 |         let mut ty = &p.idents.get(var)?.ty;
[INFO] [stdout]     |                         +++++++
[INFO] [stdout]     = and 7 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `str` cannot be known at compilation time
[INFO] [stdout]    --> src/ir/lower/program.rs:360:17
[INFO] [stdout]     |
[INFO] [stdout] 360 |             let Some(name) = path.pop() else {
[INFO] [stdout]     |                 ^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `str`
[INFO] [stdout] note: required by a bound in `Some`
[INFO] [stdout]    --> /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/option.rs:608:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/lower/program.rs:363:44
[INFO] [stdout]     |
[INFO] [stdout] 363 |             offset += self.field_offset(p, sty, &name)?;
[INFO] [stdout]     |                            ------------    ^^^ expected `&StructInst`, found `StructInst`
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/ir/lower/program.rs:418:12
[INFO] [stdout]     |
[INFO] [stdout] 418 |     pub fn field_offset(&mut self, p: &UProgram, sty: &StructInst, field: &str) -> Option<Len> {
[INFO] [stdout]     |            ^^^^^^^^^^^^                          ----------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 363 |             offset += self.field_offset(p, &sty, &name)?;
[INFO] [stdout]     |                                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `struct_field_type` found for reference `&upper::program::UProgram` in the current scope
[INFO] [stdout]    --> src/ir/lower/program.rs:364:20
[INFO] [stdout]     |
[INFO] [stdout] 364 |             ty = p.struct_field_type(sty, name).expect("bad field");
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^ method not found in `&upper::program::UProgram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/ir/lower/program.rs:374:17
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let LStructInst { id, args } = ty;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^   -- this expression has type `&upper::ty::StructInst`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 expected `StructInst`, found `LStructInst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0026]: struct `LStructInst` does not have fields named `id`, `args`
[INFO] [stdout]    --> src/ir/lower/program.rs:374:31
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let LStructInst { id, args } = ty;
[INFO] [stdout]     |                               ^^  ^^^^ struct `LStructInst` does not have these fields
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention fields `offsets`, `types`, `order`, `size`
[INFO] [stdout]    --> src/ir/lower/program.rs:374:17
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let LStructInst { id, args } = ty;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^ missing fields `offsets`, `types`, `order`, `size`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing fields in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let LStructInst { id, args, offsets, types, order, size } = ty;
[INFO] [stdout]     |                                       +++++++++++++++++++++++++++++
[INFO] [stdout] help: if you don't care about these missing fields, you can explicitly ignore them
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let LStructInst { id, args, offsets: _, types: _, order: _, size: _ } = ty;
[INFO] [stdout]     |                                       +++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 374 |             let LStructInst { id, args, .. } = ty;
[INFO] [stdout]     |                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `expect` found for reference `&upper::program::UProgram` in the current scope
[INFO] [stdout]    --> src/ir/lower/program.rs:375:27
[INFO] [stdout]     |
[INFO] [stdout] 375 |             let struc = p.expect(*id);
[INFO] [stdout]     |                           ^^^^^^ method not found in `&upper::program::UProgram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0769]: tuple variant `Type::Generic` written as struct variant
[INFO] [stdout]    --> src/ir/lower/program.rs:381:37
[INFO] [stdout]     |
[INFO] [stdout] 381 |                     let ty = if let Type::Generic { id } = &f.ty {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use the tuple variant pattern syntax instead
[INFO] [stdout]     |
[INFO] [stdout] 381 -                     let ty = if let Type::Generic { id } = &f.ty {
[INFO] [stdout] 381 +                     let ty = if let Type::Generic(id) = &f.ty {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get` found for reference `&upper::program::UProgram` in the current scope
[INFO] [stdout]    --> src/ir/lower/program.rs:441:33
[INFO] [stdout]     |
[INFO] [stdout] 441 |         self.size_of_type(p, &p.get(var)?.ty)
[INFO] [stdout]     |                                 ^^^ method not found in `&upper::program::UProgram`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `get`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `SliceIndex`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 441 |         self.size_of_type(p, &p.data.get(var)?.ty)
[INFO] [stdout]     |                                 +++++
[INFO] [stdout] 441 |         self.size_of_type(p, &p.fns.get(var)?.ty)
[INFO] [stdout]     |                                 ++++
[INFO] [stdout] 441 |         self.size_of_type(p, &p.generics.get(var)?.ty)
[INFO] [stdout]     |                                 +++++++++
[INFO] [stdout] 441 |         self.size_of_type(p, &p.idents.get(var)?.ty)
[INFO] [stdout]     |                                 +++++++
[INFO] [stdout]     = and 7 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:20:26
[INFO] [stdout]    |
[INFO] [stdout] 20 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 |                 src: src.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:25:26
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 src: src.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:28:26
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:29:26
[INFO] [stdout]    |
[INFO] [stdout] 29 |                 src: src.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:36:26
[INFO] [stdout]    |
[INFO] [stdout] 36 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:40:26
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:42:45
[INFO] [stdout]    |
[INFO] [stdout] 42 |                 args: args.iter().map(|i| i.var(p)).try_collect()?,
[INFO] [stdout]    |                                             ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resolve` found for reference `&riscv::asm::LinkerInstruction<RegRef<URes<id::ID<kind::UVar>>>, URes<id::ID<kind::UVar>>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:47:32
[INFO] [stdout]    |
[INFO] [stdout] 47 |                     .map(|i| i.resolve(p))
[INFO] [stdout]    |                                ^^^^^^^ method not found in `&riscv::asm::LinkerInstruction<RegRef<URes<id::ID<kind::UVar>>>, URes<id::ID<kind::UVar>>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resolve` found for reference `&upper::instr::AsmBlockArg<URes<id::ID<kind::UVar>>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:49:45
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 args: args.iter().map(|a| a.resolve(p)).try_collect()?,
[INFO] [stdout]    |                                             ^^^^^^^ method not found in `&upper::instr::AsmBlockArg<URes<id::ID<kind::UVar>>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:51:49
[INFO] [stdout]    |
[INFO] [stdout] 51 |             I::Ret { src } => I::Ret { src: src.var(p)? },
[INFO] [stdout]    |                                                 ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 dst: dst.var(p)?,
[INFO] [stdout]    |                          ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:57:48
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     .map(|(name, ident)| ident.var(p).map(|i| (name.clone(), i)))
[INFO] [stdout]    |                                                ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `var` found for reference `&URes<id::ID<kind::UVar>>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:61:28
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 cond: cond.var(p)?,
[INFO] [stdout]    |                            ^^^ method not found in `&URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resolve` found for reference `&id::ID<upper::instr::UInstrInst>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:62:45
[INFO] [stdout]    |
[INFO] [stdout] 62 |                 body: body.iter().map(|i| i.resolve(p)).try_collect()?,
[INFO] [stdout]    |                                             ^^^^^^^ method not found in `&id::ID<upper::instr::UInstrInst>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `resolve` found for reference `&id::ID<upper::instr::UInstrInst>` in the current scope
[INFO] [stdout]   --> src/ir/lower/res.rs:65:45
[INFO] [stdout]    |
[INFO] [stdout] 65 |                 body: body.iter().map(|i| i.resolve(p)).try_collect()?,
[INFO] [stdout]    |                                             ^^^^^^^ method not found in `&id::ID<upper::instr::UInstrInst>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: struct takes 2 lifetime arguments but 3 lifetime arguments were supplied
[INFO] [stdout]   --> src/parser/v3/lower/arch/riscv64.rs:15:30
[INFO] [stdout]    |
[INFO] [stdout] 15 |         let opi = |ctx: &mut FnLowerCtx<'_, '_, '_>, op: Funct3| -> Option<Self> {
[INFO] [stdout]    |                              ^^^^^^^^^^       ---- help: remove the lifetime argument
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              expected 2 lifetime arguments
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 2 lifetime parameters: `'a`, `'b`
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct FnLowerCtx<'a, 'b> {
[INFO] [stdout]    |            ^^^^^^^^^^ --  --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: struct takes 2 lifetime arguments but 3 lifetime arguments were supplied
[INFO] [stdout]   --> src/parser/v3/lower/arch/riscv64.rs:25:29
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let op = |ctx: &mut FnLowerCtx<'_, '_, '_>, op: Funct3, funct: Funct7| -> Option<Self> {
[INFO] [stdout]    |                             ^^^^^^^^^^       ---- help: remove the lifetime argument
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             expected 2 lifetime arguments
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 2 lifetime parameters: `'a`, `'b`
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct FnLowerCtx<'a, 'b> {
[INFO] [stdout]    |            ^^^^^^^^^^ --  --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: struct takes 2 lifetime arguments but 1 lifetime argument was supplied
[INFO] [stdout]   --> src/parser/v3/lower/arch/riscv64.rs:41:32
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let opif7 = |ctx: &mut FnLowerCtx<'_>, op: Funct3, funct: Funct7| -> Option<Self> {
[INFO] [stdout]    |                                ^^^^^^^^^^ -- supplied 1 lifetime argument
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                expected 2 lifetime arguments
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 2 lifetime parameters: `'a`, `'b`
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct FnLowerCtx<'a, 'b> {
[INFO] [stdout]    |            ^^^^^^^^^^ --  --
[INFO] [stdout] help: add missing lifetime argument
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let opif7 = |ctx: &mut FnLowerCtx<'_, '_>, op: Funct3, funct: Funct7| -> Option<Self> {
[INFO] [stdout]    |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: struct takes 2 lifetime arguments but 1 lifetime argument was supplied
[INFO] [stdout]   --> src/parser/v3/lower/arch/riscv64.rs:57:32
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let store = |ctx: &mut FnLowerCtx<'_>, width: Funct3| -> Option<Self> {
[INFO] [stdout]    |                                ^^^^^^^^^^ -- supplied 1 lifetime argument
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                expected 2 lifetime arguments
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 2 lifetime parameters: `'a`, `'b`
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct FnLowerCtx<'a, 'b> {
[INFO] [stdout]    |            ^^^^^^^^^^ --  --
[INFO] [stdout] help: add missing lifetime argument
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let store = |ctx: &mut FnLowerCtx<'_, '_>, width: Funct3| -> Option<Self> {
[INFO] [stdout]    |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: struct takes 2 lifetime arguments but 1 lifetime argument was supplied
[INFO] [stdout]   --> src/parser/v3/lower/arch/riscv64.rs:72:31
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let load = |ctx: &mut FnLowerCtx<'_>, width: Funct3| -> Option<Self> {
[INFO] [stdout]    |                               ^^^^^^^^^^ -- supplied 1 lifetime argument
[INFO] [stdout]    |                               |
[INFO] [stdout]    |                               expected 2 lifetime arguments
[INFO] [stdout]    |
[INFO] [stdout] note: struct defined here, with 2 lifetime parameters: `'a`, `'b`
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct FnLowerCtx<'a, 'b> {
[INFO] [stdout]    |            ^^^^^^^^^^ --  --
[INFO] [stdout] help: add missing lifetime argument
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let load = |ctx: &mut FnLowerCtx<'_, '_>, width: Funct3| -> Option<Self> {
[INFO] [stdout]    |                                            ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:105:34
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 Self::La { dest, src }
[INFO] [stdout]     |                                  ^^^ expected `ID<UIdent>`, found `UIdent`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]                found struct `upper::ident::UIdent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn arg_to_var(node: &Node<PAsmArg>, ctx: &mut FnLowerCtx) -> Option<UIdent> {
[INFO] [stdout]     |                                                                  -------------- expected `Option<upper::ident::UIdent>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 177 |     ctx.ident(node)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ expected `Option<UIdent>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `Option<upper::ident::UIdent>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:184:43
[INFO] [stdout]     |
[INFO] [stdout] 184 |                 let reg = Reg::from_ident(node, ctx)?;
[INFO] [stdout]     |                           --------------- ^^^^ expected `&Node<PIdent>`, found `&PIdent`
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&node::Node<nodes::ident::PIdent>`
[INFO] [stdout]                found reference `&nodes::ident::PIdent`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 193 |     pub fn from_ident(node: &Node<PIdent>, ctx: &mut FnLowerCtx) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^ -------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be applied to values that implement `Try`
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:187:45
[INFO] [stdout]     |
[INFO] [stdout] 187 |             PAsmArg::Ref(node) => Self::Var(ctx.ident(node)?),
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `id::ID<upper::ident::UIdent>`
[INFO] [stdout]     |
[INFO] [stdout] help: the nightly-only, unstable trait `Try` is not implemented for `id::ID<upper::ident::UIdent>`
[INFO] [stdout]    --> src/ir/id.rs:11:1
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub struct ID<T>(pub usize, PhantomData<T>);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `inner` on type `&nodes::ident::PIdent`
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:208:21
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let word = node.inner.as_ref()?;
[INFO] [stdout]     |                     ^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available field is: `0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `origin` on type `&nodes::ident::PIdent`
[INFO] [stdout]    --> src/parser/v3/lower/arch/riscv64.rs:212:29
[INFO] [stdout]     |
[INFO] [stdout] 212 |             ctx.err_at(node.origin, format!("Expected an i64, found {}", word));
[INFO] [stdout]     |                             ^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available field is: `0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: type mismatch resolving `<Unresolved as ResStage>::Var == ID<UIdent>`
[INFO] [stdout]   --> src/parser/v3/lower/asm.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 | /             instructions: {
[INFO] [stdout] 53 | |                 let mut v = Vec::new();
[INFO] [stdout] 54 | |                 for i in &self.instructions {
[INFO] [stdout] 55 | |                     if let Some(i) = i.lower(ctx) {
[INFO] [stdout] ...  |
[INFO] [stdout] 59 | |                 v
[INFO] [stdout] 60 | |             },
[INFO] [stdout]    | |_____________^ type mismatch resolving `<Unresolved as ResStage>::Var == ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout] note: expected this to be `id::ID<upper::ident::UIdent>`
[INFO] [stdout]   --> src/ir/upper/instr.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     type Var = VarRes;
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout]    = note: expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]                 found enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: type mismatch resolving `<Unresolved as ResStage>::Var == ID<UIdent>`
[INFO] [stdout]   --> src/parser/v3/lower/asm.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |             args,
[INFO] [stdout]    |             ^^^^ type mismatch resolving `<Unresolved as ResStage>::Var == ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout] note: expected this to be `id::ID<upper::ident::UIdent>`
[INFO] [stdout]   --> src/ir/upper/instr.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |     type Var = VarRes;
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout]    = note: expected struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout]                 found enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `path_for` found for mutable reference `&mut v3::lower::func::FnLowerCtx<'_, '_>` in the current scope
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:35:32
[INFO] [stdout]    |
[INFO] [stdout] 35 |                 let path = ctx.path_for(name);
[INFO] [stdout]    |                                ^^^^^^^^ method not found in `&mut v3::lower::func::FnLowerCtx<'_, '_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `imports` on type `&mut v3::lower::func::FnLowerCtx<'_, '_>`
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:37:24
[INFO] [stdout]    |
[INFO] [stdout] 37 |                 if ctx.imports.insert(import) {
[INFO] [stdout]    |                        ^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `ctx`, `instructions`, `origin`
[INFO] [stdout]    = note: available fields are: `p`, `output`, `module`, `temp`, `ident_stack`
[INFO] [stdout]    = note: available fields are: `fns`, `structs`, `modules`, `data`, `generics` ... and 7 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Module` found for enum `upper::ty::Type` in the current scope
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:40:35
[INFO] [stdout]    |
[INFO] [stdout] 40 |                         ty: Type::Module(path),
[INFO] [stdout]    |                                   ^^^^^^ variant or associated item not found in `upper::ty::Type`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ir/upper/ty.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum Type {
[INFO] [stdout]    | ------------- variant or associated item `Module` not found for this enum
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `children` and `parent` in initializer of `kind::UVar`
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:38:33
[INFO] [stdout]    |
[INFO] [stdout] 38 |                     ctx.def_var(UVar {
[INFO] [stdout]    |                                 ^^^^ missing `children` and `parent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `lower` exists for reference `&&node::Node<nodes::struc::PStruct>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/parser/v3/lower/block.rs:49:28
[INFO] [stdout]     |
[INFO] [stdout]  49 |             structs.push(s.lower(ctx.ctx));
[INFO] [stdout]     |                            ^^^^^ method cannot be called on `&&node::Node<nodes::struc::PStruct>` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/parser/v3/node.rs:8:1
[INFO] [stdout]     |
[INFO] [stdout]   8 | pub struct Node<T> {
[INFO] [stdout]     | ------------------ doesn't satisfy `node::Node<nodes::struc::PStruct>: FnLowerable`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/parser/v3/nodes/struc.rs:11:1
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub struct PStruct {
[INFO] [stdout]     | ------------------ doesn't satisfy `nodes::struc::PStruct: FnLowerable`
[INFO] [stdout]     |
[INFO] [stdout] note: trait bound `nodes::struc::PStruct: FnLowerable` was not satisfied
[INFO] [stdout]    --> src/parser/v3/lower/func.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl<T: FnLowerable> FnLowerable for Node<T> {
[INFO] [stdout]     |         ^^^^^^^^^^^  -----------     -------
[INFO] [stdout]     |         |
[INFO] [stdout]     |         unsatisfied trait bound introduced here
[INFO] [stdout] note: the trait `FnLowerable` must be implemented
[INFO] [stdout]    --> src/parser/v3/lower/func.rs:160:1
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub trait FnLowerable {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `FnLowerable` defines an item `lower`, perhaps you need to implement it
[INFO] [stdout]    --> src/parser/v3/lower/func.rs:160:1
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub trait FnLowerable {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:82:54
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     ctx.push(UInstruction::Mv { dst: def, src: res });
[INFO] [stdout]    |                                                      ^^^ expected `URes<ID<UVar>>`, found `ID<UVar>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<_>>`
[INFO] [stdout]             found struct `id::ID<_>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Res`
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     ctx.push(UInstruction::Mv { dst: ir::upper::kind::URes::Res(def), src: res });
[INFO] [stdout]    |                                                      +++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:82:64
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     ctx.push(UInstruction::Mv { dst: def, src: res });
[INFO] [stdout]    |                                                                ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     ctx.push(UInstruction::Mv { dst: def, src: ir::upper::kind::URes::Unres(res) });
[INFO] [stdout]    |                                                                +++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:89:53
[INFO] [stdout]    |
[INFO] [stdout] 89 |                     ctx.push_at(UInstruction::Ret { src }, src.origin);
[INFO] [stdout]    |                                                     ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 89 |                     ctx.push_at(UInstruction::Ret { src: ir::upper::kind::URes::Unres(src) }, src.origin);
[INFO] [stdout]    |                                                     ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `origin` on type `id::ID<upper::ident::UIdent>`
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:89:64
[INFO] [stdout]    |
[INFO] [stdout] 89 |                     ctx.push_at(UInstruction::Ret { src }, src.origin);
[INFO] [stdout]    |                                                                ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available field is: `0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:92:53
[INFO] [stdout]    |
[INFO] [stdout] 92 |                     ctx.push_at(UInstruction::Ret { src }, src.origin);
[INFO] [stdout]    |                                                     ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 92 |                     ctx.push_at(UInstruction::Ret { src: ir::upper::kind::URes::Unres(src) }, src.origin);
[INFO] [stdout]    |                                                     ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `origin` on type `id::ID<upper::ident::UIdent>`
[INFO] [stdout]   --> src/parser/v3/lower/block.rs:92:64
[INFO] [stdout]    |
[INFO] [stdout] 92 |                     ctx.push_at(UInstruction::Ret { src }, src.origin);
[INFO] [stdout]    |                                                                ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available field is: `0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/def.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |             ty,
[INFO] [stdout]    |             ^^ expected `URes<ID<UVar>>`, found `ID<Type>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/expr.rs:57:56
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     ctx.push(UInstruction::LoadSlice { dst, src });
[INFO] [stdout]    |                                                        ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 57 |                     ctx.push(UInstruction::LoadSlice { dst: ir::upper::kind::URes::Unres(dst), src });
[INFO] [stdout]    |                                                        ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/expr.rs:68:55
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     ctx.push(UInstruction::LoadData { dst, src });
[INFO] [stdout]    |                                                       ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     ctx.push(UInstruction::LoadData { dst: ir::upper::kind::URes::Unres(dst), src });
[INFO] [stdout]    |                                                       ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/expr.rs:80:55
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     ctx.push(UInstruction::LoadData { dst, src });
[INFO] [stdout]    |                                                       ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 80 |                     ctx.push(UInstruction::LoadData { dst: ir::upper::kind::URes::Unres(dst), src });
[INFO] [stdout]    |                                                       ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/expr.rs:97:30
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         dst: res1,
[INFO] [stdout]    |                              ^^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 97 |                         dst: ir::upper::kind::URes::Unres(res1),
[INFO] [stdout]    |                              +++++++++++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/expr.rs:98:30
[INFO] [stdout]    |
[INFO] [stdout] 98 |                         src: res2,
[INFO] [stdout]    |                              ^^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 98 |                         src: ir::upper::kind::URes::Unres(res2),
[INFO] [stdout]    |                              +++++++++++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:110:34
[INFO] [stdout]     |
[INFO] [stdout] 110 | ...                   dst: dest,
[INFO] [stdout]     |                            ^^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 110 |                             dst: ir::upper::kind::URes::Unres(dest),
[INFO] [stdout]     |                                  +++++++++++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:111:34
[INFO] [stdout]     |
[INFO] [stdout] 111 | ...                   src: res,
[INFO] [stdout]     |                            ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 111 |                             src: ir::upper::kind::URes::Unres(res),
[INFO] [stdout]     |                                  +++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:118:56
[INFO] [stdout]     |
[INFO] [stdout] 118 |                         ctx.push(UInstruction::Deref { dst, src: res });
[INFO] [stdout]     |                                                        ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 118 |                         ctx.push(UInstruction::Deref { dst: ir::upper::kind::URes::Unres(dst), src: res });
[INFO] [stdout]     |                                                        ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:118:66
[INFO] [stdout]     |
[INFO] [stdout] 118 |                         ctx.push(UInstruction::Deref { dst, src: res });
[INFO] [stdout]     |                                                                  ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 118 |                         ctx.push(UInstruction::Deref { dst, src: ir::upper::kind::URes::Unres(res) });
[INFO] [stdout]     |                                                                  +++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:135:26
[INFO] [stdout]     |
[INFO] [stdout] 135 |                     dst: dest,
[INFO] [stdout]     |                          ^^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 135 |                     dst: ir::upper::kind::URes::Unres(dest),
[INFO] [stdout]     |                          +++++++++++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     nargs.push(arg);
[INFO] [stdout]     |                     -----      --- this argument has type `id::ID<upper::ident::UIdent>`...
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     ... which causes `nargs` to have type `Vec<id::ID<upper::ident::UIdent>>`
[INFO] [stdout] ...
[INFO] [stdout] 137 |                     args: nargs,
[INFO] [stdout]     |                           ^^^^^ expected `Vec<URes<ID<UVar>>>`, found `Vec<ID<UIdent>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<URes<id::ID<kind::UVar>>>`
[INFO] [stdout]                found struct `Vec<id::ID<upper::ident::UIdent>>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     nargs.push(ir::upper::kind::URes::Unres(arg));
[INFO] [stdout]     |                                +++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:146:52
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 ctx.push(UInstruction::Construct { dst, struc, fields });
[INFO] [stdout]     |                                                    ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 ctx.push(UInstruction::Construct { dst: ir::upper::kind::URes::Unres(dst), struc, fields });
[INFO] [stdout]     |                                                    ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:146:64
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 ctx.push(UInstruction::Construct { dst, struc, fields });
[INFO] [stdout]     |                                                                ^^^^^^ expected `HashMap<String, URes<ID<UVar>>>`, found `HashMap<String, ID<UIdent>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `HashMap<_, URes<id::ID<kind::UVar>>>`
[INFO] [stdout]                found struct `HashMap<_, id::ID<upper::ident::UIdent>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:156:45
[INFO] [stdout]     |
[INFO] [stdout] 156 |                 ctx.push(UInstruction::If { cond, body });
[INFO] [stdout]     |                                             ^^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]              found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]     |
[INFO] [stdout] 156 |                 ctx.push(UInstruction::If { cond: ir::upper::kind::URes::Unres(cond), body });
[INFO] [stdout]     |                                             +++++++++++++++++++++++++++++++++++    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:156:51
[INFO] [stdout]     |
[INFO] [stdout] 156 |                 ctx.push(UInstruction::If { cond, body });
[INFO] [stdout]     |                                                   ^^^^ expected `Vec<ID<UInstrInst>>`, found `Vec<UInstrInst>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<id::ID<upper::instr::UInstrInst>>`
[INFO] [stdout]                found struct `Vec<upper::instr::UInstrInst>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:165:47
[INFO] [stdout]     |
[INFO] [stdout] 165 |                 ctx.push(UInstruction::Loop { body });
[INFO] [stdout]     |                                               ^^^^ expected `Vec<ID<UInstrInst>>`, found `Vec<UInstrInst>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<id::ID<upper::instr::UInstrInst>>`
[INFO] [stdout]                found struct `Vec<upper::instr::UInstrInst>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:187:41
[INFO] [stdout]     |
[INFO] [stdout] 187 | ...                   origin: (),
[INFO] [stdout]     |                               ^^ expected `FileSpan`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:188:40
[INFO] [stdout]     |
[INFO] [stdout] 188 | ...                   gargs: (),
[INFO] [stdout]     |                              ^^ expected `Vec<ID<Type>>`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<id::ID<upper::ty::Type>>`
[INFO] [stdout]             found unit type `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:183:35
[INFO] [stdout]     |
[INFO] [stdout] 183 |   ...                   base: MemRes {
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 184 | | ...                       mem: Member {
[INFO] [stdout] 185 | | ...                           id: MemberID
[INFO] [stdout] 186 | | ...                       },
[INFO] [stdout] 187 | | ...                       origin: (),
[INFO] [stdout] 188 | | ...                       gargs: (),
[INFO] [stdout] 189 | | ...                   },
[INFO] [stdout]     | |_______________________^ expected `ResBase`, found `MemRes`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `ir::upper::ident::ResBase::Unvalidated`
[INFO] [stdout]     |
[INFO] [stdout] 183 ~                             base: ir::upper::ident::ResBase::Unvalidated(MemRes {
[INFO] [stdout] 184 |                                 mem: Member {
[INFO] [stdout] ...
[INFO] [stdout] 188 |                                 gargs: (),
[INFO] [stdout] 189 ~                             }),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/expr.rs:190:35
[INFO] [stdout]     |
[INFO] [stdout] 190 | ...                   path: (),
[INFO] [stdout]     |                             ^^ expected `Vec<MemberIdent>`, found `()`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<upper::ident::MemberIdent>`
[INFO] [stdout]             found unit type `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:68:44
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     i: UInstruction::Ret { src },
[INFO] [stdout]    |                                            ^^^ expected `URes<ID<UVar>>`, found `ID<UIdent>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ident::UIdent>`
[INFO] [stdout] help: try wrapping the expression in `ir::upper::kind::URes::Unres`
[INFO] [stdout]    |
[INFO] [stdout] 68 |                     i: UInstruction::Ret { src: ir::upper::kind::URes::Unres(src) },
[INFO] [stdout]    |                                            ++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             ret,
[INFO] [stdout]    |             ^^^ expected `URes<ID<UVar>>`, found `ID<Type>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/func.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |             instructions,
[INFO] [stdout]    |             ^^^^^^^^^^^^ expected `Vec<ID<UInstrInst>>`, found `Vec<UInstrInst>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Vec<id::ID<upper::instr::UInstrInst>>`
[INFO] [stdout]               found struct `Vec<upper::instr::UInstrInst>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/parser/v3/lower/func.rs:105:31
[INFO] [stdout]     |
[INFO] [stdout] 105 |                           base: MemRes {
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 106 | |                             mem: Member {
[INFO] [stdout] 107 | |                                 id: MemberID::Module(self.module),
[INFO] [stdout] 108 | |                             },
[INFO] [stdout] 109 | |                             origin: self.origin,
[INFO] [stdout] 110 | |                             gargs: Vec::new(),
[INFO] [stdout] 111 | |                         },
[INFO] [stdout]     | |_________________________^ expected `ResBase`, found `MemRes`
[INFO] [stdout]     |
[INFO] [stdout] help: try wrapping the expression in `ir::upper::ident::ResBase::Unvalidated`
[INFO] [stdout]     |
[INFO] [stdout] 105 ~                         base: ir::upper::ident::ResBase::Unvalidated(MemRes {
[INFO] [stdout] 106 |                             mem: Member {
[INFO] [stdout] ...
[INFO] [stdout] 110 |                             gargs: Vec::new(),
[INFO] [stdout] 111 ~                         }),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `origin` in initializer of `kind::StructField`
[INFO] [stdout]   --> src/parser/v3/lower/struc.rs:36:34
[INFO] [stdout]    |
[INFO] [stdout] 36 |         .map(|(name, ty)| (name, StructField { ty }))
[INFO] [stdout]    |                                  ^^^^^^^^^^^ missing `origin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `gargs` and `ty` in initializer of `upper::ident::MemberIdent`
[INFO] [stdout]   --> src/parser/v3/lower/ty.rs:33:27
[INFO] [stdout]    |
[INFO] [stdout] 33 |                 path.push(MemberIdent {
[INFO] [stdout]    |                           ^^^^^^^^^^^ missing `gargs` and `ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `gargs` and `ty` in initializer of `upper::ident::MemberIdent`
[INFO] [stdout]   --> src/parser/v3/lower/ty.rs:46:23
[INFO] [stdout]    |
[INFO] [stdout] 46 |             path.push(MemberIdent {
[INFO] [stdout]    |                       ^^^^^^^^^^^ missing `gargs` and `ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Unres` found for enum `upper::ty::Type` in the current scope
[INFO] [stdout]   --> src/parser/v3/lower/ty.rs:51:28
[INFO] [stdout]    |
[INFO] [stdout] 51 |             let ty = Type::Unres(MemberPath {
[INFO] [stdout]    |                            ^^^^^ variant or associated item not found in `upper::ty::Type`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ir/upper/ty.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum Type {
[INFO] [stdout]    | ------------- variant or associated item `Unres` not found for this enum
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `gargs` and `ty` in initializer of `upper::ident::MemberIdent`
[INFO] [stdout]   --> src/parser/v3/lower/ty.rs:60:27
[INFO] [stdout]    |
[INFO] [stdout] 60 |                 path.push(MemberIdent {
[INFO] [stdout]    |                           ^^^^^^^^^^^ missing `gargs` and `ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Unres` found for enum `upper::ty::Type` in the current scope
[INFO] [stdout]   --> src/parser/v3/lower/ty.rs:65:23
[INFO] [stdout]    |
[INFO] [stdout] 65 |                 Type::Unres(MemberPath {
[INFO] [stdout]    |                       ^^^^^ variant or associated item not found in `upper::ty::Type`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ir/upper/ty.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum Type {
[INFO] [stdout]    | ------------- variant or associated item `Unres` not found for this enum
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/mod.rs:40:18
[INFO] [stdout]    |
[INFO] [stdout] 40 |             ret: p.def_ty(Type::Unit),
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `ID<Type>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/mod.rs:63:35
[INFO] [stdout]    |
[INFO] [stdout] 63 |         p.fns[fid].instructions = fctx.instructions;
[INFO] [stdout]    |         -----------------------   ^^^^^^^^^^^^^^^^^ expected `Vec<ID<UInstrInst>>`, found `Vec<UInstrInst>`
[INFO] [stdout]    |         |
[INFO] [stdout]    |         expected due to the type of this binding
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Vec<id::ID<upper::instr::UInstrInst>>`
[INFO] [stdout]               found struct `Vec<upper::instr::UInstrInst>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/mod.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |             ty: ty.ty(self),
[INFO] [stdout]    |                 ^^^^^^^^^^^ expected `URes<ID<UVar>>`, found `ID<Type>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::ParsableWith`
[INFO] [stdout]  --> src/parser/v3/nodes/struc.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{parser::ParsableWith, util::Padder};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `missing`
[INFO] [stdout]    --> src/compiler/arch/riscv/asm.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |         missing: bool,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_missing`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `errs`
[INFO] [stdout]    --> src/ir/upper/resolve/ident.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     errs: &mut Vec<ResErr>,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_errs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `g`
[INFO] [stdout]    --> src/ir/upper/resolve/ident.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let g = &generics[dst];
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_g`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/ir/upper/resolve/ident.rs:191:13
[INFO] [stdout]     |
[INFO] [stdout] 191 |         let t = &types[src];
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |         s: &mut Sources,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `types`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:161:9
[INFO] [stdout]     |
[INFO] [stdout] 161 |         types: &mut Vec<Type>,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `errs`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |         errs: &mut Vec<ResErr>,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_errs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |         s: &mut Sources,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `types`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:172:9
[INFO] [stdout]     |
[INFO] [stdout] 172 |         types: &mut Vec<Type>,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `errs`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:173:9
[INFO] [stdout]     |
[INFO] [stdout] 173 |         errs: &mut Vec<ResErr>,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_errs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/ir/upper/resolve/mod.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |         s: &mut Sources,
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/ir/lower/program.rs:428:27
[INFO] [stdout]     |
[INFO] [stdout] 428 |             Type::Generic(id) => return None,
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fi`
[INFO] [stdout]    --> src/ir/lower/program.rs:431:26
[INFO] [stdout]     |
[INFO] [stdout] 431 |             Type::FnInst(fi) => 0,
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_fi`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/parser/v3/lower/mod.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |     fn ty(self, p: &mut UProgram) -> TypeID {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/parser/v3/parse.rs:37:34
[INFO] [stdout]    |
[INFO] [stdout] 37 |             ParseResult::Recover(v) => ControlFlow::Break(None),
[INFO] [stdout]    |                                  ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find type `RType` in this scope
[INFO] [stdout]    --> src/ir/upper/resolve/instr.rs:136:36
[INFO] [stdout]     |
[INFO] [stdout] 136 |                 if !matches!(ty.0, RType::Bits(64)) {
[INFO] [stdout]     |                                    ^^^^^ use of undeclared type `RType`
[INFO] [stdout]     |
[INFO] [stdout] help: an enum with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 136 -                 if !matches!(ty.0, RType::Bits(64)) {
[INFO] [stdout] 136 +                 if !matches!(ty.0, Type::Bits(64)) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser/v3/lower/struc.rs:36:48
[INFO] [stdout]    |
[INFO] [stdout] 36 |         .map(|(name, ty)| (name, StructField { ty }))
[INFO] [stdout]    |                                                ^^ expected `URes<ID<UVar>>`, found `ID<Type>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `URes<id::ID<kind::UVar>>`
[INFO] [stdout]             found struct `id::ID<upper::ty::Type>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0026, E0027, E0061, E0063, E0107, E0271, E0277, E0308, E0423...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0026`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `lang` (bin "lang") due to 197 previous errors; 24 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "09246495d659a5c38b0235680bfa0a72a9d365b110e88b09782ba2f4e5794cb9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "09246495d659a5c38b0235680bfa0a72a9d365b110e88b09782ba2f4e5794cb9", kill_on_drop: false }`
[INFO] [stdout] 09246495d659a5c38b0235680bfa0a72a9d365b110e88b09782ba2f4e5794cb9
