[INFO] cloning repository https://github.com/maekawatoshiki/rcaml
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/maekawatoshiki/rcaml" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmaekawatoshiki%2Frcaml", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmaekawatoshiki%2Frcaml'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c9824653d7acd5de76731428b52d63e41f51c3e9
[INFO] testing maekawatoshiki/rcaml against 1.54.0 for beta-1.55-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmaekawatoshiki%2Frcaml" "/workspace/builds/worker-10/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-10/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/maekawatoshiki/rcaml on toolchain 1.54.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/maekawatoshiki/rcaml
[INFO] finished tweaking git repo https://github.com/maekawatoshiki/rcaml
[INFO] tweaked toml for git repo https://github.com/maekawatoshiki/rcaml written to /workspace/builds/worker-10/source/Cargo.toml
[INFO] crate git repo https://github.com/maekawatoshiki/rcaml already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c178e1950e3c03f36170d0f67a4c011bce67e0166c0868ae460075cd0de1dae2
[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" "c178e1950e3c03f36170d0f67a4c011bce67e0166c0868ae460075cd0de1dae2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c178e1950e3c03f36170d0f67a4c011bce67e0166c0868ae460075cd0de1dae2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c178e1950e3c03f36170d0f67a4c011bce67e0166c0868ae460075cd0de1dae2", kill_on_drop: false }`
[INFO] [stdout] c178e1950e3c03f36170d0f67a4c011bce67e0166c0868ae460075cd0de1dae2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/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" "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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c88a2ad2f56c53192d2940757cfc462127c4cebd72a2b5477470e289f2f9f340
[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" "c88a2ad2f56c53192d2940757cfc462127c4cebd72a2b5477470e289f2f9f340", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.33
[INFO] [stderr]    Compiling lazy_static v0.2.9
[INFO] [stderr]    Compiling num-traits v0.1.40
[INFO] [stderr]    Compiling ansi_term v0.9.0
[INFO] [stderr]    Compiling unreachable v0.1.1
[INFO] [stderr]    Compiling ordered-float v0.5.0
[INFO] [stderr]    Compiling thread-id v2.0.0
[INFO] [stderr]    Compiling memchr v0.1.11
[INFO] [stderr]    Compiling term_size v0.3.0
[INFO] [stderr]    Compiling atty v0.2.3
[INFO] [stderr]    Compiling memchr v1.0.2
[INFO] [stderr]    Compiling rand v0.3.18
[INFO] [stderr]    Compiling thread_local v0.2.7
[INFO] [stderr]    Compiling textwrap v0.8.0
[INFO] [stderr]    Compiling nom v3.2.1
[INFO] [stderr]    Compiling aho-corasick v0.5.3
[INFO] [stderr]    Compiling clap v2.26.2
[INFO] [stderr]    Compiling regex v0.1.80
[INFO] [stderr]    Compiling semver-parser v0.6.2
[INFO] [stderr]    Compiling semver v0.4.1
[INFO] [stderr]    Compiling llvm-sys v39.0.6
[INFO] [stderr]    Compiling rcaml v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/parser.rs:69:17
[INFO] [stdout]    |
[INFO] [stdout] 69 | /                 (params
[INFO] [stdout] 70 | |                     .into_iter()
[INFO] [stdout] 71 | |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stdout] 72 | |                     .collect())
[INFO] [stdout]    | |_______________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 params
[INFO] [stdout] 70 |                     .into_iter()
[INFO] [stdout] 71 |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stdout] 72 |                     .collect()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/typing.rs:45:129
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 macro_rules! name { ($id:expr) => ( format!("\'{}", m.entry($id).or_insert_with(|| { *i += 1; *i }).clone()) ) };
[INFO] [stdout]    |                                                                                                                                 ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:233:17
[INFO] [stdout]     |
[INFO] [stdout] 233 |                 try!(unify(a, b, tyenv));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:243:17
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 try!(unify(a, b, tyenv));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:376:47
[INFO] [stdout]     |
[INFO] [stdout] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stdout]     |                                               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |         NodeKind::Tuple(ref es) => Ok(Type::Tuple(g_seq!(es))),
[INFO] [stdout]     |                                                   ---------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:398:13
[INFO] [stdout]     |
[INFO] [stdout] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:398:25
[INFO] [stdout]     |
[INFO] [stdout] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:399:13
[INFO] [stdout]     |
[INFO] [stdout] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:399:25
[INFO] [stdout]     |
[INFO] [stdout] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:403:13
[INFO] [stdout]     |
[INFO] [stdout] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:403:25
[INFO] [stdout]     |
[INFO] [stdout] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:404:13
[INFO] [stdout]     |
[INFO] [stdout] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:404:25
[INFO] [stdout]     |
[INFO] [stdout] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:408:21
[INFO] [stdout]     |
[INFO] [stdout] 408 |             let a = try!(g(lhs, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:409:21
[INFO] [stdout]     |
[INFO] [stdout] 409 |             let b = try!(g(rhs, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             try!(unify(&a, &b, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:416:29
[INFO] [stdout]     |
[INFO] [stdout] 416 |             let callee_ty = try!(g(callee, env, tyenv, idgen));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:376:47
[INFO] [stdout]     |
[INFO] [stdout] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stdout]     |                                               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |             let functy = Type::Func(g_seq!(args), Box::new(ty.clone()));
[INFO] [stdout]     |                                     ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |             try!(unify(&callee_ty, &functy, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:424:21
[INFO] [stdout]     |
[INFO] [stdout] 424 |             let t = try!(g(expr, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             try!(unify(&t, ty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:442:26
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:444:13
[INFO] [stdout]     |
[INFO] [stdout] 444 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:451:18
[INFO] [stdout]     |
[INFO] [stdout] 451 |                 &try!(g(expr, &env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:462:13
[INFO] [stdout]     |
[INFO] [stdout] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:462:25
[INFO] [stdout]     |
[INFO] [stdout] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:479:30
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:483:13
[INFO] [stdout]     |
[INFO] [stdout] 483 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:492:21
[INFO] [stdout]     |
[INFO] [stdout] 492 |             let t = try!(g(then_, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:493:21
[INFO] [stdout]     |
[INFO] [stdout] 493 |             let e = try!(g(else_, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:494:13
[INFO] [stdout]     |
[INFO] [stdout] 494 |             try!(unify(&t, &e, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:498:13
[INFO] [stdout]     |
[INFO] [stdout] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:498:25
[INFO] [stdout]     |
[INFO] [stdout] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:499:21
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let t = try!(g(e2, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:504:13
[INFO] [stdout]     |
[INFO] [stdout] 504 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:505:18
[INFO] [stdout]     |
[INFO] [stdout] 505 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:509:13
[INFO] [stdout]     |
[INFO] [stdout] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:509:25
[INFO] [stdout]     |
[INFO] [stdout] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:513:21
[INFO] [stdout]     |
[INFO] [stdout] 513 |             let t = try!(g(e3, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:514:13
[INFO] [stdout]     |
[INFO] [stdout] 514 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:515:18
[INFO] [stdout]     |
[INFO] [stdout] 515 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:519:13
[INFO] [stdout]     |
[INFO] [stdout] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:519:25
[INFO] [stdout]     |
[INFO] [stdout] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:256:17
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 try!(self.gen_fun(&mut env, &fun));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |             try!(self.gen_expr(&env, Some(main), &expr));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |         LLVMBuildRet(self.builder, try!(self.gen_int(0)));
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:354:23
[INFO] [stdout]     |
[INFO] [stdout] 354 |             let var = try!(self.declare_local_var(
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:365:23
[INFO] [stdout]     |
[INFO] [stdout] 365 |         let ret_val = try!(self.gen_expr(&env, Some(llvm_fun), &*cls.body));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:466:29
[INFO] [stdout]     |
[INFO] [stdout] 466 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:468:13
[INFO] [stdout]     |
[INFO] [stdout] 468 |             try!(self.declare_local_var(&mut newenv, cur_fun, name, LLVMTypeOf(llvm_expr_val),));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:482:29
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:484:33
[INFO] [stdout]     |
[INFO] [stdout] 484 |             let llvm_elem_val = try!(self.llvm_struct_elem_extract(llvm_expr_val, i as u32));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:486:17
[INFO] [stdout]     |
[INFO] [stdout] 486 |                 try!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:547:17
[INFO] [stdout]     |
[INFO] [stdout] 547 |         let x = try!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:606:13
[INFO] [stdout]     |
[INFO] [stdout] 606 |             try!(self.llvm_struct_alloc(actual_fv))
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:608:22
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let newcls = try!(self.llvm_struct_alloc(vec![fun, actual_fv]));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:623:19
[INFO] [stdout]     |
[INFO] [stdout] 623 |         let fun = try!(self.lookup_var(env, &cls.entry)).retrieve();
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:627:24
[INFO] [stdout]     |
[INFO] [stdout] 627 |                 v.push(try!(self.lookup_var(env, name)).get(self.builder))
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:631:28
[INFO] [stdout]     |
[INFO] [stdout] 631 |         let (new_env, _) = try!(self.make_cls(env, name.clone(), fun, fv));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:632:17
[INFO] [stdout]     |
[INFO] [stdout] 632 |         let x = try!(self.gen_expr(&new_env, cur_fun, body));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:649:17
[INFO] [stdout]     |
[INFO] [stdout] 649 |         let x = try!(self.lookup_var(env, name)).get(self.builder);
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:650:19
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let fun = try!(self.llvm_struct_elem_load(x, 0));
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:651:18
[INFO] [stdout]     |
[INFO] [stdout] 651 |         let fv = try!(self.llvm_struct_elem_load(x, 1));
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:655:28
[INFO] [stdout]     |
[INFO] [stdout] 655 |             let llvm_arg = try!(self.gen_expr(env, cur_fun, &arg));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:694:27
[INFO] [stdout]     |
[INFO] [stdout] 694 |             args_val.push(try!(self.gen_expr(env, cur_fun, &arg)))
[INFO] [stdout]     |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:708:19
[INFO] [stdout]     |
[INFO] [stdout] 708 |         let fun = try!(self.lookup_var(env, name)).retrieve();
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:729:23
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:730:23
[INFO] [stdout]     |
[INFO] [stdout] 730 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:775:23
[INFO] [stdout]     |
[INFO] [stdout] 775 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:776:23
[INFO] [stdout]     |
[INFO] [stdout] 776 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:815:23
[INFO] [stdout]     |
[INFO] [stdout] 815 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:816:23
[INFO] [stdout]     |
[INFO] [stdout] 816 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:884:24
[INFO] [stdout]     |
[INFO] [stdout] 884 |         let cond_val = try!(self.gen_expr(env, cur_fun, cond));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:895:24
[INFO] [stdout]     |
[INFO] [stdout] 895 |         let then_val = try!(self.gen_expr(env, cur_fun, then));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:904:24
[INFO] [stdout]     |
[INFO] [stdout] 904 |         let else_val = try!(self.gen_expr(env, cur_fun, els));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/codegen.rs:883:10
[INFO] [stdout]     |
[INFO] [stdout] 883 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:963:19
[INFO] [stdout]     |
[INFO] [stdout] 963 |         let val = try!(self.lookup_var(env, name));
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:976:24
[INFO] [stdout]     |
[INFO] [stdout] 976 |                 v.push(try!(e));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:982:13
[INFO] [stdout]     |
[INFO] [stdout] 982 |             try!(self.llvm_struct_alloc(es)),
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/closure.rs:138:7
[INFO] [stdout]     |
[INFO] [stdout] 138 |     }};
[INFO] [stdout]     |       ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stdout]    --> src/parser.rs:751:1
[INFO] [stdout]     |
[INFO] [stdout] 751 | / lazy_static! {
[INFO] [stdout] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stdout] 753 | |         let mut extenv = HashMap::new();
[INFO] [stdout] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 771 | |     };
[INFO] [stdout] 772 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stdout]    --> src/parser.rs:751:1
[INFO] [stdout]     |
[INFO] [stdout] 751 | / lazy_static! {
[INFO] [stdout] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stdout] 753 | |         let mut extenv = HashMap::new();
[INFO] [stdout] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 771 | |     };
[INFO] [stdout] 772 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]   --> src/typing.rs:41:22
[INFO] [stdout]    |
[INFO] [stdout] 41 |                     .trim_right_matches(" * ")
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated associated function: `trim_end_matches`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param_ty`
[INFO] [stdout]    --> src/codegen.rs:340:43
[INFO] [stdout]     |
[INFO] [stdout] 340 |             for (i, &(ref param_name, ref param_ty)) in cls.formal_fv.iter().enumerate() {
[INFO] [stdout]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_ty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/codegen.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |         ty: &Type,
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/codegen.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 |         for (i, &(ref name, ref ty)) in xs.iter().enumerate() {
[INFO] [stdout]     |                                 ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `cur_bb_has_no_terminator`
[INFO] [stdout]   --> src/codegen.rs:85:11
[INFO] [stdout]    |
[INFO] [stdout] 85 | unsafe fn cur_bb_has_no_terminator(builder: LLVMBuilderRef) -> bool {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:641:51
[INFO] [stdout]     |
[INFO] [stdout] 641 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 641 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:642:43
[INFO] [stdout]     |
[INFO] [stdout] 642 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 642 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:673:51
[INFO] [stdout]     |
[INFO] [stdout] 673 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 673 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:674:43
[INFO] [stdout]     |
[INFO] [stdout] 674 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 674 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]   --> src/codegen.rs:35:86
[INFO] [stdout]    |
[INFO] [stdout] 35 |             &ValKind::Load(v) => LLVMBuildLoad(builder, v, CString::new("").unwrap().as_ptr()),
[INFO] [stdout]    |                                                            ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]    |                                                            |
[INFO] [stdout]    |                                                            this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(temporary_cstring_as_ptr)]` on by default
[INFO] [stdout]    = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]    = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:121:48
[INFO] [stdout]     |
[INFO] [stdout] 121 |             CString::new("print_int").unwrap().as_ptr(),
[INFO] [stdout]     |             ---------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:145:50
[INFO] [stdout]     |
[INFO] [stdout] 145 |             CString::new("print_float").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:165:52
[INFO] [stdout]     |
[INFO] [stdout] 165 |             CString::new("print_newline").unwrap().as_ptr(),
[INFO] [stdout]     |             -------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:189:51
[INFO] [stdout]     |
[INFO] [stdout] 189 |             CString::new("float_of_int").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:213:45
[INFO] [stdout]     |
[INFO] [stdout] 213 |             CString::new("malloc").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:246:79
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let main = LLVMAddFunction(self.module, CString::new("main").unwrap().as_ptr(), main_ty);
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:247:82
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let bb_entry = LLVMAppendBasicBlock(main, CString::new("entry").unwrap().as_ptr());
[INFO] [stdout]     |                                                   ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:291:84
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let main = LLVMGetNamedFunction(self.module, CString::new("main").unwrap().as_ptr());
[INFO] [stdout]     |                                                      ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:317:50
[INFO] [stdout]     |
[INFO] [stdout] 317 |             CString::new(name.as_str()).unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:321:86
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let bb_entry = LLVMAppendBasicBlock(llvm_fun, CString::new("entry").unwrap().as_ptr());
[INFO] [stdout]     |                                                       ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                       |
[INFO] [stdout]     |                                                       this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:338:90
[INFO] [stdout]     |
[INFO] [stdout] 338 |             let p = LLVMBuildPointerCast(self.builder, p, pty, CString::new("").unwrap().as_ptr());
[INFO] [stdout]     |                                                                ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                                |
[INFO] [stdout]     |                                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:345:47
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/codegen.rs:430:25
[INFO] [stdout]     |
[INFO] [stdout] 430 |             _ => panic!(format!("not implemented {:?}", closure)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 430 |             _ => panic!("not implemented {:?}", closure),
[INFO] [stdout]     |                        --                             --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:451:85
[INFO] [stdout]     |
[INFO] [stdout] 451 |         let var = LLVMBuildAlloca(builder, ty, CString::new(name.as_str()).unwrap().as_ptr());
[INFO] [stdout]     |                                                ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:540:43
[INFO] [stdout]     |
[INFO] [stdout] 540 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:543:39
[INFO] [stdout]     |
[INFO] [stdout] 543 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:566:47
[INFO] [stdout]     |
[INFO] [stdout] 566 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:579:80
[INFO] [stdout]     |
[INFO] [stdout] 579 |             LLVMBuildStructGEP(self.builder, p, idx, CString::new("").unwrap().as_ptr()),
[INFO] [stdout]     |                                                      ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:580:39
[INFO] [stdout]     |
[INFO] [stdout] 580 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:592:39
[INFO] [stdout]     |
[INFO] [stdout] 592 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:675:39
[INFO] [stdout]     |
[INFO] [stdout] 675 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:704:43
[INFO] [stdout]     |
[INFO] [stdout] 704 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:716:39
[INFO] [stdout]     |
[INFO] [stdout] 716 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:728:60
[INFO] [stdout]     |
[INFO] [stdout] 728 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:774:60
[INFO] [stdout]     |
[INFO] [stdout] 774 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:814:60
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:887:79
[INFO] [stdout]     |
[INFO] [stdout] 887 |         let bb_then = LLVMAppendBasicBlock(fun, CString::new("then").unwrap().as_ptr());
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:888:79
[INFO] [stdout]     |
[INFO] [stdout] 888 |         let bb_else = LLVMAppendBasicBlock(fun, CString::new("else").unwrap().as_ptr());
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:889:81
[INFO] [stdout]     |
[INFO] [stdout] 889 |         let bb_merge = LLVMAppendBasicBlock(fun, CString::new("merge").unwrap().as_ptr());
[INFO] [stdout]     |                                                  ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:916:42
[INFO] [stdout]     |
[INFO] [stdout] 916 |             CString::new("phi").unwrap().as_ptr(),
[INFO] [stdout]     |             ---------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/codegen.rs:954:20
[INFO] [stdout]     |
[INFO] [stdout] 954 |             panic!(format!("not found variable '{}'", name))
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 954 |             panic!("not found variable '{}'", name)
[INFO] [stdout]     |                   --                             --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:983:39
[INFO] [stdout]     |
[INFO] [stdout] 983 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/codegen.rs:1033:25
[INFO] [stdout]      |
[INFO] [stdout] 1033 |             _ => panic!(format!("{:?}", self)),
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this is no longer accepted in Rust 2021
[INFO] [stdout]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1033 |             _ => panic!("{:?}", self),
[INFO] [stdout]      |                        --          --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/codegen.rs:1081:25
[INFO] [stdout]      |
[INFO] [stdout] 1081 |             _ => panic!(format!("{:?}", self)),
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this is no longer accepted in Rust 2021
[INFO] [stdout]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1081 |             _ => panic!("{:?}", self),
[INFO] [stdout]      |                        --          --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 129 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/main.rs:40:51
[INFO] [stdout]    |
[INFO] [stdout] 40 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stdout]    = note: this is no longer accepted in Rust 2021
[INFO] [stdout]    = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 40 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]    |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/main.rs:41:43
[INFO] [stdout]    |
[INFO] [stdout] 41 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is no longer accepted in Rust 2021
[INFO] [stdout]    = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 41 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]    |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 42.79s
[INFO] running `Command { std: "docker" "inspect" "c88a2ad2f56c53192d2940757cfc462127c4cebd72a2b5477470e289f2f9f340", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c88a2ad2f56c53192d2940757cfc462127c4cebd72a2b5477470e289f2f9f340", kill_on_drop: false }`
[INFO] [stdout] c88a2ad2f56c53192d2940757cfc462127c4cebd72a2b5477470e289f2f9f340
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/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" "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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1c42bc2ddcfaa551609aa990002b253adbfd7abc62a9d12ca2083eea0b11c8b5
[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" "1c42bc2ddcfaa551609aa990002b253adbfd7abc62a9d12ca2083eea0b11c8b5", kill_on_drop: false }`
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/parser.rs:69:17
[INFO] [stdout]    |
[INFO] [stdout] 69 | /                 (params
[INFO] [stdout] 70 | |                     .into_iter()
[INFO] [stdout] 71 | |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stdout] 72 | |                     .collect())
[INFO] [stdout]    | |_______________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 params
[INFO] [stdout] 70 |                     .into_iter()
[INFO] [stdout] 71 |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stdout] 72 |                     .collect()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/typing.rs:45:129
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 macro_rules! name { ($id:expr) => ( format!("\'{}", m.entry($id).or_insert_with(|| { *i += 1; *i }).clone()) ) };
[INFO] [stdout]    |                                                                                                                                 ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:233:17
[INFO] [stdout]     |
[INFO] [stdout] 233 |                 try!(unify(a, b, tyenv));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:243:17
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 try!(unify(a, b, tyenv));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:376:47
[INFO] [stdout]     |
[INFO] [stdout] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stdout]     |                                               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |         NodeKind::Tuple(ref es) => Ok(Type::Tuple(g_seq!(es))),
[INFO] [stdout]     |                                                   ---------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:398:13
[INFO] [stdout]     |
[INFO] [stdout] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:398:25
[INFO] [stdout]     |
[INFO] [stdout] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:399:13
[INFO] [stdout]     |
[INFO] [stdout] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:399:25
[INFO] [stdout]     |
[INFO] [stdout] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:403:13
[INFO] [stdout]     |
[INFO] [stdout] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:403:25
[INFO] [stdout]     |
[INFO] [stdout] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:404:13
[INFO] [stdout]     |
[INFO] [stdout] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:404:25
[INFO] [stdout]     |
[INFO] [stdout] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:408:21
[INFO] [stdout]     |
[INFO] [stdout] 408 |             let a = try!(g(lhs, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:409:21
[INFO] [stdout]     |
[INFO] [stdout] 409 |             let b = try!(g(rhs, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             try!(unify(&a, &b, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:416:29
[INFO] [stdout]     |
[INFO] [stdout] 416 |             let callee_ty = try!(g(callee, env, tyenv, idgen));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:376:47
[INFO] [stdout]     |
[INFO] [stdout] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stdout]     |                                               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |             let functy = Type::Func(g_seq!(args), Box::new(ty.clone()));
[INFO] [stdout]     |                                     ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |             try!(unify(&callee_ty, &functy, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:424:21
[INFO] [stdout]     |
[INFO] [stdout] 424 |             let t = try!(g(expr, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             try!(unify(&t, ty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:442:26
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:444:13
[INFO] [stdout]     |
[INFO] [stdout] 444 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:451:18
[INFO] [stdout]     |
[INFO] [stdout] 451 |                 &try!(g(expr, &env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:462:13
[INFO] [stdout]     |
[INFO] [stdout] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:462:25
[INFO] [stdout]     |
[INFO] [stdout] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:479:30
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:483:13
[INFO] [stdout]     |
[INFO] [stdout] 483 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:492:21
[INFO] [stdout]     |
[INFO] [stdout] 492 |             let t = try!(g(then_, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:493:21
[INFO] [stdout]     |
[INFO] [stdout] 493 |             let e = try!(g(else_, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:494:13
[INFO] [stdout]     |
[INFO] [stdout] 494 |             try!(unify(&t, &e, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:498:13
[INFO] [stdout]     |
[INFO] [stdout] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:498:25
[INFO] [stdout]     |
[INFO] [stdout] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:499:21
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let t = try!(g(e2, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:504:13
[INFO] [stdout]     |
[INFO] [stdout] 504 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:505:18
[INFO] [stdout]     |
[INFO] [stdout] 505 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:509:13
[INFO] [stdout]     |
[INFO] [stdout] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:509:25
[INFO] [stdout]     |
[INFO] [stdout] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:513:21
[INFO] [stdout]     |
[INFO] [stdout] 513 |             let t = try!(g(e3, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:514:13
[INFO] [stdout]     |
[INFO] [stdout] 514 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:515:18
[INFO] [stdout]     |
[INFO] [stdout] 515 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:519:13
[INFO] [stdout]     |
[INFO] [stdout] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:519:25
[INFO] [stdout]     |
[INFO] [stdout] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:256:17
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 try!(self.gen_fun(&mut env, &fun));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |             try!(self.gen_expr(&env, Some(main), &expr));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |         LLVMBuildRet(self.builder, try!(self.gen_int(0)));
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:354:23
[INFO] [stdout]     |
[INFO] [stdout] 354 |             let var = try!(self.declare_local_var(
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:365:23
[INFO] [stdout]     |
[INFO] [stdout] 365 |         let ret_val = try!(self.gen_expr(&env, Some(llvm_fun), &*cls.body));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:466:29
[INFO] [stdout]     |
[INFO] [stdout] 466 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:468:13
[INFO] [stdout]     |
[INFO] [stdout] 468 |             try!(self.declare_local_var(&mut newenv, cur_fun, name, LLVMTypeOf(llvm_expr_val),));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:482:29
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:484:33
[INFO] [stdout]     |
[INFO] [stdout] 484 |             let llvm_elem_val = try!(self.llvm_struct_elem_extract(llvm_expr_val, i as u32));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:486:17
[INFO] [stdout]     |
[INFO] [stdout] 486 |                 try!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:547:17
[INFO] [stdout]     |
[INFO] [stdout] 547 |         let x = try!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:606:13
[INFO] [stdout]     |
[INFO] [stdout] 606 |             try!(self.llvm_struct_alloc(actual_fv))
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:608:22
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let newcls = try!(self.llvm_struct_alloc(vec![fun, actual_fv]));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:623:19
[INFO] [stdout]     |
[INFO] [stdout] 623 |         let fun = try!(self.lookup_var(env, &cls.entry)).retrieve();
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:627:24
[INFO] [stdout]     |
[INFO] [stdout] 627 |                 v.push(try!(self.lookup_var(env, name)).get(self.builder))
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:631:28
[INFO] [stdout]     |
[INFO] [stdout] 631 |         let (new_env, _) = try!(self.make_cls(env, name.clone(), fun, fv));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:632:17
[INFO] [stdout]     |
[INFO] [stdout] 632 |         let x = try!(self.gen_expr(&new_env, cur_fun, body));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:649:17
[INFO] [stdout]     |
[INFO] [stdout] 649 |         let x = try!(self.lookup_var(env, name)).get(self.builder);
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:650:19
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let fun = try!(self.llvm_struct_elem_load(x, 0));
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:651:18
[INFO] [stdout]     |
[INFO] [stdout] 651 |         let fv = try!(self.llvm_struct_elem_load(x, 1));
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:655:28
[INFO] [stdout]     |
[INFO] [stdout] 655 |             let llvm_arg = try!(self.gen_expr(env, cur_fun, &arg));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:694:27
[INFO] [stdout]     |
[INFO] [stdout] 694 |             args_val.push(try!(self.gen_expr(env, cur_fun, &arg)))
[INFO] [stdout]     |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:708:19
[INFO] [stdout]     |
[INFO] [stdout] 708 |         let fun = try!(self.lookup_var(env, name)).retrieve();
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:729:23
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:730:23
[INFO] [stdout]     |
[INFO] [stdout] 730 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:775:23
[INFO] [stdout]     |
[INFO] [stdout] 775 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:776:23
[INFO] [stdout]     |
[INFO] [stdout] 776 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:815:23
[INFO] [stdout]     |
[INFO] [stdout] 815 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:816:23
[INFO] [stdout]     |
[INFO] [stdout] 816 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:884:24
[INFO] [stdout]     |
[INFO] [stdout] 884 |         let cond_val = try!(self.gen_expr(env, cur_fun, cond));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:895:24
[INFO] [stdout]     |
[INFO] [stdout] 895 |         let then_val = try!(self.gen_expr(env, cur_fun, then));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:904:24
[INFO] [stdout]     |
[INFO] [stdout] 904 |         let else_val = try!(self.gen_expr(env, cur_fun, els));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/codegen.rs:883:10
[INFO] [stdout]     |
[INFO] [stdout] 883 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:963:19
[INFO] [stdout]     |
[INFO] [stdout] 963 |         let val = try!(self.lookup_var(env, name));
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:976:24
[INFO] [stdout]     |
[INFO] [stdout] 976 |                 v.push(try!(e));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:982:13
[INFO] [stdout]     |
[INFO] [stdout] 982 |             try!(self.llvm_struct_alloc(es)),
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/closure.rs:138:7
[INFO] [stdout]     |
[INFO] [stdout] 138 |     }};
[INFO] [stdout]     |       ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stdout]    --> src/parser.rs:751:1
[INFO] [stdout]     |
[INFO] [stdout] 751 | / lazy_static! {
[INFO] [stdout] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stdout] 753 | |         let mut extenv = HashMap::new();
[INFO] [stdout] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 771 | |     };
[INFO] [stdout] 772 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stdout]    --> src/parser.rs:751:1
[INFO] [stdout]     |
[INFO] [stdout] 751 | / lazy_static! {
[INFO] [stdout] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stdout] 753 | |         let mut extenv = HashMap::new();
[INFO] [stdout] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 771 | |     };
[INFO] [stdout] 772 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]   --> src/typing.rs:41:22
[INFO] [stdout]    |
[INFO] [stdout] 41 |                     .trim_right_matches(" * ")
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated associated function: `trim_end_matches`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param_ty`
[INFO] [stdout]    --> src/codegen.rs:340:43
[INFO] [stdout]     |
[INFO] [stdout] 340 |             for (i, &(ref param_name, ref param_ty)) in cls.formal_fv.iter().enumerate() {
[INFO] [stdout]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_ty`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/codegen.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |         ty: &Type,
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/codegen.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 |         for (i, &(ref name, ref ty)) in xs.iter().enumerate() {
[INFO] [stdout]     |                                 ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `cur_bb_has_no_terminator`
[INFO] [stdout]   --> src/codegen.rs:85:11
[INFO] [stdout]    |
[INFO] [stdout] 85 | unsafe fn cur_bb_has_no_terminator(builder: LLVMBuilderRef) -> bool {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:641:51
[INFO] [stdout]     |
[INFO] [stdout] 641 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 641 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:642:43
[INFO] [stdout]     |
[INFO] [stdout] 642 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 642 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:673:51
[INFO] [stdout]     |
[INFO] [stdout] 673 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 673 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:674:43
[INFO] [stdout]     |
[INFO] [stdout] 674 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 674 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]   --> src/codegen.rs:35:86
[INFO] [stdout]    |
[INFO] [stdout] 35 |             &ValKind::Load(v) => LLVMBuildLoad(builder, v, CString::new("").unwrap().as_ptr()),
[INFO] [stdout]    |                                                            ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]    |                                                            |
[INFO] [stdout]    |                                                            this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(temporary_cstring_as_ptr)]` on by default
[INFO] [stdout]    = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]    = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:121:48
[INFO] [stdout]     |
[INFO] [stdout] 121 |             CString::new("print_int").unwrap().as_ptr(),
[INFO] [stdout]     |             ---------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:145:50
[INFO] [stdout]     |
[INFO] [stdout] 145 |             CString::new("print_float").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:165:52
[INFO] [stdout]     |
[INFO] [stdout] 165 |             CString::new("print_newline").unwrap().as_ptr(),
[INFO] [stdout]     |             -------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:189:51
[INFO] [stdout]     |
[INFO] [stdout] 189 |             CString::new("float_of_int").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:213:45
[INFO] [stdout]     |
[INFO] [stdout] 213 |             CString::new("malloc").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:246:79
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let main = LLVMAddFunction(self.module, CString::new("main").unwrap().as_ptr(), main_ty);
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:247:82
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let bb_entry = LLVMAppendBasicBlock(main, CString::new("entry").unwrap().as_ptr());
[INFO] [stdout]     |                                                   ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:291:84
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let main = LLVMGetNamedFunction(self.module, CString::new("main").unwrap().as_ptr());
[INFO] [stdout]     |                                                      ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:317:50
[INFO] [stdout]     |
[INFO] [stdout] 317 |             CString::new(name.as_str()).unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:321:86
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let bb_entry = LLVMAppendBasicBlock(llvm_fun, CString::new("entry").unwrap().as_ptr());
[INFO] [stdout]     |                                                       ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                       |
[INFO] [stdout]     |                                                       this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:338:90
[INFO] [stdout]     |
[INFO] [stdout] 338 |             let p = LLVMBuildPointerCast(self.builder, p, pty, CString::new("").unwrap().as_ptr());
[INFO] [stdout]     |                                                                ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                                |
[INFO] [stdout]     |                                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:345:47
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/codegen.rs:430:25
[INFO] [stdout]     |
[INFO] [stdout] 430 |             _ => panic!(format!("not implemented {:?}", closure)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 430 |             _ => panic!("not implemented {:?}", closure),
[INFO] [stdout]     |                        --                             --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:451:85
[INFO] [stdout]     |
[INFO] [stdout] 451 |         let var = LLVMBuildAlloca(builder, ty, CString::new(name.as_str()).unwrap().as_ptr());
[INFO] [stdout]     |                                                ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:540:43
[INFO] [stdout]     |
[INFO] [stdout] 540 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:543:39
[INFO] [stdout]     |
[INFO] [stdout] 543 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:566:47
[INFO] [stdout]     |
[INFO] [stdout] 566 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:579:80
[INFO] [stdout]     |
[INFO] [stdout] 579 |             LLVMBuildStructGEP(self.builder, p, idx, CString::new("").unwrap().as_ptr()),
[INFO] [stdout]     |                                                      ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:580:39
[INFO] [stdout]     |
[INFO] [stdout] 580 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:592:39
[INFO] [stdout]     |
[INFO] [stdout] 592 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:675:39
[INFO] [stdout]     |
[INFO] [stdout] 675 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:704:43
[INFO] [stdout]     |
[INFO] [stdout] 704 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:716:39
[INFO] [stdout]     |
[INFO] [stdout] 716 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:728:60
[INFO] [stdout]     |
[INFO] [stdout] 728 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling rcaml v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:774:60
[INFO] [stdout]     |
[INFO] [stdout] 774 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:814:60
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:887:79
[INFO] [stdout]     |
[INFO] [stdout] 887 |         let bb_then = LLVMAppendBasicBlock(fun, CString::new("then").unwrap().as_ptr());
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:888:79
[INFO] [stdout]     |
[INFO] [stdout] 888 |         let bb_else = LLVMAppendBasicBlock(fun, CString::new("else").unwrap().as_ptr());
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:889:81
[INFO] [stdout]     |
[INFO] [stdout] 889 |         let bb_merge = LLVMAppendBasicBlock(fun, CString::new("merge").unwrap().as_ptr());
[INFO] [stdout]     |                                                  ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:916:42
[INFO] [stdout]     |
[INFO] [stdout] 916 |             CString::new("phi").unwrap().as_ptr(),
[INFO] [stdout]     |             ---------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/codegen.rs:954:20
[INFO] [stdout]     |
[INFO] [stdout] 954 |             panic!(format!("not found variable '{}'", name))
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 954 |             panic!("not found variable '{}'", name)
[INFO] [stdout]     |                   --                             --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:983:39
[INFO] [stdout]     |
[INFO] [stdout] 983 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/codegen.rs:1033:25
[INFO] [stdout]      |
[INFO] [stdout] 1033 |             _ => panic!(format!("{:?}", self)),
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this is no longer accepted in Rust 2021
[INFO] [stdout]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1033 |             _ => panic!("{:?}", self),
[INFO] [stdout]      |                        --          --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/codegen.rs:1081:25
[INFO] [stdout]      |
[INFO] [stdout] 1081 |             _ => panic!(format!("{:?}", self)),
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this is no longer accepted in Rust 2021
[INFO] [stdout]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1081 |             _ => panic!("{:?}", self),
[INFO] [stdout]      |                        --          --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 129 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/main.rs:40:51
[INFO] [stdout]    |
[INFO] [stdout] 40 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stdout]    = note: this is no longer accepted in Rust 2021
[INFO] [stdout]    = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 40 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]    |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> src/main.rs:41:43
[INFO] [stdout]    |
[INFO] [stdout] 41 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is no longer accepted in Rust 2021
[INFO] [stdout]    = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 41 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]    |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/parser.rs:69:17
[INFO] [stdout]    |
[INFO] [stdout] 69 | /                 (params
[INFO] [stdout] 70 | |                     .into_iter()
[INFO] [stdout] 71 | |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stdout] 72 | |                     .collect())
[INFO] [stdout]    | |_______________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 params
[INFO] [stdout] 70 |                     .into_iter()
[INFO] [stdout] 71 |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stdout] 72 |                     .collect()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node::NodeKind::*`
[INFO] [stdout]    --> src/parser.rs:833:9
[INFO] [stdout]     |
[INFO] [stdout] 833 |     use node::NodeKind::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node::FuncDef`
[INFO] [stdout]    --> src/parser.rs:834:9
[INFO] [stdout]     |
[INFO] [stdout] 834 |     use node::FuncDef;
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node::BinOps::*`
[INFO] [stdout]    --> src/parser.rs:835:9
[INFO] [stdout]     |
[INFO] [stdout] 835 |     use node::BinOps::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node::BinOps::*`
[INFO] [stdout]    --> src/parser.rs:836:9
[INFO] [stdout]     |
[INFO] [stdout] 836 |     use node::BinOps::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/typing.rs:45:129
[INFO] [stdout]    |
[INFO] [stdout] 45 |                 macro_rules! name { ($id:expr) => ( format!("\'{}", m.entry($id).or_insert_with(|| { *i += 1; *i }).clone()) ) };
[INFO] [stdout]    |                                                                                                                                 ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:233:17
[INFO] [stdout]     |
[INFO] [stdout] 233 |                 try!(unify(a, b, tyenv));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:243:17
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 try!(unify(a, b, tyenv));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:376:47
[INFO] [stdout]     |
[INFO] [stdout] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stdout]     |                                               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |         NodeKind::Tuple(ref es) => Ok(Type::Tuple(g_seq!(es))),
[INFO] [stdout]     |                                                   ---------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:398:13
[INFO] [stdout]     |
[INFO] [stdout] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:398:25
[INFO] [stdout]     |
[INFO] [stdout] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:399:13
[INFO] [stdout]     |
[INFO] [stdout] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:399:25
[INFO] [stdout]     |
[INFO] [stdout] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:403:13
[INFO] [stdout]     |
[INFO] [stdout] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:403:25
[INFO] [stdout]     |
[INFO] [stdout] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:404:13
[INFO] [stdout]     |
[INFO] [stdout] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:404:25
[INFO] [stdout]     |
[INFO] [stdout] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:408:21
[INFO] [stdout]     |
[INFO] [stdout] 408 |             let a = try!(g(lhs, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:409:21
[INFO] [stdout]     |
[INFO] [stdout] 409 |             let b = try!(g(rhs, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:410:13
[INFO] [stdout]     |
[INFO] [stdout] 410 |             try!(unify(&a, &b, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:416:29
[INFO] [stdout]     |
[INFO] [stdout] 416 |             let callee_ty = try!(g(callee, env, tyenv, idgen));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:376:47
[INFO] [stdout]     |
[INFO] [stdout] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stdout]     |                                               ^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |             let functy = Type::Func(g_seq!(args), Box::new(ty.clone()));
[INFO] [stdout]     |                                     ------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:420:13
[INFO] [stdout]     |
[INFO] [stdout] 420 |             try!(unify(&callee_ty, &functy, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:424:21
[INFO] [stdout]     |
[INFO] [stdout] 424 |             let t = try!(g(expr, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             try!(unify(&t, ty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:442:26
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stdout]     |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:444:13
[INFO] [stdout]     |
[INFO] [stdout] 444 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:451:18
[INFO] [stdout]     |
[INFO] [stdout] 451 |                 &try!(g(expr, &env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:462:13
[INFO] [stdout]     |
[INFO] [stdout] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:462:25
[INFO] [stdout]     |
[INFO] [stdout] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:479:30
[INFO] [stdout]     |
[INFO] [stdout] 479 |                     Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stdout]     |                              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:483:13
[INFO] [stdout]     |
[INFO] [stdout] 483 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:492:21
[INFO] [stdout]     |
[INFO] [stdout] 492 |             let t = try!(g(then_, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:493:21
[INFO] [stdout]     |
[INFO] [stdout] 493 |             let e = try!(g(else_, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:494:13
[INFO] [stdout]     |
[INFO] [stdout] 494 |             try!(unify(&t, &e, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:498:13
[INFO] [stdout]     |
[INFO] [stdout] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:498:25
[INFO] [stdout]     |
[INFO] [stdout] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:499:21
[INFO] [stdout]     |
[INFO] [stdout] 499 |             let t = try!(g(e2, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:504:13
[INFO] [stdout]     |
[INFO] [stdout] 504 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:505:18
[INFO] [stdout]     |
[INFO] [stdout] 505 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:509:13
[INFO] [stdout]     |
[INFO] [stdout] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:509:25
[INFO] [stdout]     |
[INFO] [stdout] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:513:21
[INFO] [stdout]     |
[INFO] [stdout] 513 |             let t = try!(g(e3, env, tyenv, idgen));
[INFO] [stdout]     |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:514:13
[INFO] [stdout]     |
[INFO] [stdout] 514 |             try!(unify(
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:515:18
[INFO] [stdout]     |
[INFO] [stdout] 515 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:519:13
[INFO] [stdout]     |
[INFO] [stdout] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/typing.rs:519:25
[INFO] [stdout]     |
[INFO] [stdout] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stdout]     |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:256:17
[INFO] [stdout]     |
[INFO] [stdout] 256 |                 try!(self.gen_fun(&mut env, &fun));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |             try!(self.gen_expr(&env, Some(main), &expr));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |         LLVMBuildRet(self.builder, try!(self.gen_int(0)));
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:354:23
[INFO] [stdout]     |
[INFO] [stdout] 354 |             let var = try!(self.declare_local_var(
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:365:23
[INFO] [stdout]     |
[INFO] [stdout] 365 |         let ret_val = try!(self.gen_expr(&env, Some(llvm_fun), &*cls.body));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:466:29
[INFO] [stdout]     |
[INFO] [stdout] 466 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:468:13
[INFO] [stdout]     |
[INFO] [stdout] 468 |             try!(self.declare_local_var(&mut newenv, cur_fun, name, LLVMTypeOf(llvm_expr_val),));
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:482:29
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stdout]     |                             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:484:33
[INFO] [stdout]     |
[INFO] [stdout] 484 |             let llvm_elem_val = try!(self.llvm_struct_elem_extract(llvm_expr_val, i as u32));
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:486:17
[INFO] [stdout]     |
[INFO] [stdout] 486 |                 try!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:547:17
[INFO] [stdout]     |
[INFO] [stdout] 547 |         let x = try!(
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:606:13
[INFO] [stdout]     |
[INFO] [stdout] 606 |             try!(self.llvm_struct_alloc(actual_fv))
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:608:22
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let newcls = try!(self.llvm_struct_alloc(vec![fun, actual_fv]));
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:623:19
[INFO] [stdout]     |
[INFO] [stdout] 623 |         let fun = try!(self.lookup_var(env, &cls.entry)).retrieve();
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:627:24
[INFO] [stdout]     |
[INFO] [stdout] 627 |                 v.push(try!(self.lookup_var(env, name)).get(self.builder))
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:631:28
[INFO] [stdout]     |
[INFO] [stdout] 631 |         let (new_env, _) = try!(self.make_cls(env, name.clone(), fun, fv));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:632:17
[INFO] [stdout]     |
[INFO] [stdout] 632 |         let x = try!(self.gen_expr(&new_env, cur_fun, body));
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:649:17
[INFO] [stdout]     |
[INFO] [stdout] 649 |         let x = try!(self.lookup_var(env, name)).get(self.builder);
[INFO] [stdout]     |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:650:19
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let fun = try!(self.llvm_struct_elem_load(x, 0));
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:651:18
[INFO] [stdout]     |
[INFO] [stdout] 651 |         let fv = try!(self.llvm_struct_elem_load(x, 1));
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:655:28
[INFO] [stdout]     |
[INFO] [stdout] 655 |             let llvm_arg = try!(self.gen_expr(env, cur_fun, &arg));
[INFO] [stdout]     |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:694:27
[INFO] [stdout]     |
[INFO] [stdout] 694 |             args_val.push(try!(self.gen_expr(env, cur_fun, &arg)))
[INFO] [stdout]     |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:708:19
[INFO] [stdout]     |
[INFO] [stdout] 708 |         let fun = try!(self.lookup_var(env, name)).retrieve();
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:729:23
[INFO] [stdout]     |
[INFO] [stdout] 729 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:730:23
[INFO] [stdout]     |
[INFO] [stdout] 730 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:775:23
[INFO] [stdout]     |
[INFO] [stdout] 775 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:776:23
[INFO] [stdout]     |
[INFO] [stdout] 776 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:815:23
[INFO] [stdout]     |
[INFO] [stdout] 815 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:816:23
[INFO] [stdout]     |
[INFO] [stdout] 816 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stdout]     |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:884:24
[INFO] [stdout]     |
[INFO] [stdout] 884 |         let cond_val = try!(self.gen_expr(env, cur_fun, cond));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:895:24
[INFO] [stdout]     |
[INFO] [stdout] 895 |         let then_val = try!(self.gen_expr(env, cur_fun, then));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:904:24
[INFO] [stdout]     |
[INFO] [stdout] 904 |         let else_val = try!(self.gen_expr(env, cur_fun, els));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/codegen.rs:883:10
[INFO] [stdout]     |
[INFO] [stdout] 883 |         };
[INFO] [stdout]     |          ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:963:19
[INFO] [stdout]     |
[INFO] [stdout] 963 |         let val = try!(self.lookup_var(env, name));
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:976:24
[INFO] [stdout]     |
[INFO] [stdout] 976 |                 v.push(try!(e));
[INFO] [stdout]     |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]    --> src/codegen.rs:982:13
[INFO] [stdout]     |
[INFO] [stdout] 982 |             try!(self.llvm_struct_alloc(es)),
[INFO] [stdout]     |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]    --> src/closure.rs:138:7
[INFO] [stdout]     |
[INFO] [stdout] 138 |     }};
[INFO] [stdout]     |       ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stdout]    --> src/parser.rs:751:1
[INFO] [stdout]     |
[INFO] [stdout] 751 | / lazy_static! {
[INFO] [stdout] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stdout] 753 | |         let mut extenv = HashMap::new();
[INFO] [stdout] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 771 | |     };
[INFO] [stdout] 772 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stdout]    --> src/parser.rs:751:1
[INFO] [stdout]     |
[INFO] [stdout] 751 | / lazy_static! {
[INFO] [stdout] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stdout] 753 | |         let mut extenv = HashMap::new();
[INFO] [stdout] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stdout] ...   |
[INFO] [stdout] 771 | |     };
[INFO] [stdout] 772 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]   --> src/typing.rs:41:22
[INFO] [stdout]    |
[INFO] [stdout] 41 |                     .trim_right_matches(" * ")
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated associated function: `trim_end_matches`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remain`
[INFO] [stdout]    --> src/parser.rs:843:23
[INFO] [stdout]     |
[INFO] [stdout] 843 |         IResult::Done(remain, node) => {
[INFO] [stdout]     |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_remain`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param_ty`
[INFO] [stdout]    --> src/codegen.rs:340:43
[INFO] [stdout]     |
[INFO] [stdout] 340 |             for (i, &(ref param_name, ref param_ty)) in cls.formal_fv.iter().enumerate() {
[INFO] [stdout]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/codegen.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 |         ty: &Type,
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/codegen.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 |         for (i, &(ref name, ref ty)) in xs.iter().enumerate() {
[INFO] [stdout]     |                                 ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `cur_bb_has_no_terminator`
[INFO] [stdout]   --> src/codegen.rs:85:11
[INFO] [stdout]    |
[INFO] [stdout] 85 | unsafe fn cur_bb_has_no_terminator(builder: LLVMBuilderRef) -> bool {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:641:51
[INFO] [stdout]     |
[INFO] [stdout] 641 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 641 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:642:43
[INFO] [stdout]     |
[INFO] [stdout] 642 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 642 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:673:51
[INFO] [stdout]     |
[INFO] [stdout] 673 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 673 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                                  --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:674:43
[INFO] [stdout]     |
[INFO] [stdout] 674 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 674 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                          --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:781:47
[INFO] [stdout]     |
[INFO] [stdout] 781 |         IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 781 |         IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                              --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:782:39
[INFO] [stdout]     |
[INFO] [stdout] 782 |         IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 782 |         IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                      --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:811:47
[INFO] [stdout]     |
[INFO] [stdout] 811 |         IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 811 |         IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                              --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:812:39
[INFO] [stdout]     |
[INFO] [stdout] 812 |         IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 812 |         IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                      --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:852:47
[INFO] [stdout]     |
[INFO] [stdout] 852 |         IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 852 |         IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stdout]     |                                              --                        --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/parser.rs:853:39
[INFO] [stdout]     |
[INFO] [stdout] 853 |         IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 853 |         IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stdout]     |                                      --                --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]   --> src/codegen.rs:35:86
[INFO] [stdout]    |
[INFO] [stdout] 35 |             &ValKind::Load(v) => LLVMBuildLoad(builder, v, CString::new("").unwrap().as_ptr()),
[INFO] [stdout]    |                                                            ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]    |                                                            |
[INFO] [stdout]    |                                                            this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(temporary_cstring_as_ptr)]` on by default
[INFO] [stdout]    = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]    = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:121:48
[INFO] [stdout]     |
[INFO] [stdout] 121 |             CString::new("print_int").unwrap().as_ptr(),
[INFO] [stdout]     |             ---------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:145:50
[INFO] [stdout]     |
[INFO] [stdout] 145 |             CString::new("print_float").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:165:52
[INFO] [stdout]     |
[INFO] [stdout] 165 |             CString::new("print_newline").unwrap().as_ptr(),
[INFO] [stdout]     |             -------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:189:51
[INFO] [stdout]     |
[INFO] [stdout] 189 |             CString::new("float_of_int").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:213:45
[INFO] [stdout]     |
[INFO] [stdout] 213 |             CString::new("malloc").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:246:79
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let main = LLVMAddFunction(self.module, CString::new("main").unwrap().as_ptr(), main_ty);
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:247:82
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let bb_entry = LLVMAppendBasicBlock(main, CString::new("entry").unwrap().as_ptr());
[INFO] [stdout]     |                                                   ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:291:84
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let main = LLVMGetNamedFunction(self.module, CString::new("main").unwrap().as_ptr());
[INFO] [stdout]     |                                                      ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:317:50
[INFO] [stdout]     |
[INFO] [stdout] 317 |             CString::new(name.as_str()).unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:321:86
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let bb_entry = LLVMAppendBasicBlock(llvm_fun, CString::new("entry").unwrap().as_ptr());
[INFO] [stdout]     |                                                       ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                       |
[INFO] [stdout]     |                                                       this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:338:90
[INFO] [stdout]     |
[INFO] [stdout] 338 |             let p = LLVMBuildPointerCast(self.builder, p, pty, CString::new("").unwrap().as_ptr());
[INFO] [stdout]     |                                                                ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                                |
[INFO] [stdout]     |                                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:345:47
[INFO] [stdout]     |
[INFO] [stdout] 345 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/codegen.rs:430:25
[INFO] [stdout]     |
[INFO] [stdout] 430 |             _ => panic!(format!("not implemented {:?}", closure)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 430 |             _ => panic!("not implemented {:?}", closure),
[INFO] [stdout]     |                        --                             --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:451:85
[INFO] [stdout]     |
[INFO] [stdout] 451 |         let var = LLVMBuildAlloca(builder, ty, CString::new(name.as_str()).unwrap().as_ptr());
[INFO] [stdout]     |                                                ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:540:43
[INFO] [stdout]     |
[INFO] [stdout] 540 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:543:39
[INFO] [stdout]     |
[INFO] [stdout] 543 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:566:47
[INFO] [stdout]     |
[INFO] [stdout] 566 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:579:80
[INFO] [stdout]     |
[INFO] [stdout] 579 |             LLVMBuildStructGEP(self.builder, p, idx, CString::new("").unwrap().as_ptr()),
[INFO] [stdout]     |                                                      ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:580:39
[INFO] [stdout]     |
[INFO] [stdout] 580 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:592:39
[INFO] [stdout]     |
[INFO] [stdout] 592 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:675:39
[INFO] [stdout]     |
[INFO] [stdout] 675 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:704:43
[INFO] [stdout]     |
[INFO] [stdout] 704 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:716:39
[INFO] [stdout]     |
[INFO] [stdout] 716 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:728:60
[INFO] [stdout]     |
[INFO] [stdout] 728 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:774:60
[INFO] [stdout]     |
[INFO] [stdout] 774 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:814:60
[INFO] [stdout]     |
[INFO] [stdout] 814 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stdout]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:887:79
[INFO] [stdout]     |
[INFO] [stdout] 887 |         let bb_then = LLVMAppendBasicBlock(fun, CString::new("then").unwrap().as_ptr());
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:888:79
[INFO] [stdout]     |
[INFO] [stdout] 888 |         let bb_else = LLVMAppendBasicBlock(fun, CString::new("else").unwrap().as_ptr());
[INFO] [stdout]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:889:81
[INFO] [stdout]     |
[INFO] [stdout] 889 |         let bb_merge = LLVMAppendBasicBlock(fun, CString::new("merge").unwrap().as_ptr());
[INFO] [stdout]     |                                                  ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:916:42
[INFO] [stdout]     |
[INFO] [stdout] 916 |             CString::new("phi").unwrap().as_ptr(),
[INFO] [stdout]     |             ---------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/codegen.rs:954:20
[INFO] [stdout]     |
[INFO] [stdout] 954 |             panic!(format!("not found variable '{}'", name))
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this is no longer accepted in Rust 2021
[INFO] [stdout]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 954 |             panic!("not found variable '{}'", name)
[INFO] [stdout]     |                   --                             --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: getting the inner pointer of a temporary `CString`
[INFO] [stdout]    --> src/codegen.rs:983:39
[INFO] [stdout]     |
[INFO] [stdout] 983 |             CString::new("").unwrap().as_ptr(),
[INFO] [stdout]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stdout]     |             |
[INFO] [stdout]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stdout]     |
[INFO] [stdout]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stdout]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/codegen.rs:1033:25
[INFO] [stdout]      |
[INFO] [stdout] 1033 |             _ => panic!(format!("{:?}", self)),
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this is no longer accepted in Rust 2021
[INFO] [stdout]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1033 |             _ => panic!("{:?}", self),
[INFO] [stdout]      |                        --          --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/codegen.rs:1081:25
[INFO] [stdout]      |
[INFO] [stdout] 1081 |             _ => panic!(format!("{:?}", self)),
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this is no longer accepted in Rust 2021
[INFO] [stdout]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1081 |             _ => panic!("{:?}", self),
[INFO] [stdout]      |                        --          --
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 140 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 6.19s
[INFO] running `Command { std: "docker" "inspect" "1c42bc2ddcfaa551609aa990002b253adbfd7abc62a9d12ca2083eea0b11c8b5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c42bc2ddcfaa551609aa990002b253adbfd7abc62a9d12ca2083eea0b11c8b5", kill_on_drop: false }`
[INFO] [stdout] 1c42bc2ddcfaa551609aa990002b253adbfd7abc62a9d12ca2083eea0b11c8b5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-10/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" "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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c1cc3706f79ea9e5542984f84922c8cb90a8b3069f14849f44dfd0600431d133
[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" "c1cc3706f79ea9e5542984f84922c8cb90a8b3069f14849f44dfd0600431d133", kill_on_drop: false }`
[INFO] [stderr] warning: unnecessary parentheses around function argument
[INFO] [stderr]   --> src/parser.rs:69:17
[INFO] [stderr]    |
[INFO] [stderr] 69 | /                 (params
[INFO] [stderr] 70 | |                     .into_iter()
[INFO] [stderr] 71 | |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stderr] 72 | |                     .collect())
[INFO] [stderr]    | |_______________________________^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 69 |                 params
[INFO] [stderr] 70 |                     .into_iter()
[INFO] [stderr] 71 |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stderr] 72 |                     .collect()
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]   --> src/typing.rs:45:129
[INFO] [stderr]    |
[INFO] [stderr] 45 |                 macro_rules! name { ($id:expr) => ( format!("\'{}", m.entry($id).or_insert_with(|| { *i += 1; *i }).clone()) ) };
[INFO] [stderr]    |                                                                                                                                 ^ help: remove this semicolon
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:233:17
[INFO] [stderr]     |
[INFO] [stderr] 233 |                 try!(unify(a, b, tyenv));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:243:17
[INFO] [stderr]     |
[INFO] [stderr] 243 |                 try!(unify(a, b, tyenv));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:376:47
[INFO] [stderr]     |
[INFO] [stderr] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stderr]     |                                               ^^^
[INFO] [stderr] ...
[INFO] [stderr] 396 |         NodeKind::Tuple(ref es) => Ok(Type::Tuple(g_seq!(es))),
[INFO] [stderr]     |                                                   ---------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:398:13
[INFO] [stderr]     |
[INFO] [stderr] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:398:25
[INFO] [stderr]     |
[INFO] [stderr] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:399:13
[INFO] [stderr]     |
[INFO] [stderr] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:399:25
[INFO] [stderr]     |
[INFO] [stderr] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:403:13
[INFO] [stderr]     |
[INFO] [stderr] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:403:25
[INFO] [stderr]     |
[INFO] [stderr] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:404:13
[INFO] [stderr]     |
[INFO] [stderr] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:404:25
[INFO] [stderr]     |
[INFO] [stderr] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:408:21
[INFO] [stderr]     |
[INFO] [stderr] 408 |             let a = try!(g(lhs, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:409:21
[INFO] [stderr]     |
[INFO] [stderr] 409 |             let b = try!(g(rhs, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:410:13
[INFO] [stderr]     |
[INFO] [stderr] 410 |             try!(unify(&a, &b, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:416:29
[INFO] [stderr]     |
[INFO] [stderr] 416 |             let callee_ty = try!(g(callee, env, tyenv, idgen));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:376:47
[INFO] [stderr]     |
[INFO] [stderr] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stderr]     |                                               ^^^
[INFO] [stderr] ...
[INFO] [stderr] 417 |             let functy = Type::Func(g_seq!(args), Box::new(ty.clone()));
[INFO] [stderr]     |                                     ------------ in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:420:13
[INFO] [stderr]     |
[INFO] [stderr] 420 |             try!(unify(&callee_ty, &functy, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:424:21
[INFO] [stderr]     |
[INFO] [stderr] 424 |             let t = try!(g(expr, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:425:13
[INFO] [stderr]     |
[INFO] [stderr] 425 |             try!(unify(&t, ty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:442:26
[INFO] [stderr]     |
[INFO] [stderr] 442 |                 Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stderr]     |                          ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:444:13
[INFO] [stderr]     |
[INFO] [stderr] 444 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:450:13
[INFO] [stderr]     |
[INFO] [stderr] 450 |             try!(unify(
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:451:18
[INFO] [stderr]     |
[INFO] [stderr] 451 |                 &try!(g(expr, &env, tyenv, idgen)),
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:462:13
[INFO] [stderr]     |
[INFO] [stderr] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:462:25
[INFO] [stderr]     |
[INFO] [stderr] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:479:30
[INFO] [stderr]     |
[INFO] [stderr] 479 |                     Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stderr]     |                              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:483:13
[INFO] [stderr]     |
[INFO] [stderr] 483 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:491:13
[INFO] [stderr]     |
[INFO] [stderr] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:491:25
[INFO] [stderr]     |
[INFO] [stderr] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:492:21
[INFO] [stderr]     |
[INFO] [stderr] 492 |             let t = try!(g(then_, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:493:21
[INFO] [stderr]     |
[INFO] [stderr] 493 |             let e = try!(g(else_, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:494:13
[INFO] [stderr]     |
[INFO] [stderr] 494 |             try!(unify(&t, &e, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:498:13
[INFO] [stderr]     |
[INFO] [stderr] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:498:25
[INFO] [stderr]     |
[INFO] [stderr] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:499:21
[INFO] [stderr]     |
[INFO] [stderr] 499 |             let t = try!(g(e2, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:504:13
[INFO] [stderr]     |
[INFO] [stderr] 504 |             try!(unify(
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:505:18
[INFO] [stderr]     |
[INFO] [stderr] 505 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:509:13
[INFO] [stderr]     |
[INFO] [stderr] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:509:25
[INFO] [stderr]     |
[INFO] [stderr] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:513:21
[INFO] [stderr]     |
[INFO] [stderr] 513 |             let t = try!(g(e3, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:514:13
[INFO] [stderr]     |
[INFO] [stderr] 514 |             try!(unify(
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:515:18
[INFO] [stderr]     |
[INFO] [stderr] 515 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:519:13
[INFO] [stderr]     |
[INFO] [stderr] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:519:25
[INFO] [stderr]     |
[INFO] [stderr] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:256:17
[INFO] [stderr]     |
[INFO] [stderr] 256 |                 try!(self.gen_fun(&mut env, &fun));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:259:13
[INFO] [stderr]     |
[INFO] [stderr] 259 |             try!(self.gen_expr(&env, Some(main), &expr));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:262:36
[INFO] [stderr]     |
[INFO] [stderr] 262 |         LLVMBuildRet(self.builder, try!(self.gen_int(0)));
[INFO] [stderr]     |                                    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:354:23
[INFO] [stderr]     |
[INFO] [stderr] 354 |             let var = try!(self.declare_local_var(
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:365:23
[INFO] [stderr]     |
[INFO] [stderr] 365 |         let ret_val = try!(self.gen_expr(&env, Some(llvm_fun), &*cls.body));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:466:29
[INFO] [stderr]     |
[INFO] [stderr] 466 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:468:13
[INFO] [stderr]     |
[INFO] [stderr] 468 |             try!(self.declare_local_var(&mut newenv, cur_fun, name, LLVMTypeOf(llvm_expr_val),));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:482:29
[INFO] [stderr]     |
[INFO] [stderr] 482 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:484:33
[INFO] [stderr]     |
[INFO] [stderr] 484 |             let llvm_elem_val = try!(self.llvm_struct_elem_extract(llvm_expr_val, i as u32));
[INFO] [stderr]     |                                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:486:17
[INFO] [stderr]     |
[INFO] [stderr] 486 |                 try!(
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:547:17
[INFO] [stderr]     |
[INFO] [stderr] 547 |         let x = try!(
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:606:13
[INFO] [stderr]     |
[INFO] [stderr] 606 |             try!(self.llvm_struct_alloc(actual_fv))
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:608:22
[INFO] [stderr]     |
[INFO] [stderr] 608 |         let newcls = try!(self.llvm_struct_alloc(vec![fun, actual_fv]));
[INFO] [stderr]     |                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:623:19
[INFO] [stderr]     |
[INFO] [stderr] 623 |         let fun = try!(self.lookup_var(env, &cls.entry)).retrieve();
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:627:24
[INFO] [stderr]     |
[INFO] [stderr] 627 |                 v.push(try!(self.lookup_var(env, name)).get(self.builder))
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:631:28
[INFO] [stderr]     |
[INFO] [stderr] 631 |         let (new_env, _) = try!(self.make_cls(env, name.clone(), fun, fv));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:632:17
[INFO] [stderr]     |
[INFO] [stderr] 632 |         let x = try!(self.gen_expr(&new_env, cur_fun, body));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:649:17
[INFO] [stderr]     |
[INFO] [stderr] 649 |         let x = try!(self.lookup_var(env, name)).get(self.builder);
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:650:19
[INFO] [stderr]     |
[INFO] [stderr] 650 |         let fun = try!(self.llvm_struct_elem_load(x, 0));
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:651:18
[INFO] [stderr]     |
[INFO] [stderr] 651 |         let fv = try!(self.llvm_struct_elem_load(x, 1));
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:655:28
[INFO] [stderr]     |
[INFO] [stderr] 655 |             let llvm_arg = try!(self.gen_expr(env, cur_fun, &arg));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:694:27
[INFO] [stderr]     |
[INFO] [stderr] 694 |             args_val.push(try!(self.gen_expr(env, cur_fun, &arg)))
[INFO] [stderr]     |                           ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:708:19
[INFO] [stderr]     |
[INFO] [stderr] 708 |         let fun = try!(self.lookup_var(env, name)).retrieve();
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:729:23
[INFO] [stderr]     |
[INFO] [stderr] 729 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:730:23
[INFO] [stderr]     |
[INFO] [stderr] 730 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:775:23
[INFO] [stderr]     |
[INFO] [stderr] 775 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:776:23
[INFO] [stderr]     |
[INFO] [stderr] 776 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:815:23
[INFO] [stderr]     |
[INFO] [stderr] 815 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:816:23
[INFO] [stderr]     |
[INFO] [stderr] 816 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:884:24
[INFO] [stderr]     |
[INFO] [stderr] 884 |         let cond_val = try!(self.gen_expr(env, cur_fun, cond));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:895:24
[INFO] [stderr]     |
[INFO] [stderr] 895 |         let then_val = try!(self.gen_expr(env, cur_fun, then));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:904:24
[INFO] [stderr]     |
[INFO] [stderr] 904 |         let else_val = try!(self.gen_expr(env, cur_fun, els));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/codegen.rs:883:10
[INFO] [stderr]     |
[INFO] [stderr] 883 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:963:19
[INFO] [stderr]     |
[INFO] [stderr] 963 |         let val = try!(self.lookup_var(env, name));
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:976:24
[INFO] [stderr]     |
[INFO] [stderr] 976 |                 v.push(try!(e));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:982:13
[INFO] [stderr]     |
[INFO] [stderr] 982 |             try!(self.llvm_struct_alloc(es)),
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/closure.rs:138:7
[INFO] [stderr]     |
[INFO] [stderr] 138 |     }};
[INFO] [stderr]     |       ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stderr]    --> src/parser.rs:751:1
[INFO] [stderr]     |
[INFO] [stderr] 751 | / lazy_static! {
[INFO] [stderr] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stderr] 753 | |         let mut extenv = HashMap::new();
[INFO] [stderr] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stderr] ...   |
[INFO] [stderr] 771 | |     };
[INFO] [stderr] 772 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stderr]    --> src/parser.rs:751:1
[INFO] [stderr]     |
[INFO] [stderr] 751 | / lazy_static! {
[INFO] [stderr] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stderr] 753 | |         let mut extenv = HashMap::new();
[INFO] [stderr] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stderr] ...   |
[INFO] [stderr] 771 | |     };
[INFO] [stderr] 772 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stderr]   --> src/typing.rs:41:22
[INFO] [stderr]    |
[INFO] [stderr] 41 |                     .trim_right_matches(" * ")
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated associated function: `trim_end_matches`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `param_ty`
[INFO] [stderr]    --> src/codegen.rs:340:43
[INFO] [stderr]     |
[INFO] [stderr] 340 |             for (i, &(ref param_name, ref param_ty)) in cls.formal_fv.iter().enumerate() {
[INFO] [stderr]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_ty`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ty`
[INFO] [stderr]    --> src/codegen.rs:461:9
[INFO] [stderr]     |
[INFO] [stderr] 461 |         ty: &Type,
[INFO] [stderr]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ty`
[INFO] [stderr]    --> src/codegen.rs:483:33
[INFO] [stderr]     |
[INFO] [stderr] 483 |         for (i, &(ref name, ref ty)) in xs.iter().enumerate() {
[INFO] [stderr]     |                                 ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `cur_bb_has_no_terminator`
[INFO] [stderr]   --> src/codegen.rs:85:11
[INFO] [stderr]    |
[INFO] [stderr] 85 | unsafe fn cur_bb_has_no_terminator(builder: LLVMBuilderRef) -> bool {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:641:51
[INFO] [stderr]     |
[INFO] [stderr] 641 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 641 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                                  --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:642:43
[INFO] [stderr]     |
[INFO] [stderr] 642 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 642 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                          --                --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:673:51
[INFO] [stderr]     |
[INFO] [stderr] 673 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 673 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                                  --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:674:43
[INFO] [stderr]     |
[INFO] [stderr] 674 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 674 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                          --                --
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]   --> src/codegen.rs:35:86
[INFO] [stderr]    |
[INFO] [stderr] 35 |             &ValKind::Load(v) => LLVMBuildLoad(builder, v, CString::new("").unwrap().as_ptr()),
[INFO] [stderr]    |                                                            ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]    |                                                            |
[INFO] [stderr]    |                                                            this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(temporary_cstring_as_ptr)]` on by default
[INFO] [stderr]    = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]    = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:121:48
[INFO] [stderr]     |
[INFO] [stderr] 121 |             CString::new("print_int").unwrap().as_ptr(),
[INFO] [stderr]     |             ---------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:145:50
[INFO] [stderr]     |
[INFO] [stderr] 145 |             CString::new("print_float").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:165:52
[INFO] [stderr]     |
[INFO] [stderr] 165 |             CString::new("print_newline").unwrap().as_ptr(),
[INFO] [stderr]     |             -------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:189:51
[INFO] [stderr]     |
[INFO] [stderr] 189 |             CString::new("float_of_int").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:213:45
[INFO] [stderr]     |
[INFO] [stderr] 213 |             CString::new("malloc").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:246:79
[INFO] [stderr]     |
[INFO] [stderr] 246 |         let main = LLVMAddFunction(self.module, CString::new("main").unwrap().as_ptr(), main_ty);
[INFO] [stderr]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                 |
[INFO] [stderr]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:247:82
[INFO] [stderr]     |
[INFO] [stderr] 247 |         let bb_entry = LLVMAppendBasicBlock(main, CString::new("entry").unwrap().as_ptr());
[INFO] [stderr]     |                                                   ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                   |
[INFO] [stderr]     |                                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:291:84
[INFO] [stderr]     |
[INFO] [stderr] 291 |         let main = LLVMGetNamedFunction(self.module, CString::new("main").unwrap().as_ptr());
[INFO] [stderr]     |                                                      ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                      |
[INFO] [stderr]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:317:50
[INFO] [stderr]     |
[INFO] [stderr] 317 |             CString::new(name.as_str()).unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:321:86
[INFO] [stderr]     |
[INFO] [stderr] 321 |         let bb_entry = LLVMAppendBasicBlock(llvm_fun, CString::new("entry").unwrap().as_ptr());
[INFO] [stderr]     |                                                       ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                       |
[INFO] [stderr]     |                                                       this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:338:90
[INFO] [stderr]     |
[INFO] [stderr] 338 |             let p = LLVMBuildPointerCast(self.builder, p, pty, CString::new("").unwrap().as_ptr());
[INFO] [stderr]     |                                                                ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                                |
[INFO] [stderr]     |                                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:345:47
[INFO] [stderr]     |
[INFO] [stderr] 345 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/codegen.rs:430:25
[INFO] [stderr]     |
[INFO] [stderr] 430 |             _ => panic!(format!("not implemented {:?}", closure)),
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 430 |             _ => panic!("not implemented {:?}", closure),
[INFO] [stderr]     |                        --                             --
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:451:85
[INFO] [stderr]     |
[INFO] [stderr] 451 |         let var = LLVMBuildAlloca(builder, ty, CString::new(name.as_str()).unwrap().as_ptr());
[INFO] [stderr]     |                                                ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                |
[INFO] [stderr]     |                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:540:43
[INFO] [stderr]     |
[INFO] [stderr] 540 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:543:39
[INFO] [stderr]     |
[INFO] [stderr] 543 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:566:47
[INFO] [stderr]     |
[INFO] [stderr] 566 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:579:80
[INFO] [stderr]     |
[INFO] [stderr] 579 |             LLVMBuildStructGEP(self.builder, p, idx, CString::new("").unwrap().as_ptr()),
[INFO] [stderr]     |                                                      ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                      |
[INFO] [stderr]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:580:39
[INFO] [stderr]     |
[INFO] [stderr] 580 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:592:39
[INFO] [stderr]     |
[INFO] [stderr] 592 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:675:39
[INFO] [stderr]     |
[INFO] [stderr] 675 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:704:43
[INFO] [stderr]     |
[INFO] [stderr] 704 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:716:39
[INFO] [stderr]     |
[INFO] [stderr] 716 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:728:60
[INFO] [stderr]     |
[INFO] [stderr] 728 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stderr]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:774:60
[INFO] [stderr]     |
[INFO] [stderr] 774 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stderr]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:814:60
[INFO] [stderr]     |
[INFO] [stderr] 814 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stderr]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:887:79
[INFO] [stderr]     |
[INFO] [stderr] 887 |         let bb_then = LLVMAppendBasicBlock(fun, CString::new("then").unwrap().as_ptr());
[INFO] [stderr]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                 |
[INFO] [stderr]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:888:79
[INFO] [stderr]     |
[INFO] [stderr] 888 |         let bb_else = LLVMAppendBasicBlock(fun, CString::new("else").unwrap().as_ptr());
[INFO] [stderr]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                 |
[INFO] [stderr]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:889:81
[INFO] [stderr]     |
[INFO] [stderr] 889 |         let bb_merge = LLVMAppendBasicBlock(fun, CString::new("merge").unwrap().as_ptr());
[INFO] [stderr]     |                                                  ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                  |
[INFO] [stderr]     |                                                  this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:916:42
[INFO] [stderr]     |
[INFO] [stderr] 916 |             CString::new("phi").unwrap().as_ptr(),
[INFO] [stderr]     |             ---------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/codegen.rs:954:20
[INFO] [stderr]     |
[INFO] [stderr] 954 |             panic!(format!("not found variable '{}'", name))
[INFO] [stderr]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 954 |             panic!("not found variable '{}'", name)
[INFO] [stderr]     |                   --                             --
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:983:39
[INFO] [stderr]     |
[INFO] [stderr] 983 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/codegen.rs:1033:25
[INFO] [stderr]      |
[INFO] [stderr] 1033 |             _ => panic!(format!("{:?}", self)),
[INFO] [stderr]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this is no longer accepted in Rust 2021
[INFO] [stderr]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1033 |             _ => panic!("{:?}", self),
[INFO] [stderr]      |                        --          --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/codegen.rs:1081:25
[INFO] [stderr]      |
[INFO] [stderr] 1081 |             _ => panic!(format!("{:?}", self)),
[INFO] [stderr]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this is no longer accepted in Rust 2021
[INFO] [stderr]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1081 |             _ => panic!("{:?}", self),
[INFO] [stderr]      |                        --          --
[INFO] [stderr] 
[INFO] [stderr] warning: 129 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around function argument
[INFO] [stderr]   --> src/parser.rs:69:17
[INFO] [stderr]    |
[INFO] [stderr] 69 | /                 (params
[INFO] [stderr] 70 | |                     .into_iter()
[INFO] [stderr] 71 | |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stderr] 72 | |                     .collect())
[INFO] [stderr]    | |_______________________________^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 69 |                 params
[INFO] [stderr] 70 |                     .into_iter()
[INFO] [stderr] 71 |                     .map(|param| (param.get_ident_name().unwrap(), Type::Var(0)))
[INFO] [stderr] 72 |                     .collect()
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `node::NodeKind::*`
[INFO] [stderr]    --> src/parser.rs:833:9
[INFO] [stderr]     |
[INFO] [stderr] 833 |     use node::NodeKind::*;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `node::FuncDef`
[INFO] [stderr]    --> src/parser.rs:834:9
[INFO] [stderr]     |
[INFO] [stderr] 834 |     use node::FuncDef;
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `node::BinOps::*`
[INFO] [stderr]    --> src/parser.rs:835:9
[INFO] [stderr]     |
[INFO] [stderr] 835 |     use node::BinOps::*;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `node::BinOps::*`
[INFO] [stderr]    --> src/parser.rs:836:9
[INFO] [stderr]     |
[INFO] [stderr] 836 |     use node::BinOps::*;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]   --> src/typing.rs:45:129
[INFO] [stderr]    |
[INFO] [stderr] 45 |                 macro_rules! name { ($id:expr) => ( format!("\'{}", m.entry($id).or_insert_with(|| { *i += 1; *i }).clone()) ) };
[INFO] [stderr]    |                                                                                                                                 ^ help: remove this semicolon
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:233:17
[INFO] [stderr]     |
[INFO] [stderr] 233 |                 try!(unify(a, b, tyenv));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:243:17
[INFO] [stderr]     |
[INFO] [stderr] 243 |                 try!(unify(a, b, tyenv));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:376:47
[INFO] [stderr]     |
[INFO] [stderr] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stderr]     |                                               ^^^
[INFO] [stderr] ...
[INFO] [stderr] 396 |         NodeKind::Tuple(ref es) => Ok(Type::Tuple(g_seq!(es))),
[INFO] [stderr]     |                                                   ---------- in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:398:13
[INFO] [stderr]     |
[INFO] [stderr] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:398:25
[INFO] [stderr]     |
[INFO] [stderr] 398 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:399:13
[INFO] [stderr]     |
[INFO] [stderr] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:399:25
[INFO] [stderr]     |
[INFO] [stderr] 399 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:403:13
[INFO] [stderr]     |
[INFO] [stderr] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:403:25
[INFO] [stderr]     |
[INFO] [stderr] 403 |             try!(unify(&try!(g(lhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:404:13
[INFO] [stderr]     |
[INFO] [stderr] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:404:25
[INFO] [stderr]     |
[INFO] [stderr] 404 |             try!(unify(&try!(g(rhs, env, tyenv, idgen)), &Type::Float, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:408:21
[INFO] [stderr]     |
[INFO] [stderr] 408 |             let a = try!(g(lhs, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:409:21
[INFO] [stderr]     |
[INFO] [stderr] 409 |             let b = try!(g(rhs, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:410:13
[INFO] [stderr]     |
[INFO] [stderr] 410 |             try!(unify(&a, &b, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:416:29
[INFO] [stderr]     |
[INFO] [stderr] 416 |             let callee_ty = try!(g(callee, env, tyenv, idgen));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:376:47
[INFO] [stderr]     |
[INFO] [stderr] 376 |             for e in $es.iter() { argtys.push(try!(g(e, env, tyenv, idgen))); }
[INFO] [stderr]     |                                               ^^^
[INFO] [stderr] ...
[INFO] [stderr] 417 |             let functy = Type::Func(g_seq!(args), Box::new(ty.clone()));
[INFO] [stderr]     |                                     ------------ in this macro invocation
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `g_seq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:420:13
[INFO] [stderr]     |
[INFO] [stderr] 420 |             try!(unify(&callee_ty, &functy, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:424:21
[INFO] [stderr]     |
[INFO] [stderr] 424 |             let t = try!(g(expr, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:425:13
[INFO] [stderr]     |
[INFO] [stderr] 425 |             try!(unify(&t, ty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:442:26
[INFO] [stderr]     |
[INFO] [stderr] 442 |                 Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stderr]     |                          ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:444:13
[INFO] [stderr]     |
[INFO] [stderr] 444 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:450:13
[INFO] [stderr]     |
[INFO] [stderr] 450 |             try!(unify(
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:451:18
[INFO] [stderr]     |
[INFO] [stderr] 451 |                 &try!(g(expr, &env, tyenv, idgen)),
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:462:13
[INFO] [stderr]     |
[INFO] [stderr] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:462:25
[INFO] [stderr]     |
[INFO] [stderr] 462 |             try!(unify(&try!(g(expr, env, tyenv, idgen)), ty, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:479:30
[INFO] [stderr]     |
[INFO] [stderr] 479 |                     Box::new(try!(g(expr, &newenv_body, tyenv, idgen))),
[INFO] [stderr]     |                              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:483:13
[INFO] [stderr]     |
[INFO] [stderr] 483 |             try!(unify(&ty, &newty, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:491:13
[INFO] [stderr]     |
[INFO] [stderr] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:491:25
[INFO] [stderr]     |
[INFO] [stderr] 491 |             try!(unify(&try!(g(cond, env, tyenv, idgen)), &Type::Bool, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:492:21
[INFO] [stderr]     |
[INFO] [stderr] 492 |             let t = try!(g(then_, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:493:21
[INFO] [stderr]     |
[INFO] [stderr] 493 |             let e = try!(g(else_, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:494:13
[INFO] [stderr]     |
[INFO] [stderr] 494 |             try!(unify(&t, &e, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:498:13
[INFO] [stderr]     |
[INFO] [stderr] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:498:25
[INFO] [stderr]     |
[INFO] [stderr] 498 |             try!(unify(&try!(g(e1, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:499:21
[INFO] [stderr]     |
[INFO] [stderr] 499 |             let t = try!(g(e2, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:504:13
[INFO] [stderr]     |
[INFO] [stderr] 504 |             try!(unify(
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:505:18
[INFO] [stderr]     |
[INFO] [stderr] 505 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:509:13
[INFO] [stderr]     |
[INFO] [stderr] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:509:25
[INFO] [stderr]     |
[INFO] [stderr] 509 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:513:21
[INFO] [stderr]     |
[INFO] [stderr] 513 |             let t = try!(g(e3, env, tyenv, idgen));
[INFO] [stderr]     |                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:514:13
[INFO] [stderr]     |
[INFO] [stderr] 514 |             try!(unify(
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:515:18
[INFO] [stderr]     |
[INFO] [stderr] 515 |                 &try!(g(e1, env, tyenv, idgen)),
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:519:13
[INFO] [stderr]     |
[INFO] [stderr] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/typing.rs:519:25
[INFO] [stderr]     |
[INFO] [stderr] 519 |             try!(unify(&try!(g(e2, env, tyenv, idgen)), &Type::Int, tyenv));
[INFO] [stderr]     |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:256:17
[INFO] [stderr]     |
[INFO] [stderr] 256 |                 try!(self.gen_fun(&mut env, &fun));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:259:13
[INFO] [stderr]     |
[INFO] [stderr] 259 |             try!(self.gen_expr(&env, Some(main), &expr));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:262:36
[INFO] [stderr]     |
[INFO] [stderr] 262 |         LLVMBuildRet(self.builder, try!(self.gen_int(0)));
[INFO] [stderr]     |                                    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:354:23
[INFO] [stderr]     |
[INFO] [stderr] 354 |             let var = try!(self.declare_local_var(
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:365:23
[INFO] [stderr]     |
[INFO] [stderr] 365 |         let ret_val = try!(self.gen_expr(&env, Some(llvm_fun), &*cls.body));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:466:29
[INFO] [stderr]     |
[INFO] [stderr] 466 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:468:13
[INFO] [stderr]     |
[INFO] [stderr] 468 |             try!(self.declare_local_var(&mut newenv, cur_fun, name, LLVMTypeOf(llvm_expr_val),));
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:482:29
[INFO] [stderr]     |
[INFO] [stderr] 482 |         let llvm_expr_val = try!(self.gen_expr(env, cur_fun, expr));
[INFO] [stderr]     |                             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:484:33
[INFO] [stderr]     |
[INFO] [stderr] 484 |             let llvm_elem_val = try!(self.llvm_struct_elem_extract(llvm_expr_val, i as u32));
[INFO] [stderr]     |                                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:486:17
[INFO] [stderr]     |
[INFO] [stderr] 486 |                 try!(
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:547:17
[INFO] [stderr]     |
[INFO] [stderr] 547 |         let x = try!(
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:606:13
[INFO] [stderr]     |
[INFO] [stderr] 606 |             try!(self.llvm_struct_alloc(actual_fv))
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:608:22
[INFO] [stderr]     |
[INFO] [stderr] 608 |         let newcls = try!(self.llvm_struct_alloc(vec![fun, actual_fv]));
[INFO] [stderr]     |                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:623:19
[INFO] [stderr]     |
[INFO] [stderr] 623 |         let fun = try!(self.lookup_var(env, &cls.entry)).retrieve();
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:627:24
[INFO] [stderr]     |
[INFO] [stderr] 627 |                 v.push(try!(self.lookup_var(env, name)).get(self.builder))
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:631:28
[INFO] [stderr]     |
[INFO] [stderr] 631 |         let (new_env, _) = try!(self.make_cls(env, name.clone(), fun, fv));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:632:17
[INFO] [stderr]     |
[INFO] [stderr] 632 |         let x = try!(self.gen_expr(&new_env, cur_fun, body));
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:649:17
[INFO] [stderr]     |
[INFO] [stderr] 649 |         let x = try!(self.lookup_var(env, name)).get(self.builder);
[INFO] [stderr]     |                 ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:650:19
[INFO] [stderr]     |
[INFO] [stderr] 650 |         let fun = try!(self.llvm_struct_elem_load(x, 0));
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:651:18
[INFO] [stderr]     |
[INFO] [stderr] 651 |         let fv = try!(self.llvm_struct_elem_load(x, 1));
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:655:28
[INFO] [stderr]     |
[INFO] [stderr] 655 |             let llvm_arg = try!(self.gen_expr(env, cur_fun, &arg));
[INFO] [stderr]     |                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:694:27
[INFO] [stderr]     |
[INFO] [stderr] 694 |             args_val.push(try!(self.gen_expr(env, cur_fun, &arg)))
[INFO] [stderr]     |                           ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:708:19
[INFO] [stderr]     |
[INFO] [stderr] 708 |         let fun = try!(self.lookup_var(env, name)).retrieve();
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:729:23
[INFO] [stderr]     |
[INFO] [stderr] 729 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:730:23
[INFO] [stderr]     |
[INFO] [stderr] 730 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:775:23
[INFO] [stderr]     |
[INFO] [stderr] 775 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:776:23
[INFO] [stderr]     |
[INFO] [stderr] 776 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:815:23
[INFO] [stderr]     |
[INFO] [stderr] 815 |         let lhs_val = try!(self.gen_expr(env, cur_fun, lhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:816:23
[INFO] [stderr]     |
[INFO] [stderr] 816 |         let rhs_val = try!(self.gen_expr(env, cur_fun, rhs));
[INFO] [stderr]     |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:884:24
[INFO] [stderr]     |
[INFO] [stderr] 884 |         let cond_val = try!(self.gen_expr(env, cur_fun, cond));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:895:24
[INFO] [stderr]     |
[INFO] [stderr] 895 |         let then_val = try!(self.gen_expr(env, cur_fun, then));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:904:24
[INFO] [stderr]     |
[INFO] [stderr] 904 |         let else_val = try!(self.gen_expr(env, cur_fun, els));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/codegen.rs:883:10
[INFO] [stderr]     |
[INFO] [stderr] 883 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:963:19
[INFO] [stderr]     |
[INFO] [stderr] 963 |         let val = try!(self.lookup_var(env, name));
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:976:24
[INFO] [stderr]     |
[INFO] [stderr] 976 |                 v.push(try!(e));
[INFO] [stderr]     |                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/codegen.rs:982:13
[INFO] [stderr]     |
[INFO] [stderr] 982 |             try!(self.llvm_struct_alloc(es)),
[INFO] [stderr]     |             ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/closure.rs:138:7
[INFO] [stderr]     |
[INFO] [stderr] 138 |     }};
[INFO] [stderr]     |       ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stderr]    --> src/parser.rs:751:1
[INFO] [stderr]     |
[INFO] [stderr] 751 | / lazy_static! {
[INFO] [stderr] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stderr] 753 | |         let mut extenv = HashMap::new();
[INFO] [stderr] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stderr] ...   |
[INFO] [stderr] 771 | |     };
[INFO] [stderr] 772 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `new` function is now preferred
[INFO] [stderr]    --> src/parser.rs:751:1
[INFO] [stderr]     |
[INFO] [stderr] 751 | / lazy_static! {
[INFO] [stderr] 752 | |     pub static ref EXTENV: Mutex<HashMap<String, TypeScheme>> = {
[INFO] [stderr] 753 | |         let mut extenv = HashMap::new();
[INFO] [stderr] 754 | |         extenv.insert("print_int".to_string(),
[INFO] [stderr] ...   |
[INFO] [stderr] 771 | |     };
[INFO] [stderr] 772 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this warning originates in the macro `__lazy_static_create` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stderr]   --> src/typing.rs:41:22
[INFO] [stderr]    |
[INFO] [stderr] 41 |                     .trim_right_matches(" * ")
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated associated function: `trim_end_matches`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `remain`
[INFO] [stderr]    --> src/parser.rs:843:23
[INFO] [stderr]     |
[INFO] [stderr] 843 |         IResult::Done(remain, node) => {
[INFO] [stderr]     |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_remain`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `param_ty`
[INFO] [stderr]    --> src/codegen.rs:340:43
[INFO] [stderr]     |
[INFO] [stderr] 340 |             for (i, &(ref param_name, ref param_ty)) in cls.formal_fv.iter().enumerate() {
[INFO] [stderr]     |                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_ty`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ty`
[INFO] [stderr]    --> src/codegen.rs:461:9
[INFO] [stderr]     |
[INFO] [stderr] 461 |         ty: &Type,
[INFO] [stderr]     |         ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ty`
[INFO] [stderr]    --> src/codegen.rs:483:33
[INFO] [stderr]     |
[INFO] [stderr] 483 |         for (i, &(ref name, ref ty)) in xs.iter().enumerate() {
[INFO] [stderr]     |                                 ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `cur_bb_has_no_terminator`
[INFO] [stderr]   --> src/codegen.rs:85:11
[INFO] [stderr]    |
[INFO] [stderr] 85 | unsafe fn cur_bb_has_no_terminator(builder: LLVMBuilderRef) -> bool {
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:641:51
[INFO] [stderr]     |
[INFO] [stderr] 641 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 641 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                                  --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:642:43
[INFO] [stderr]     |
[INFO] [stderr] 642 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 642 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                          --                --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:673:51
[INFO] [stderr]     |
[INFO] [stderr] 673 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 673 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                                  --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:674:43
[INFO] [stderr]     |
[INFO] [stderr] 674 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 674 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                          --                --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:781:47
[INFO] [stderr]     |
[INFO] [stderr] 781 |         IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 781 |         IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                              --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:782:39
[INFO] [stderr]     |
[INFO] [stderr] 782 |         IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 782 |         IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                      --                --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:811:47
[INFO] [stderr]     |
[INFO] [stderr] 811 |         IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 811 |         IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                              --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:812:39
[INFO] [stderr]     |
[INFO] [stderr] 812 |         IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 812 |         IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                      --                --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:852:47
[INFO] [stderr]     |
[INFO] [stderr] 852 |         IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]     |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 852 |         IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]     |                                              --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/parser.rs:853:39
[INFO] [stderr]     |
[INFO] [stderr] 853 |         IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 853 |         IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]     |                                      --                --
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]   --> src/codegen.rs:35:86
[INFO] [stderr]    |
[INFO] [stderr] 35 |             &ValKind::Load(v) => LLVMBuildLoad(builder, v, CString::new("").unwrap().as_ptr()),
[INFO] [stderr]    |                                                            ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]    |                                                            |
[INFO] [stderr]    |                                                            this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(temporary_cstring_as_ptr)]` on by default
[INFO] [stderr]    = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]    = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:121:48
[INFO] [stderr]     |
[INFO] [stderr] 121 |             CString::new("print_int").unwrap().as_ptr(),
[INFO] [stderr]     |             ---------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:145:50
[INFO] [stderr]     |
[INFO] [stderr] 145 |             CString::new("print_float").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:165:52
[INFO] [stderr]     |
[INFO] [stderr] 165 |             CString::new("print_newline").unwrap().as_ptr(),
[INFO] [stderr]     |             -------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:189:51
[INFO] [stderr]     |
[INFO] [stderr] 189 |             CString::new("float_of_int").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:213:45
[INFO] [stderr]     |
[INFO] [stderr] 213 |             CString::new("malloc").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:246:79
[INFO] [stderr]     |
[INFO] [stderr] 246 |         let main = LLVMAddFunction(self.module, CString::new("main").unwrap().as_ptr(), main_ty);
[INFO] [stderr]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                 |
[INFO] [stderr]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:247:82
[INFO] [stderr]     |
[INFO] [stderr] 247 |         let bb_entry = LLVMAppendBasicBlock(main, CString::new("entry").unwrap().as_ptr());
[INFO] [stderr]     |                                                   ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                   |
[INFO] [stderr]     |                                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:291:84
[INFO] [stderr]     |
[INFO] [stderr] 291 |         let main = LLVMGetNamedFunction(self.module, CString::new("main").unwrap().as_ptr());
[INFO] [stderr]     |                                                      ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                      |
[INFO] [stderr]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:317:50
[INFO] [stderr]     |
[INFO] [stderr] 317 |             CString::new(name.as_str()).unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:321:86
[INFO] [stderr]     |
[INFO] [stderr] 321 |         let bb_entry = LLVMAppendBasicBlock(llvm_fun, CString::new("entry").unwrap().as_ptr());
[INFO] [stderr]     |                                                       ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                       |
[INFO] [stderr]     |                                                       this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:338:90
[INFO] [stderr]     |
[INFO] [stderr] 338 |             let p = LLVMBuildPointerCast(self.builder, p, pty, CString::new("").unwrap().as_ptr());
[INFO] [stderr]     |                                                                ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                                |
[INFO] [stderr]     |                                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:345:47
[INFO] [stderr]     |
[INFO] [stderr] 345 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/codegen.rs:430:25
[INFO] [stderr]     |
[INFO] [stderr] 430 |             _ => panic!(format!("not implemented {:?}", closure)),
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 430 |             _ => panic!("not implemented {:?}", closure),
[INFO] [stderr]     |                        --                             --
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:451:85
[INFO] [stderr]     |
[INFO] [stderr] 451 |         let var = LLVMBuildAlloca(builder, ty, CString::new(name.as_str()).unwrap().as_ptr());
[INFO] [stderr]     |                                                ------------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                |
[INFO] [stderr]     |                                                this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:540:43
[INFO] [stderr]     |
[INFO] [stderr] 540 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:543:39
[INFO] [stderr]     |
[INFO] [stderr] 543 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:566:47
[INFO] [stderr]     |
[INFO] [stderr] 566 |                     CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                     ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:579:80
[INFO] [stderr]     |
[INFO] [stderr] 579 |             LLVMBuildStructGEP(self.builder, p, idx, CString::new("").unwrap().as_ptr()),
[INFO] [stderr]     |                                                      ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                      |
[INFO] [stderr]     |                                                      this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:580:39
[INFO] [stderr]     |
[INFO] [stderr] 580 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:592:39
[INFO] [stderr]     |
[INFO] [stderr] 592 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:675:39
[INFO] [stderr]     |
[INFO] [stderr] 675 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:704:43
[INFO] [stderr]     |
[INFO] [stderr] 704 |                 CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |                 ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:716:39
[INFO] [stderr]     |
[INFO] [stderr] 716 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:728:60
[INFO] [stderr]     |
[INFO] [stderr] 728 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stderr]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:774:60
[INFO] [stderr]     |
[INFO] [stderr] 774 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stderr]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:814:60
[INFO] [stderr]     |
[INFO] [stderr] 814 |         let inst_name = |s: &str| CString::new(s).unwrap().as_ptr();
[INFO] [stderr]     |                                   ------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                   |
[INFO] [stderr]     |                                   this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:887:79
[INFO] [stderr]     |
[INFO] [stderr] 887 |         let bb_then = LLVMAppendBasicBlock(fun, CString::new("then").unwrap().as_ptr());
[INFO] [stderr]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                 |
[INFO] [stderr]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:888:79
[INFO] [stderr]     |
[INFO] [stderr] 888 |         let bb_else = LLVMAppendBasicBlock(fun, CString::new("else").unwrap().as_ptr());
[INFO] [stderr]     |                                                 ----------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                 |
[INFO] [stderr]     |                                                 this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:889:81
[INFO] [stderr]     |
[INFO] [stderr] 889 |         let bb_merge = LLVMAppendBasicBlock(fun, CString::new("merge").unwrap().as_ptr());
[INFO] [stderr]     |                                                  ------------------------------ ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |                                                  |
[INFO] [stderr]     |                                                  this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:916:42
[INFO] [stderr]     |
[INFO] [stderr] 916 |             CString::new("phi").unwrap().as_ptr(),
[INFO] [stderr]     |             ---------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/codegen.rs:954:20
[INFO] [stderr]     |
[INFO] [stderr] 954 |             panic!(format!("not found variable '{}'", name))
[INFO] [stderr]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this is no longer accepted in Rust 2021
[INFO] [stderr]     = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 954 |             panic!("not found variable '{}'", name)
[INFO] [stderr]     |                   --                             --
[INFO] [stdout] 
[INFO] [stderr] 
[INFO] [stdout] running 3 tests
[INFO] [stderr] warning: getting the inner pointer of a temporary `CString`
[INFO] [stderr]    --> src/codegen.rs:983:39
[INFO] [stderr]     |
[INFO] [stderr] 983 |             CString::new("").unwrap().as_ptr(),
[INFO] [stderr]     |             ------------------------- ^^^^^^ this pointer will be invalid
[INFO] [stderr]     |             |
[INFO] [stderr]     |             this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
[INFO] [stderr]     |
[INFO] [stderr]     = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
[INFO] [stderr]     = help: for more information, see https://doc.rust-lang.org/reference/destructors.html
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/codegen.rs:1033:25
[INFO] [stderr]      |
[INFO] [stderr] 1033 |             _ => panic!(format!("{:?}", self)),
[INFO] [stderr]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this is no longer accepted in Rust 2021
[INFO] [stderr]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1033 |             _ => panic!("{:?}", self),
[INFO] [stderr]      |                        --          --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/codegen.rs:1081:25
[INFO] [stderr]      |
[INFO] [stderr] 1081 |             _ => panic!(format!("{:?}", self)),
[INFO] [stderr]      |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this is no longer accepted in Rust 2021
[INFO] [stderr]      = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1081 |             _ => panic!("{:?}", self),
[INFO] [stderr]      |                        --          --
[INFO] [stderr] 
[INFO] [stderr] warning: 140 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]   --> src/main.rs:40:51
[INFO] [stderr]    |
[INFO] [stderr] 40 |             IResult::Incomplete(needed) => panic!(format!("imcomplete: {:?}", needed)),
[INFO] [stderr]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_fmt_panic)]` on by default
[INFO] [stderr]    = note: this is no longer accepted in Rust 2021
[INFO] [stderr]    = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]    |
[INFO] [stderr] 40 |             IResult::Incomplete(needed) => panic!("imcomplete: {:?}", needed),
[INFO] [stderr]    |                                                  --                        --
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]   --> src/main.rs:41:43
[INFO] [stderr]    |
[INFO] [stderr] 41 |             IResult::Error(err) => panic!(format!("error: {:?}", err)),
[INFO] [stderr]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this is no longer accepted in Rust 2021
[INFO] [stderr]    = note: the panic!() macro supports formatting, so there's no need for the format!() macro here
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]    |
[INFO] [stderr] 41 |             IResult::Error(err) => panic!("error: {:?}", err),
[INFO] [stderr]    |                                          --                --
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[INFO] [stderr] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.06s
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/rcaml-3321460de2ce3e4e)
[INFO] [stdout] test parser::test_parse_simple_expr ... ok
[INFO] [stdout] test parser::test_parse_module_item ... ok
[INFO] [stderr] error: test failed, to rerun pass '--lib'
[INFO] [stdout] test parser::test_type_infer ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- parser::test_type_infer stdout ----
[INFO] [stdout] thread 'parser::test_type_infer' panicked at 'assertion failed: `(left == right)`
[INFO] [stdout]   left: `"unit"`,
[INFO] [stdout]  right: `"((('1 -> '1) -> '2) -> '2)"`', src/parser.rs:856:5
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x55913ad15d80 - std::backtrace_rs::backtrace::libunwind::trace::h34055254b57d8e79
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
[INFO] [stdout]    1:     0x55913ad15d80 - std::backtrace_rs::backtrace::trace_unsynchronized::h8f1e3fbd9afff6ec
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x55913ad15d80 - std::sys_common::backtrace::_print_fmt::h3a99a796b770c360
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:67:5
[INFO] [stdout]    3:     0x55913ad15d80 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h32d1f94a80615d18
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:46:22
[INFO] [stdout]    4:     0x55913ad398fc - core::fmt::write::h306731c068f7162c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/fmt/mod.rs:1110:17
[INFO] [stdout]    5:     0x55913ad12bd5 - std::io::Write::write_fmt::h87f19b0a2cd190bc
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/io/mod.rs:1588:15
[INFO] [stdout]    6:     0x55913ad17eeb - std::sys_common::backtrace::_print::h5abaa2601a852287
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:49:5
[INFO] [stdout]    7:     0x55913ad17eeb - std::sys_common::backtrace::print::h8d81445442bb638f
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:36:9
[INFO] [stdout]    8:     0x55913ad17eeb - std::panicking::default_hook::{{closure}}::hcfe804496a9fa747
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:208:50
[INFO] [stdout]    9:     0x55913ad179fc - std::panicking::default_hook::hbea8e3ccf2ba8901
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:222:9
[INFO] [stdout]   10:     0x55913ad185b4 - std::panicking::rust_panic_with_hook::h7ee9e1a2d0f8975a
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:622:17
[INFO] [stdout]   11:     0x55913ad18097 - std::panicking::begin_panic_handler::{{closure}}::h8ab3b4491718b2c7
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:519:13
[INFO] [stdout]   12:     0x55913ad1627c - std::sys_common::backtrace::__rust_end_short_backtrace::hd489062ffa586a9f
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:141:18
[INFO] [stdout]   13:     0x55913ad17ff9 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:515:5
[INFO] [stdout]   14:     0x55913abff651 - core::panicking::panic_fmt::hca6330e3e14086b4
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/panicking.rs:92:14
[INFO] [stdout]   15:     0x55913ad38218 - core::panicking::assert_failed_inner::h33b45280069a80ed
[INFO] [stdout]   16:     0x55913ac754ee - core::panicking::assert_failed::hd96cca351627983c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/panicking.rs:117:5
[INFO] [stdout]   17:     0x55913ac62b29 - rcaml::parser::test_type_infer::h97d184c6def7ad1e
[INFO] [stdout]                                at /opt/rustwide/workdir/src/parser.rs:856:5
[INFO] [stdout]   18:     0x55913ac629ba - rcaml::parser::test_type_infer::{{closure}}::h1b9d9e8c31fd20a2
[INFO] [stdout]                                at /opt/rustwide/workdir/src/parser.rs:832:1
[INFO] [stdout]   19:     0x55913ac9518e - core::ops::function::FnOnce::call_once::h30bcefa3bc4512bd
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   20:     0x55913acc8493 - core::ops::function::FnOnce::call_once::h152e7e439ff59e19
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   21:     0x55913acc8493 - test::__rust_begin_short_backtrace::h0908f3b1fdbb72ab
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:577:5
[INFO] [stdout]   22:     0x55913acc6f50 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hf6d2a51e5587546c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   23:     0x55913acc6f50 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h8af660f3a89ef593
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:347:9
[INFO] [stdout]   24:     0x55913acc6f50 - std::panicking::try::do_call::hd36aef60f84b6d36
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:401:40
[INFO] [stdout]   25:     0x55913acc6f50 - std::panicking::try::h9932b4480e69817c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:365:19
[INFO] [stdout]   26:     0x55913acc6f50 - std::panic::catch_unwind::h6aa177099cfff5f8
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:434:14
[INFO] [stdout]   27:     0x55913acc6f50 - test::run_test_in_process::h5884d6f2d99e20c3
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:600:18
[INFO] [stdout]   28:     0x55913acc6f50 - test::run_test::run_test_inner::{{closure}}::h6fdc58c6d5f5b6e3
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:492:39
[INFO] [stdout]   29:     0x55913aca0602 - test::run_test::run_test_inner::{{closure}}::h408365d67a78ade8
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:519:37
[INFO] [stdout]   30:     0x55913aca0602 - std::sys_common::backtrace::__rust_begin_short_backtrace::hb560b77c4f701523
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:125:18
[INFO] [stdout]   31:     0x55913aca41b8 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hf2e7831dad93c597
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/thread/mod.rs:481:17
[INFO] [stdout]   32:     0x55913aca41b8 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd2e08783d8be4d02
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:347:9
[INFO] [stdout]   33:     0x55913aca41b8 - std::panicking::try::do_call::h062597b7acfd6b82
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:401:40
[INFO] [stdout]   34:     0x55913aca41b8 - std::panicking::try::h0d7b79db04c14552
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:365:19
[INFO] [stdout]   35:     0x55913aca41b8 - std::panic::catch_unwind::hb01a0b5e7c8cd43b
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:434:14
[INFO] [stdout]   36:     0x55913aca41b8 - std::thread::Builder::spawn_unchecked::{{closure}}::h5bde48cc887e0d1e
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/thread/mod.rs:480:30
[INFO] [stdout]   37:     0x55913aca41b8 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h745ea30807a29e55
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   38:     0x55913ad1d0d7 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7ece6cfefaff1005
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   39:     0x55913ad1d0d7 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb8b48e55c21f193e
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   40:     0x55913ad1d0d7 - std::sys::unix::thread::Thread::new::thread_start::h8c7c4450dba62914
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys/unix/thread.rs:71:17
[INFO] [stdout]   41:     0x7f7659abe609 - start_thread
[INFO] [stdout]   42:     0x7f765987b293 - clone
[INFO] [stdout]   43:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     parser::test_type_infer
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c1cc3706f79ea9e5542984f84922c8cb90a8b3069f14849f44dfd0600431d133", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c1cc3706f79ea9e5542984f84922c8cb90a8b3069f14849f44dfd0600431d133", kill_on_drop: false }`
[INFO] [stdout] c1cc3706f79ea9e5542984f84922c8cb90a8b3069f14849f44dfd0600431d133
