[INFO] cloning repository https://github.com/MaXiaoye/CAS706_assignment3_Rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/MaXiaoye/CAS706_assignment3_Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaXiaoye%2FCAS706_assignment3_Rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaXiaoye%2FCAS706_assignment3_Rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c026c323ec5117cf87b72eb514b027e0e1f39a8f [INFO] checking MaXiaoye/CAS706_assignment3_Rust against master#3aedcf06b73fc36feeebca3d579e1d2a6c40acc5 for pr-65819 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMaXiaoye%2FCAS706_assignment3_Rust" "/workspace/builds/worker-7/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust on toolchain 3aedcf06b73fc36feeebca3d579e1d2a6c40acc5 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+3aedcf06b73fc36feeebca3d579e1d2a6c40acc5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust [INFO] finished tweaking git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust [INFO] tweaked toml for git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust written to /workspace/builds/worker-7/source/Cargo.toml [INFO] crate git repo https://github.com/MaXiaoye/CAS706_assignment3_Rust already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+3aedcf06b73fc36feeebca3d579e1d2a6c40acc5" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: An explicit [[bin]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other binary targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a binary target: [INFO] [stderr] [INFO] [stderr] * /workspace/builds/worker-7/source/src/main.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autobins = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] warning: path `/workspace/builds/worker-7/source/src/main.rs` was erroneously implicitly accepted for binary `hello_world`, [INFO] [stderr] please set bin.path in Cargo.toml [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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" "rustops/crates-build-env@sha256:c46a2d1a26fb48b37929c74ca49dd9409f2375a0a3bdb8fe07617f3ffccaa889" "/opt/rustwide/cargo-home/bin/cargo" "+3aedcf06b73fc36feeebca3d579e1d2a6c40acc5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 94c9ea40ca0bcac93b6878439304efa7a7b092fb87680a24c59b0fc24a9b9ebe [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "94c9ea40ca0bcac93b6878439304efa7a7b092fb87680a24c59b0fc24a9b9ebe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "94c9ea40ca0bcac93b6878439304efa7a7b092fb87680a24c59b0fc24a9b9ebe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "94c9ea40ca0bcac93b6878439304efa7a7b092fb87680a24c59b0fc24a9b9ebe", kill_on_drop: false }` [INFO] [stdout] 94c9ea40ca0bcac93b6878439304efa7a7b092fb87680a24c59b0fc24a9b9ebe [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:c46a2d1a26fb48b37929c74ca49dd9409f2375a0a3bdb8fe07617f3ffccaa889" "/opt/rustwide/cargo-home/bin/cargo" "+3aedcf06b73fc36feeebca3d579e1d2a6c40acc5" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 59f5a9a57b93f45486a2fe43464cf65c40c791e20f949a9e6004d89ec9c416dd [INFO] running `Command { std: "docker" "start" "-a" "59f5a9a57b93f45486a2fe43464cf65c40c791e20f949a9e6004d89ec9c416dd", kill_on_drop: false }` [INFO] [stderr] warning: An explicit [[bin]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other binary targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a binary target: [INFO] [stderr] [INFO] [stderr] * /opt/rustwide/workdir/src/main.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autobins = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] warning: path `/opt/rustwide/workdir/src/main.rs` was erroneously implicitly accepted for binary `hello_world`, [INFO] [stderr] please set bin.path in Cargo.toml [INFO] [stderr] Checking assignmentThree_Rust v0.0.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: variant `T_INT` should have an upper camel case name [INFO] [stdout] --> src/main.rs:46:3 [INFO] [stdout] | [INFO] [stdout] 46 | T_INT{ty: Type, value: u32}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TInt` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_BOOL` should have an upper camel case name [INFO] [stdout] --> src/main.rs:47:6 [INFO] [stdout] | [INFO] [stdout] 47 | T_BOOL{ty: Type, value: bool}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to upper camel case: `TBool` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_VAR` should have an upper camel case name [INFO] [stdout] --> src/main.rs:48:6 [INFO] [stdout] | [INFO] [stdout] 48 | T_VAR{ty: Type, name: char}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TVar` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_FUN` should have an upper camel case name [INFO] [stdout] --> src/main.rs:49:6 [INFO] [stdout] | [INFO] [stdout] 49 | T_FUN{ty: Type, param: Box, body: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TFun` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_Closure` should have an upper camel case name [INFO] [stdout] --> src/main.rs:50:6 [INFO] [stdout] | [INFO] [stdout] 50 | T_Closure{fun: Box, env: InterpEnv}, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `TClosure` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_APP` should have an upper camel case name [INFO] [stdout] --> src/main.rs:51:6 [INFO] [stdout] | [INFO] [stdout] 51 | T_APP{ty: Type, fun: Box, arg: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TApp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_INT` should have an upper camel case name [INFO] [stdout] --> src/main.rs:46:3 [INFO] [stdout] | [INFO] [stdout] 46 | T_INT{ty: Type, value: u32}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TInt` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_BOOL` should have an upper camel case name [INFO] [stdout] --> src/main.rs:47:6 [INFO] [stdout] | [INFO] [stdout] 47 | T_BOOL{ty: Type, value: bool}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to upper camel case: `TBool` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_CALC` should have an upper camel case name [INFO] [stdout] --> src/main.rs:52:6 [INFO] [stdout] | [INFO] [stdout] 52 | T_CALC{ty: Type, op: char, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to upper camel case: `TCalc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_NOT` should have an upper camel case name [INFO] [stdout] --> src/main.rs:53:6 [INFO] [stdout] | [INFO] [stdout] 53 | T_NOT{ty: Type, exp: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TNot` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_AND` should have an upper camel case name [INFO] [stdout] --> src/main.rs:54:6 [INFO] [stdout] | [INFO] [stdout] 54 | T_AND{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TAnd` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_OR` should have an upper camel case name [INFO] [stdout] --> src/main.rs:55:6 [INFO] [stdout] | [INFO] [stdout] 55 | T_OR{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `TOr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_EQU` should have an upper camel case name [INFO] [stdout] --> src/main.rs:56:6 [INFO] [stdout] | [INFO] [stdout] 56 | T_EQU{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TEqu` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_LT` should have an upper camel case name [INFO] [stdout] --> src/main.rs:57:6 [INFO] [stdout] | [INFO] [stdout] 57 | T_LT{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `TLt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_IF` should have an upper camel case name [INFO] [stdout] --> src/main.rs:58:6 [INFO] [stdout] | [INFO] [stdout] 58 | T_IF{ty: Type, exp1: Box, exp2: Box, exp3: Box}, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `TIf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_LET` should have an upper camel case name [INFO] [stdout] --> src/main.rs:59:6 [INFO] [stdout] | [INFO] [stdout] 59 | T_LET{ty: Type, exp1: Box, exp2: Box, exp3: Box} [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TLet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_VAR` should have an upper camel case name [INFO] [stdout] --> src/main.rs:48:6 [INFO] [stdout] | [INFO] [stdout] 48 | T_VAR{ty: Type, name: char}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TVar` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_FUN` should have an upper camel case name [INFO] [stdout] --> src/main.rs:49:6 [INFO] [stdout] | [INFO] [stdout] 49 | T_FUN{ty: Type, param: Box, body: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TFun` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_Closure` should have an upper camel case name [INFO] [stdout] --> src/main.rs:50:6 [INFO] [stdout] | [INFO] [stdout] 50 | T_Closure{fun: Box, env: InterpEnv}, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `TClosure` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_APP` should have an upper camel case name [INFO] [stdout] --> src/main.rs:51:6 [INFO] [stdout] | [INFO] [stdout] 51 | T_APP{ty: Type, fun: Box, arg: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TApp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_CALC` should have an upper camel case name [INFO] [stdout] --> src/main.rs:52:6 [INFO] [stdout] | [INFO] [stdout] 52 | T_CALC{ty: Type, op: char, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to upper camel case: `TCalc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_NOT` should have an upper camel case name [INFO] [stdout] --> src/main.rs:53:6 [INFO] [stdout] | [INFO] [stdout] 53 | T_NOT{ty: Type, exp: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TNot` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_AND` should have an upper camel case name [INFO] [stdout] --> src/main.rs:54:6 [INFO] [stdout] | [INFO] [stdout] 54 | T_AND{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TAnd` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_OR` should have an upper camel case name [INFO] [stdout] --> src/main.rs:55:6 [INFO] [stdout] | [INFO] [stdout] 55 | T_OR{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `TOr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_EQU` should have an upper camel case name [INFO] [stdout] --> src/main.rs:56:6 [INFO] [stdout] | [INFO] [stdout] 56 | T_EQU{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TEqu` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_LT` should have an upper camel case name [INFO] [stdout] --> src/main.rs:57:6 [INFO] [stdout] | [INFO] [stdout] 57 | T_LT{ty: Type, exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `TLt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_IF` should have an upper camel case name [INFO] [stdout] --> src/main.rs:58:6 [INFO] [stdout] | [INFO] [stdout] 58 | T_IF{ty: Type, exp1: Box, exp2: Box, exp3: Box}, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `TIf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `T_LET` should have an upper camel case name [INFO] [stdout] --> src/main.rs:59:6 [INFO] [stdout] | [INFO] [stdout] 59 | T_LET{ty: Type, exp1: Box, exp2: Box, exp3: Box} [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `TLet` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/main.rs:141:4 [INFO] [stdout] | [INFO] [stdout] 141 | _ => panic!("undefined term!") [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a1` [INFO] [stdout] --> src/main.rs:600:6 [INFO] [stdout] | [INFO] [stdout] 600 | let a1 = UntypedTerm::APP{fun: Box::new(f1.clone()), arg: Box::new(i1.clone())}; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_a1` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:156:35 [INFO] [stdout] | [INFO] [stdout] 156 | TypedTerm::T_INT{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyInt}], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:157:36 [INFO] [stdout] | [INFO] [stdout] 157 | TypedTerm::T_BOOL{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyBool}], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | TypedTerm::T_VAR{ty: t, name: n} => vec![], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/main.rs:165:34 [INFO] [stdout] | [INFO] [stdout] 165 | TypedTerm::T_VAR{ty: t, name: n} => vec![], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/main.rs:175:33 [INFO] [stdout] | [INFO] [stdout] 175 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:437:31 [INFO] [stdout] | [INFO] [stdout] 437 | TypedTerm::T_VAR{ty: t, name: n} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:441:31 [INFO] [stdout] | [INFO] [stdout] 441 | TypedTerm::T_APP{ty: t, fun: f, arg: a} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:447:34 [INFO] [stdout] | [INFO] [stdout] 447 | TypedTerm::T_FUN{ty: t1, param: p1, body: b1} => match *p1.clone() { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:448:35 [INFO] [stdout] | [INFO] [stdout] 448 | ... TypedTerm::T_VAR{ty: t2, name: n1} => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:459:32 [INFO] [stdout] | [INFO] [stdout] 459 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:470:31 [INFO] [stdout] | [INFO] [stdout] 470 | TypedTerm::T_NOT{ty: t, exp: e} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:477:31 [INFO] [stdout] | [INFO] [stdout] 477 | TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:482:30 [INFO] [stdout] | [INFO] [stdout] 482 | TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:487:31 [INFO] [stdout] | [INFO] [stdout] 487 | TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:492:30 [INFO] [stdout] | [INFO] [stdout] 492 | TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:497:30 [INFO] [stdout] | [INFO] [stdout] 497 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:502:34 [INFO] [stdout] | [INFO] [stdout] 502 | TypedTerm::T_BOOL{ty: t1, value: v} => if v {v2} else {v3}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:506:31 [INFO] [stdout] | [INFO] [stdout] 506 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:511:33 [INFO] [stdout] | [INFO] [stdout] 511 | TypedTerm::T_VAR{ty: t, name: n} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `solutions` [INFO] [stdout] --> src/main.rs:526:10 [INFO] [stdout] | [INFO] [stdout] 526 | let solutions = unify(Constraints); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solutions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:536:26 [INFO] [stdout] | [INFO] [stdout] 536 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:536:63 [INFO] [stdout] | [INFO] [stdout] 536 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:543:26 [INFO] [stdout] | [INFO] [stdout] 543 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:543:63 [INFO] [stdout] | [INFO] [stdout] 543 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:550:26 [INFO] [stdout] | [INFO] [stdout] 550 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:550:63 [INFO] [stdout] | [INFO] [stdout] 550 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:557:26 [INFO] [stdout] | [INFO] [stdout] 557 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:557:63 [INFO] [stdout] | [INFO] [stdout] 557 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:564:26 [INFO] [stdout] | [INFO] [stdout] 564 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, valu... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:564:63 [INFO] [stdout] | [INFO] [stdout] 564 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, valu... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:572:27 [INFO] [stdout] | [INFO] [stdout] 572 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:572:65 [INFO] [stdout] | [INFO] [stdout] 572 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:579:27 [INFO] [stdout] | [INFO] [stdout] 579 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:579:65 [INFO] [stdout] | [INFO] [stdout] 579 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:586:27 [INFO] [stdout] | [INFO] [stdout] 586 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:586:65 [INFO] [stdout] | [INFO] [stdout] 586 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:587:26 [INFO] [stdout] | [INFO] [stdout] 587 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:587:63 [INFO] [stdout] | [INFO] [stdout] 587 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:67:36 [INFO] [stdout] | [INFO] [stdout] 67 | TypedTerm::T_INT{ty: t, value: v} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:68:40 [INFO] [stdout] | [INFO] [stdout] 68 | TypedTerm::T_BOOL{ty: t, value: v} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/main.rs:69:38 [INFO] [stdout] | [INFO] [stdout] 69 | TypedTerm::T_VAR{ty: t, name: n} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `p` [INFO] [stdout] --> src/main.rs:70:39 [INFO] [stdout] | [INFO] [stdout] 70 | TypedTerm::T_FUN{ty: t, param: p, body: b} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_p` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b` [INFO] [stdout] --> src/main.rs:70:48 [INFO] [stdout] | [INFO] [stdout] 70 | TypedTerm::T_FUN{ty: t, param: p, body: b} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `f` [INFO] [stdout] --> src/main.rs:71:37 [INFO] [stdout] | [INFO] [stdout] 71 | TypedTerm::T_APP{ty: t, fun: f, arg: a} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_f` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a` [INFO] [stdout] --> src/main.rs:71:45 [INFO] [stdout] | [INFO] [stdout] 71 | TypedTerm::T_APP{ty: t, fun: f, arg: a} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/main.rs:72:37 [INFO] [stdout] | [INFO] [stdout] 72 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:72:46 [INFO] [stdout] | [INFO] [stdout] 72 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:72:56 [INFO] [stdout] | [INFO] [stdout] 72 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/main.rs:73:37 [INFO] [stdout] | [INFO] [stdout] 73 | TypedTerm::T_NOT{ty: t, exp: e} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:74:38 [INFO] [stdout] | [INFO] [stdout] 74 | TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:74:48 [INFO] [stdout] | [INFO] [stdout] 74 | TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:75:37 [INFO] [stdout] | [INFO] [stdout] 75 | TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:75:47 [INFO] [stdout] | [INFO] [stdout] 75 | TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:76:38 [INFO] [stdout] | [INFO] [stdout] 76 | TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:76:48 [INFO] [stdout] | [INFO] [stdout] 76 | TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:77:37 [INFO] [stdout] | [INFO] [stdout] 77 | TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:77:47 [INFO] [stdout] | [INFO] [stdout] 77 | TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:78:37 [INFO] [stdout] | [INFO] [stdout] 78 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:78:47 [INFO] [stdout] | [INFO] [stdout] 78 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e3` [INFO] [stdout] --> src/main.rs:78:57 [INFO] [stdout] | [INFO] [stdout] 78 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:79:38 [INFO] [stdout] | [INFO] [stdout] 79 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:79:48 [INFO] [stdout] | [INFO] [stdout] 79 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e3` [INFO] [stdout] --> src/main.rs:79:58 [INFO] [stdout] | [INFO] [stdout] 79 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/main.rs:141:4 [INFO] [stdout] | [INFO] [stdout] 141 | _ => panic!("undefined term!") [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:613:6 [INFO] [stdout] | [INFO] [stdout] 613 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a1` [INFO] [stdout] --> src/main.rs:600:6 [INFO] [stdout] | [INFO] [stdout] 600 | let a1 = UntypedTerm::APP{fun: Box::new(f1.clone()), arg: Box::new(i1.clone())}; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_a1` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:156:35 [INFO] [stdout] | [INFO] [stdout] 156 | TypedTerm::T_INT{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyInt}], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:157:36 [INFO] [stdout] | [INFO] [stdout] 157 | TypedTerm::T_BOOL{ty: t, value: v} => vec![Constraint{typeA: t, typeB: Type::TyBool}], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | TypedTerm::T_VAR{ty: t, name: n} => vec![], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/main.rs:165:34 [INFO] [stdout] | [INFO] [stdout] 165 | TypedTerm::T_VAR{ty: t, name: n} => vec![], [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/main.rs:175:33 [INFO] [stdout] | [INFO] [stdout] 175 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:437:31 [INFO] [stdout] | [INFO] [stdout] 437 | TypedTerm::T_VAR{ty: t, name: n} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:441:31 [INFO] [stdout] | [INFO] [stdout] 441 | TypedTerm::T_APP{ty: t, fun: f, arg: a} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:447:34 [INFO] [stdout] | [INFO] [stdout] 447 | TypedTerm::T_FUN{ty: t1, param: p1, body: b1} => match *p1.clone() { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:448:35 [INFO] [stdout] | [INFO] [stdout] 448 | ... TypedTerm::T_VAR{ty: t2, name: n1} => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:459:32 [INFO] [stdout] | [INFO] [stdout] 459 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:470:31 [INFO] [stdout] | [INFO] [stdout] 470 | TypedTerm::T_NOT{ty: t, exp: e} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:477:31 [INFO] [stdout] | [INFO] [stdout] 477 | TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:482:30 [INFO] [stdout] | [INFO] [stdout] 482 | TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:487:31 [INFO] [stdout] | [INFO] [stdout] 487 | TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:492:30 [INFO] [stdout] | [INFO] [stdout] 492 | TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:497:30 [INFO] [stdout] | [INFO] [stdout] 497 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:502:34 [INFO] [stdout] | [INFO] [stdout] 502 | TypedTerm::T_BOOL{ty: t1, value: v} => if v {v2} else {v3}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:506:31 [INFO] [stdout] | [INFO] [stdout] 506 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/main.rs:511:33 [INFO] [stdout] | [INFO] [stdout] 511 | TypedTerm::T_VAR{ty: t, name: n} => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `solutions` [INFO] [stdout] --> src/main.rs:526:10 [INFO] [stdout] | [INFO] [stdout] 526 | let solutions = unify(Constraints); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solutions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:536:26 [INFO] [stdout] | [INFO] [stdout] 536 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:536:63 [INFO] [stdout] | [INFO] [stdout] 536 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1+v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:543:26 [INFO] [stdout] | [INFO] [stdout] 543 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:543:63 [INFO] [stdout] | [INFO] [stdout] 543 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1-v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:550:26 [INFO] [stdout] | [INFO] [stdout] 550 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:550:63 [INFO] [stdout] | [INFO] [stdout] 550 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1*v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:557:26 [INFO] [stdout] | [INFO] [stdout] 557 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:557:63 [INFO] [stdout] | [INFO] [stdout] 557 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_INT{ty: Type::TyInt, value: v1/v2}, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:564:26 [INFO] [stdout] | [INFO] [stdout] 564 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, valu... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:564:63 [INFO] [stdout] | [INFO] [stdout] 564 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyInt, valu... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:572:27 [INFO] [stdout] | [INFO] [stdout] 572 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:572:65 [INFO] [stdout] | [INFO] [stdout] 572 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:579:27 [INFO] [stdout] | [INFO] [stdout] 579 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:579:65 [INFO] [stdout] | [INFO] [stdout] 579 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:586:27 [INFO] [stdout] | [INFO] [stdout] 586 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:586:65 [INFO] [stdout] | [INFO] [stdout] 586 | (TypedTerm::T_BOOL{ty: t1, value: v1}, TypedTerm::T_BOOL{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t1` [INFO] [stdout] --> src/main.rs:587:26 [INFO] [stdout] | [INFO] [stdout] 587 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t2` [INFO] [stdout] --> src/main.rs:587:63 [INFO] [stdout] | [INFO] [stdout] 587 | (TypedTerm::T_INT{ty: t1, value: v1}, TypedTerm::T_INT{ty: t2, value: v2}) => TypedTerm::T_BOOL{ty: Type::TyBool, value... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_t2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:67:36 [INFO] [stdout] | [INFO] [stdout] 67 | TypedTerm::T_INT{ty: t, value: v} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/main.rs:68:40 [INFO] [stdout] | [INFO] [stdout] 68 | TypedTerm::T_BOOL{ty: t, value: v} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> src/main.rs:69:38 [INFO] [stdout] | [INFO] [stdout] 69 | TypedTerm::T_VAR{ty: t, name: n} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `p` [INFO] [stdout] --> src/main.rs:70:39 [INFO] [stdout] | [INFO] [stdout] 70 | TypedTerm::T_FUN{ty: t, param: p, body: b} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_p` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b` [INFO] [stdout] --> src/main.rs:70:48 [INFO] [stdout] | [INFO] [stdout] 70 | TypedTerm::T_FUN{ty: t, param: p, body: b} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `f` [INFO] [stdout] --> src/main.rs:71:37 [INFO] [stdout] | [INFO] [stdout] 71 | TypedTerm::T_APP{ty: t, fun: f, arg: a} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_f` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a` [INFO] [stdout] --> src/main.rs:71:45 [INFO] [stdout] | [INFO] [stdout] 71 | TypedTerm::T_APP{ty: t, fun: f, arg: a} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/main.rs:72:37 [INFO] [stdout] | [INFO] [stdout] 72 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:72:46 [INFO] [stdout] | [INFO] [stdout] 72 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:72:56 [INFO] [stdout] | [INFO] [stdout] 72 | TypedTerm::T_CALC{ty: t, op: o, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/main.rs:73:37 [INFO] [stdout] | [INFO] [stdout] 73 | TypedTerm::T_NOT{ty: t, exp: e} => t, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:74:38 [INFO] [stdout] | [INFO] [stdout] 74 | TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:74:48 [INFO] [stdout] | [INFO] [stdout] 74 | TypedTerm::T_AND{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:75:37 [INFO] [stdout] | [INFO] [stdout] 75 | TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:75:47 [INFO] [stdout] | [INFO] [stdout] 75 | TypedTerm::T_OR{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:76:38 [INFO] [stdout] | [INFO] [stdout] 76 | TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:76:48 [INFO] [stdout] | [INFO] [stdout] 76 | TypedTerm::T_EQU{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:77:37 [INFO] [stdout] | [INFO] [stdout] 77 | TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:77:47 [INFO] [stdout] | [INFO] [stdout] 77 | TypedTerm::T_LT{ty: t, exp1: e1, exp2: e2} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:78:37 [INFO] [stdout] | [INFO] [stdout] 78 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:78:47 [INFO] [stdout] | [INFO] [stdout] 78 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e3` [INFO] [stdout] --> src/main.rs:78:57 [INFO] [stdout] | [INFO] [stdout] 78 | TypedTerm::T_IF{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e1` [INFO] [stdout] --> src/main.rs:79:38 [INFO] [stdout] | [INFO] [stdout] 79 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e2` [INFO] [stdout] --> src/main.rs:79:48 [INFO] [stdout] | [INFO] [stdout] 79 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e3` [INFO] [stdout] --> src/main.rs:79:58 [INFO] [stdout] | [INFO] [stdout] 79 | TypedTerm::T_LET{ty: t, exp1: e1, exp2: e2, exp3: e3} => t, [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_e3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:613:6 [INFO] [stdout] | [INFO] [stdout] 613 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:334:8 [INFO] [stdout] | [INFO] [stdout] 334 | let mut updateConstraints = solutionOne.applyToSet(&mut vec1); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:398:7 [INFO] [stdout] | [INFO] [stdout] 398 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:523:7 [INFO] [stdout] | [INFO] [stdout] 523 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `ParamTy` should have a snake case name [INFO] [stdout] --> src/main.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | TyFun{ParamTy: Box, ReturnTy: Box} [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `param_ty` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `ReturnTy` should have a snake case name [INFO] [stdout] --> src/main.rs:33:29 [INFO] [stdout] | [INFO] [stdout] 33 | TyFun{ParamTy: Box, ReturnTy: Box} [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `return_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `freshVar` should have a snake case name [INFO] [stdout] --> src/main.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | fn freshVar(v: &mut u32) -> Type { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `fresh_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `getType` should have a snake case name [INFO] [stdout] --> src/main.rs:65:6 [INFO] [stdout] | [INFO] [stdout] 65 | fn getType(self) -> Type { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `get_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Env` should have a snake case name [INFO] [stdout] --> src/main.rs:88:3 [INFO] [stdout] | [INFO] [stdout] 88 | Env: HashMap [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `varNum` should have a snake case name [INFO] [stdout] --> src/main.rs:107:52 [INFO] [stdout] | [INFO] [stdout] 107 | fn annotate(term: UntypedTerm, mut tenv: TypeEnv, varNum: &mut u32) -> TypedTerm { [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `var_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy` should have a snake case name [INFO] [stdout] --> src/main.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | let paramTy = freshVar(varNum); [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `param_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy1` should have a snake case name [INFO] [stdout] --> src/main.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | let paramTy1 = paramTy.clone(); [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `param_ty1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramBinder` should have a snake case name [INFO] [stdout] --> src/main.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: p}; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy` should have a snake case name [INFO] [stdout] --> src/main.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | let paramTy = freshVar(varNum); [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `param_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy1` should have a snake case name [INFO] [stdout] --> src/main.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | let paramTy1 = paramTy.clone(); [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `param_ty1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramBinder` should have a snake case name [INFO] [stdout] --> src/main.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: e1}; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `typeA` should have a snake case name [INFO] [stdout] --> src/main.rs:149:3 [INFO] [stdout] | [INFO] [stdout] 149 | typeA: Type, [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `type_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `typeB` should have a snake case name [INFO] [stdout] --> src/main.rs:150:3 [INFO] [stdout] | [INFO] [stdout] 150 | typeB: Type [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `type_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fromPair` should have a snake case name [INFO] [stdout] --> src/main.rs:277:6 [INFO] [stdout] | [INFO] [stdout] 277 | fn fromPair(tvar: u32, ty: Type) -> Substitution { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `from_pair` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `applyToSet` should have a snake case name [INFO] [stdout] --> src/main.rs:284:6 [INFO] [stdout] | [INFO] [stdout] 284 | fn applyToSet (&self,constraints: &mut Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `apply_to_set` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `applyOneType` should have a snake case name [INFO] [stdout] --> src/main.rs:293:6 [INFO] [stdout] | [INFO] [stdout] 293 | fn applyOneType(&self, ty: Type) -> Type { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `apply_one_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `solutionType` should have a snake case name [INFO] [stdout] --> src/main.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 311 | for solutionType in self.solutions.values_mut() { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `solutionOne` should have a snake case name [INFO] [stdout] --> src/main.rs:330:12 [INFO] [stdout] | [INFO] [stdout] 330 | let mut solutionOne = unifyOne(constraints[0].clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `solution_one` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `updateConstraints` should have a snake case name [INFO] [stdout] --> src/main.rs:334:12 [INFO] [stdout] | [INFO] [stdout] 334 | let mut updateConstraints = solutionOne.applyToSet(&mut vec1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `update_constraints` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `solutionRest` should have a snake case name [INFO] [stdout] --> src/main.rs:336:8 [INFO] [stdout] | [INFO] [stdout] 336 | let solutionRest = unify(updateConstraints); [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_rest` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unifyOne` should have a snake case name [INFO] [stdout] --> src/main.rs:343:5 [INFO] [stdout] | [INFO] [stdout] 343 | fn unifyOne(constraint: Constraint) -> Substitution { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `unify_one` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unifyVar` should have a snake case name [INFO] [stdout] --> src/main.rs:356:5 [INFO] [stdout] | [INFO] [stdout] 356 | fn unifyVar(tvar: u32, ty: Type) -> Substitution { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `unify_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `typeInference` should have a snake case name [INFO] [stdout] --> src/main.rs:397:5 [INFO] [stdout] | [INFO] [stdout] 397 | fn typeInference(term: UntypedTerm) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `type_inference` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvT` should have a snake case name [INFO] [stdout] --> src/main.rs:398:11 [INFO] [stdout] | [INFO] [stdout] 398 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `TypedTerm` should have a snake case name [INFO] [stdout] --> src/main.rs:399:10 [INFO] [stdout] | [INFO] [stdout] 399 | let TypedTerm = annotate(term, EnvT, &mut 0); [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `typed_term` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Constraints` should have a snake case name [INFO] [stdout] --> src/main.rs:400:10 [INFO] [stdout] | [INFO] [stdout] 400 | let Constraints = collect(TypedTerm.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Env` should have a snake case name [INFO] [stdout] --> src/main.rs:415:3 [INFO] [stdout] | [INFO] [stdout] 415 | Env: HashMap [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Interp` should have a snake case name [INFO] [stdout] --> src/main.rs:433:5 [INFO] [stdout] | [INFO] [stdout] 433 | fn Interp(term: TypedTerm, env: &mut InterpEnv) -> TypedTerm { [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `interp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvNew` should have a snake case name [INFO] [stdout] --> src/main.rs:443:19 [INFO] [stdout] | [INFO] [stdout] 443 | let mut EnvNew = InterpEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `env_new` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvNew` should have a snake case name [INFO] [stdout] --> src/main.rs:508:19 [INFO] [stdout] | [INFO] [stdout] 508 | let mut EnvNew = InterpEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `env_new` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `InterpE` should have a snake case name [INFO] [stdout] --> src/main.rs:522:5 [INFO] [stdout] | [INFO] [stdout] 522 | fn InterpE(term: UntypedTerm) { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `interp_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvT` should have a snake case name [INFO] [stdout] --> src/main.rs:523:11 [INFO] [stdout] | [INFO] [stdout] 523 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `TypedTerm` should have a snake case name [INFO] [stdout] --> src/main.rs:524:10 [INFO] [stdout] | [INFO] [stdout] 524 | let TypedTerm = annotate(term, EnvT, &mut 0); [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `typed_term` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Constraints` should have a snake case name [INFO] [stdout] --> src/main.rs:525:10 [INFO] [stdout] | [INFO] [stdout] 525 | let Constraints = collect(TypedTerm.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvI` should have a snake case name [INFO] [stdout] --> src/main.rs:528:14 [INFO] [stdout] | [INFO] [stdout] 528 | let mut EnvI = InterpEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Add` should have a snake case name [INFO] [stdout] --> src/main.rs:534:5 [INFO] [stdout] | [INFO] [stdout] 534 | fn Add(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `add` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Minus` should have a snake case name [INFO] [stdout] --> src/main.rs:541:5 [INFO] [stdout] | [INFO] [stdout] 541 | fn Minus(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `minus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Mul` should have a snake case name [INFO] [stdout] --> src/main.rs:548:5 [INFO] [stdout] | [INFO] [stdout] 548 | fn Mul(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `mul` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Div` should have a snake case name [INFO] [stdout] --> src/main.rs:555:5 [INFO] [stdout] | [INFO] [stdout] 555 | fn Div(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `div` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Lt` should have a snake case name [INFO] [stdout] --> src/main.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 562 | fn Lt(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^ help: convert the identifier to snake case: `lt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `And` should have a snake case name [INFO] [stdout] --> src/main.rs:570:5 [INFO] [stdout] | [INFO] [stdout] 570 | fn And(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `and` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Or` should have a snake case name [INFO] [stdout] --> src/main.rs:577:5 [INFO] [stdout] | [INFO] [stdout] 577 | fn Or(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^ help: convert the identifier to snake case (notice the capitalization): `or` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Equ` should have a snake case name [INFO] [stdout] --> src/main.rs:584:5 [INFO] [stdout] | [INFO] [stdout] 584 | fn Equ(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `equ` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvT` should have a snake case name [INFO] [stdout] --> src/main.rs:613:10 [INFO] [stdout] | [INFO] [stdout] 613 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:334:8 [INFO] [stdout] | [INFO] [stdout] 334 | let mut updateConstraints = solutionOne.applyToSet(&mut vec1); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:398:7 [INFO] [stdout] | [INFO] [stdout] 398 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:523:7 [INFO] [stdout] | [INFO] [stdout] 523 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant is never constructed: `NOT` [INFO] [stdout] --> src/main.rs:16:6 [INFO] [stdout] | [INFO] [stdout] 16 | NOT{exp: Box}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant is never constructed: `AND` [INFO] [stdout] --> src/main.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | AND{exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant is never constructed: `OR` [INFO] [stdout] --> src/main.rs:18:6 [INFO] [stdout] | [INFO] [stdout] 18 | OR{exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 128 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant is never constructed: `LT` [INFO] [stdout] --> src/main.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 20 | LT{exp1: Box, exp2: Box}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant is never constructed: `IF` [INFO] [stdout] --> src/main.rs:21:6 [INFO] [stdout] | [INFO] [stdout] 21 | IF{exp1: Box, exp2: Box, exp3: Box}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `empty` [INFO] [stdout] --> src/main.rs:272:6 [INFO] [stdout] | [INFO] [stdout] 272 | fn empty() -> Substitution { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `fromPair` [INFO] [stdout] --> src/main.rs:277:6 [INFO] [stdout] | [INFO] [stdout] 277 | fn fromPair(tvar: u32, ty: Type) -> Substitution { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `ParamTy` should have a snake case name [INFO] [stdout] --> src/main.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | TyFun{ParamTy: Box, ReturnTy: Box} [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `param_ty` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `ReturnTy` should have a snake case name [INFO] [stdout] --> src/main.rs:33:29 [INFO] [stdout] | [INFO] [stdout] 33 | TyFun{ParamTy: Box, ReturnTy: Box} [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `return_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `freshVar` should have a snake case name [INFO] [stdout] --> src/main.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | fn freshVar(v: &mut u32) -> Type { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `fresh_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `getType` should have a snake case name [INFO] [stdout] --> src/main.rs:65:6 [INFO] [stdout] | [INFO] [stdout] 65 | fn getType(self) -> Type { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `get_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Env` should have a snake case name [INFO] [stdout] --> src/main.rs:88:3 [INFO] [stdout] | [INFO] [stdout] 88 | Env: HashMap [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `varNum` should have a snake case name [INFO] [stdout] --> src/main.rs:107:52 [INFO] [stdout] | [INFO] [stdout] 107 | fn annotate(term: UntypedTerm, mut tenv: TypeEnv, varNum: &mut u32) -> TypedTerm { [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `var_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy` should have a snake case name [INFO] [stdout] --> src/main.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | let paramTy = freshVar(varNum); [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `param_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy1` should have a snake case name [INFO] [stdout] --> src/main.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | let paramTy1 = paramTy.clone(); [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `param_ty1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramBinder` should have a snake case name [INFO] [stdout] --> src/main.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: p}; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy` should have a snake case name [INFO] [stdout] --> src/main.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | let paramTy = freshVar(varNum); [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `param_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramTy1` should have a snake case name [INFO] [stdout] --> src/main.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | let paramTy1 = paramTy.clone(); [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `param_ty1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `paramBinder` should have a snake case name [INFO] [stdout] --> src/main.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | let paramBinder = TypedTerm::T_VAR{ty: paramTy1, name: e1}; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `param_binder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `typeA` should have a snake case name [INFO] [stdout] --> src/main.rs:149:3 [INFO] [stdout] | [INFO] [stdout] 149 | typeA: Type, [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `type_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `typeB` should have a snake case name [INFO] [stdout] --> src/main.rs:150:3 [INFO] [stdout] | [INFO] [stdout] 150 | typeB: Type [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `type_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fromPair` should have a snake case name [INFO] [stdout] --> src/main.rs:277:6 [INFO] [stdout] | [INFO] [stdout] 277 | fn fromPair(tvar: u32, ty: Type) -> Substitution { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `from_pair` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `applyToSet` should have a snake case name [INFO] [stdout] --> src/main.rs:284:6 [INFO] [stdout] | [INFO] [stdout] 284 | fn applyToSet (&self,constraints: &mut Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `apply_to_set` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `applyOneType` should have a snake case name [INFO] [stdout] --> src/main.rs:293:6 [INFO] [stdout] | [INFO] [stdout] 293 | fn applyOneType(&self, ty: Type) -> Type { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `apply_one_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `solutionType` should have a snake case name [INFO] [stdout] --> src/main.rs:311:8 [INFO] [stdout] | [INFO] [stdout] 311 | for solutionType in self.solutions.values_mut() { [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `solutionOne` should have a snake case name [INFO] [stdout] --> src/main.rs:330:12 [INFO] [stdout] | [INFO] [stdout] 330 | let mut solutionOne = unifyOne(constraints[0].clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `solution_one` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `updateConstraints` should have a snake case name [INFO] [stdout] --> src/main.rs:334:12 [INFO] [stdout] | [INFO] [stdout] 334 | let mut updateConstraints = solutionOne.applyToSet(&mut vec1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `update_constraints` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `solutionRest` should have a snake case name [INFO] [stdout] --> src/main.rs:336:8 [INFO] [stdout] | [INFO] [stdout] 336 | let solutionRest = unify(updateConstraints); [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `solution_rest` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unifyOne` should have a snake case name [INFO] [stdout] --> src/main.rs:343:5 [INFO] [stdout] | [INFO] [stdout] 343 | fn unifyOne(constraint: Constraint) -> Substitution { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `unify_one` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unifyVar` should have a snake case name [INFO] [stdout] --> src/main.rs:356:5 [INFO] [stdout] | [INFO] [stdout] 356 | fn unifyVar(tvar: u32, ty: Type) -> Substitution { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `unify_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `typeInference` should have a snake case name [INFO] [stdout] --> src/main.rs:397:5 [INFO] [stdout] | [INFO] [stdout] 397 | fn typeInference(term: UntypedTerm) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `type_inference` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvT` should have a snake case name [INFO] [stdout] --> src/main.rs:398:11 [INFO] [stdout] | [INFO] [stdout] 398 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `TypedTerm` should have a snake case name [INFO] [stdout] --> src/main.rs:399:10 [INFO] [stdout] | [INFO] [stdout] 399 | let TypedTerm = annotate(term, EnvT, &mut 0); [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `typed_term` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Constraints` should have a snake case name [INFO] [stdout] --> src/main.rs:400:10 [INFO] [stdout] | [INFO] [stdout] 400 | let Constraints = collect(TypedTerm.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Env` should have a snake case name [INFO] [stdout] --> src/main.rs:415:3 [INFO] [stdout] | [INFO] [stdout] 415 | Env: HashMap [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Interp` should have a snake case name [INFO] [stdout] --> src/main.rs:433:5 [INFO] [stdout] | [INFO] [stdout] 433 | fn Interp(term: TypedTerm, env: &mut InterpEnv) -> TypedTerm { [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `interp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvNew` should have a snake case name [INFO] [stdout] --> src/main.rs:443:19 [INFO] [stdout] | [INFO] [stdout] 443 | let mut EnvNew = InterpEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `env_new` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvNew` should have a snake case name [INFO] [stdout] --> src/main.rs:508:19 [INFO] [stdout] | [INFO] [stdout] 508 | let mut EnvNew = InterpEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `env_new` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `InterpE` should have a snake case name [INFO] [stdout] --> src/main.rs:522:5 [INFO] [stdout] | [INFO] [stdout] 522 | fn InterpE(term: UntypedTerm) { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `interp_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvT` should have a snake case name [INFO] [stdout] --> src/main.rs:523:11 [INFO] [stdout] | [INFO] [stdout] 523 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `TypedTerm` should have a snake case name [INFO] [stdout] --> src/main.rs:524:10 [INFO] [stdout] | [INFO] [stdout] 524 | let TypedTerm = annotate(term, EnvT, &mut 0); [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `typed_term` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Constraints` should have a snake case name [INFO] [stdout] --> src/main.rs:525:10 [INFO] [stdout] | [INFO] [stdout] 525 | let Constraints = collect(TypedTerm.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `constraints` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvI` should have a snake case name [INFO] [stdout] --> src/main.rs:528:14 [INFO] [stdout] | [INFO] [stdout] 528 | let mut EnvI = InterpEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Add` should have a snake case name [INFO] [stdout] --> src/main.rs:534:5 [INFO] [stdout] | [INFO] [stdout] 534 | fn Add(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `add` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Minus` should have a snake case name [INFO] [stdout] --> src/main.rs:541:5 [INFO] [stdout] | [INFO] [stdout] 541 | fn Minus(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `minus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Mul` should have a snake case name [INFO] [stdout] --> src/main.rs:548:5 [INFO] [stdout] | [INFO] [stdout] 548 | fn Mul(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `mul` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Div` should have a snake case name [INFO] [stdout] --> src/main.rs:555:5 [INFO] [stdout] | [INFO] [stdout] 555 | fn Div(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `div` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Lt` should have a snake case name [INFO] [stdout] --> src/main.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 562 | fn Lt(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^ help: convert the identifier to snake case: `lt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `And` should have a snake case name [INFO] [stdout] --> src/main.rs:570:5 [INFO] [stdout] | [INFO] [stdout] 570 | fn And(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `and` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Or` should have a snake case name [INFO] [stdout] --> src/main.rs:577:5 [INFO] [stdout] | [INFO] [stdout] 577 | fn Or(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^ help: convert the identifier to snake case (notice the capitalization): `or` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Equ` should have a snake case name [INFO] [stdout] --> src/main.rs:584:5 [INFO] [stdout] | [INFO] [stdout] 584 | fn Equ(a1: TypedTerm, a2: TypedTerm,) -> TypedTerm { [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `equ` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `EnvT` should have a snake case name [INFO] [stdout] --> src/main.rs:613:10 [INFO] [stdout] | [INFO] [stdout] 613 | let mut EnvT = TypeEnv{Env: HashMap::new()}; [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `env_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 135 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.81s [INFO] running `Command { std: "docker" "inspect" "59f5a9a57b93f45486a2fe43464cf65c40c791e20f949a9e6004d89ec9c416dd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "59f5a9a57b93f45486a2fe43464cf65c40c791e20f949a9e6004d89ec9c416dd", kill_on_drop: false }` [INFO] [stdout] 59f5a9a57b93f45486a2fe43464cf65c40c791e20f949a9e6004d89ec9c416dd