[INFO] cloning repository https://github.com/HarumiKiyama/chibicc_rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/HarumiKiyama/chibicc_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarumiKiyama%2Fchibicc_rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarumiKiyama%2Fchibicc_rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0de6d3dac1871891d66f3f585aa8c2a7eaf9e76b
[INFO] checking HarumiKiyama/chibicc_rust against try#a3dffdb3a32d0dedc198f9de7d43173f3eb6727b for pr-136303
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarumiKiyama%2Fchibicc_rust" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/HarumiKiyama/chibicc_rust on toolchain a3dffdb3a32d0dedc198f9de7d43173f3eb6727b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/HarumiKiyama/chibicc_rust
[INFO] finished tweaking git repo https://github.com/HarumiKiyama/chibicc_rust
[INFO] tweaked toml for git repo https://github.com/HarumiKiyama/chibicc_rust written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/HarumiKiyama/chibicc_rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c80049f3b88b82089a44e0f06d0d6029d44b96b7257e55a1cd63dbc9f4c33334" "/opt/rustwide/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1ad9d6622ee33c7e22e4bd791d638deda8fef64f63bd90169139f75687d9a59c
[INFO] running `Command { std: "docker" "start" "-a" "1ad9d6622ee33c7e22e4bd791d638deda8fef64f63bd90169139f75687d9a59c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1ad9d6622ee33c7e22e4bd791d638deda8fef64f63bd90169139f75687d9a59c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1ad9d6622ee33c7e22e4bd791d638deda8fef64f63bd90169139f75687d9a59c", kill_on_drop: false }`
[INFO] [stdout] 1ad9d6622ee33c7e22e4bd791d638deda8fef64f63bd90169139f75687d9a59c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c80049f3b88b82089a44e0f06d0d6029d44b96b7257e55a1cd63dbc9f4c33334" "/opt/rustwide/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e59f7e2e1d3fd935780d88ed5d50ac3fc717c21680740f5c3ad0b99fb9365d50
[INFO] running `Command { std: "docker" "start" "-a" "e59f7e2e1d3fd935780d88ed5d50ac3fc717c21680740f5c3ad0b99fb9365d50", kill_on_drop: false }`
[INFO] [stderr]     Checking do-notation v0.1.3
[INFO] [stderr]     Checking chibicc_rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/parser.rs:620:24
[INFO] [stdout]     |
[INFO] [stdout] 620 |               let node = Node::Deref {
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 621 | |                 lhs: Box::new(self.unary()?),
[INFO] [stdout] 622 | |                 r#type: todo!("complete this")
[INFO] [stdout]     | |                         ---------------------- any code following this expression is unreachable
[INFO] [stdout] 623 | |             };
[INFO] [stdout]     | |_____________^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/parser.rs:627:24
[INFO] [stdout]     |
[INFO] [stdout] 627 |               let node = Node::Addr {
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 628 | |                 lhs: Box::new(self.unary()?),
[INFO] [stdout] 629 | |                 r#type: todo!("complete this")
[INFO] [stdout]     | |                         ---------------------- any code following this expression is unreachable
[INFO] [stdout] 630 | |             };
[INFO] [stdout]     | |_____________^ unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs, r#type } => {
[INFO] [stdout]    |                              ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs, r#type: _ } => {
[INFO] [stdout]    |                              ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs, .. } => {
[INFO] [stdout]    |                              ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val, r#type } => {
[INFO] [stdout]    |                            ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val, r#type: _ } => {
[INFO] [stdout]    |                            ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val, .. } => {
[INFO] [stdout]    |                            ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs, r#type } => {
[INFO] [stdout]    |                            ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs, r#type: _ } => {
[INFO] [stdout]    |                            ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs, .. } => {
[INFO] [stdout]    |                            ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs, r#type } => {
[INFO] [stdout]    |                              ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs, r#type: _ } => {
[INFO] [stdout]    |                              ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs, .. } => {
[INFO] [stdout]    |                              ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:93:13
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs, r#type } => {
[INFO] [stdout]    |                             ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs, r#type: _ } => {
[INFO] [stdout]    |                             ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs, .. } => {
[INFO] [stdout]    |                             ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs, r#type } => {
[INFO] [stdout]    |                                    ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs, r#type: _ } => {
[INFO] [stdout]    |                                    ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs, .. } => {
[INFO] [stdout]    |                                    ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs }
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs, r#type }
[INFO] [stdout]     |                                 ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                 ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs, .. }
[INFO] [stdout]     |                                 ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs, r#type }
[INFO] [stdout]     |                                   ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                   ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs, .. }
[INFO] [stdout]     |                                   ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs, r#type }
[INFO] [stdout]     |                                   ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                   ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs, .. }
[INFO] [stdout]     |                                   ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs, r#type }
[INFO] [stdout]     |                                   ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                   ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs, .. }
[INFO] [stdout]     |                                   ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:112:15
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs, r#type }
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs, .. }
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/parser.rs:620:24
[INFO] [stdout]     |
[INFO] [stdout] 620 |               let node = Node::Deref {
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 621 | |                 lhs: Box::new(self.unary()?),
[INFO] [stdout] 622 | |                 r#type: todo!("complete this")
[INFO] [stdout]     | |                         ---------------------- any code following this expression is unreachable
[INFO] [stdout] 623 | |             };
[INFO] [stdout]     | |_____________^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:113:15
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs, r#type }
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs, .. }
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs, r#type }
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs, .. }
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:115:15
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs } => {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs, r#type } => {
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs, r#type: _ } => {
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs, .. } => {
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/parser.rs:627:24
[INFO] [stdout]     |
[INFO] [stdout] 627 |               let node = Node::Addr {
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 628 | |                 lhs: Box::new(self.unary()?),
[INFO] [stdout] 629 | |                 r#type: todo!("complete this")
[INFO] [stdout]     | |                         ---------------------- any code following this expression is unreachable
[INFO] [stdout] 630 | |             };
[INFO] [stdout]     | |_____________^ unreachable expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs, r#type } => {
[INFO] [stdout]    |                              ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs, r#type: _ } => {
[INFO] [stdout]    |                              ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 41 |             Node::Deref { lhs, .. } => {
[INFO] [stdout]    |                              ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val, r#type } => {
[INFO] [stdout]    |                            ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val, r#type: _ } => {
[INFO] [stdout]    |                            ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 74 |             Node::Num { val, .. } => {
[INFO] [stdout]    |                            ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs, r#type } => {
[INFO] [stdout]    |                            ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs, r#type: _ } => {
[INFO] [stdout]    |                            ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Node::Neg { lhs, .. } => {
[INFO] [stdout]    |                            ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs, r#type } => {
[INFO] [stdout]    |                              ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs, r#type: _ } => {
[INFO] [stdout]    |                              ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Node::Deref { lhs, .. } => {
[INFO] [stdout]    |                              ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:93:13
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs, r#type } => {
[INFO] [stdout]    |                             ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs, r#type: _ } => {
[INFO] [stdout]    |                             ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Node::Addr { lhs, .. } => {
[INFO] [stdout]    |                             ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]   --> src/code_generator.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs } => {
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs, r#type } => {
[INFO] [stdout]    |                                    ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs, r#type: _ } => {
[INFO] [stdout]    |                                    ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Node::Assign { lhs, rhs, .. } => {
[INFO] [stdout]    |                                    ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:401:25
[INFO] [stdout]     |
[INFO] [stdout] 396 |         let mut node = self.equality()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 399 |                 lhs: Box::new(node),
[INFO] [stdout]     |                               ---- value moved here
[INFO] [stdout] 400 |                 rhs: Box::new(self.assign()?),
[INFO] [stdout] 401 |                 r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                         ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                   ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs }
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs, r#type }
[INFO] [stdout]     |                                 ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                 ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 108 |             Node::Add { lhs, rhs, .. }
[INFO] [stdout]     |                                 ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs, r#type }
[INFO] [stdout]     |                                   ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                   ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 109 |             | Node::Sub { lhs, rhs, .. }
[INFO] [stdout]     |                                   ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs, r#type }
[INFO] [stdout]     |                                   ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                   ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 110 |             | Node::Mul { lhs, rhs, .. }
[INFO] [stdout]     |                                   ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs, r#type }
[INFO] [stdout]     |                                   ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                   ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 111 |             | Node::Div { lhs, rhs, .. }
[INFO] [stdout]     |                                   ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:112:15
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs, r#type }
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 112 |             | Node::Eq { lhs, rhs, .. }
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:113:15
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs, r#type }
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 113 |             | Node::Ne { lhs, rhs, .. }
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs }
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs, r#type }
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs, r#type: _ }
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 114 |             | Node::Lt { lhs, rhs, .. }
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `r#type`
[INFO] [stdout]    --> src/code_generator.rs:115:15
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs } => {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing field `r#type`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs, r#type } => {
[INFO] [stdout]     |                                  ~~~~~~~~~~
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs, r#type: _ } => {
[INFO] [stdout]     |                                  ~~~~~~~~~~~~~
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 115 |             | Node::Le { lhs, rhs, .. } => {
[INFO] [stdout]     |                                  ~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:567:29
[INFO] [stdout]     |
[INFO] [stdout] 561 |         let mut node = self.mul()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 562 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 565 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 566 |                     rhs: Box::new(self.mul()?),
[INFO] [stdout] 567 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 565 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:574:29
[INFO] [stdout]     |
[INFO] [stdout] 561 |         let mut node = self.mul()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 562 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 572 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 573 |                     rhs: Box::new(self.mul()?),
[INFO] [stdout] 574 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:590:29
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let mut node = self.unary()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 585 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 588 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 589 |                     rhs: Box::new(self.unary()?),
[INFO] [stdout] 590 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 588 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:596:29
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let mut node = self.unary()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 585 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 594 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 595 |                     rhs: Box::new(self.unary()?),
[INFO] [stdout] 596 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 594 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]    --> src/parser.rs:619:17
[INFO] [stdout]     |
[INFO] [stdout] 619 |             let lhs = self.unary()?;
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_lhs`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/parser.rs:620:17
[INFO] [stdout]     |
[INFO] [stdout] 620 |             let node = Node::Deref {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/parser.rs:627:17
[INFO] [stdout]     |
[INFO] [stdout] 627 |             let node = Node::Addr {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `lhs`
[INFO] [stdout]    --> src/parser.rs:614:25
[INFO] [stdout]     |
[INFO] [stdout] 611 |             let lhs = self.unary()?;
[INFO] [stdout]     |                 --- move occurs because `lhs` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 612 |             let node = Node::Neg {
[INFO] [stdout] 613 |                 lhs: Box::new(lhs),
[INFO] [stdout]     |                               --- value moved here
[INFO] [stdout] 614 |                 r#type: lhs.get_type().expect("should have a type"),
[INFO] [stdout]     |                         ^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 613 |                 lhs: Box::new(lhs.clone()),
[INFO] [stdout]     |                                  ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0027, E0382.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0027`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `chibicc_rust` (lib test) due to 20 previous errors; 5 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:401:25
[INFO] [stdout]     |
[INFO] [stdout] 396 |         let mut node = self.equality()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 399 |                 lhs: Box::new(node),
[INFO] [stdout]     |                               ---- value moved here
[INFO] [stdout] 400 |                 rhs: Box::new(self.assign()?),
[INFO] [stdout] 401 |                 r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                         ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                   ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:567:29
[INFO] [stdout]     |
[INFO] [stdout] 561 |         let mut node = self.mul()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 562 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 565 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 566 |                     rhs: Box::new(self.mul()?),
[INFO] [stdout] 567 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 565 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:574:29
[INFO] [stdout]     |
[INFO] [stdout] 561 |         let mut node = self.mul()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 562 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 572 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 573 |                     rhs: Box::new(self.mul()?),
[INFO] [stdout] 574 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 572 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:590:29
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let mut node = self.unary()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 585 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 588 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 589 |                     rhs: Box::new(self.unary()?),
[INFO] [stdout] 590 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 588 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `node`
[INFO] [stdout]    --> src/parser.rs:596:29
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let mut node = self.unary()?;
[INFO] [stdout]     |             -------- move occurs because `node` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 585 |         loop {
[INFO] [stdout]     |         ---- inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 594 |                     lhs: Box::new(node),
[INFO] [stdout]     |                                   ---- value moved here
[INFO] [stdout] 595 |                     rhs: Box::new(self.unary()?),
[INFO] [stdout] 596 |                     r#type: node.get_type().expect("should have a type"),
[INFO] [stdout]     |                             ^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 594 |                     lhs: Box::new(node.clone()),
[INFO] [stdout]     |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]    --> src/parser.rs:619:17
[INFO] [stdout]     |
[INFO] [stdout] 619 |             let lhs = self.unary()?;
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_lhs`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/parser.rs:620:17
[INFO] [stdout]     |
[INFO] [stdout] 620 |             let node = Node::Deref {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/parser.rs:627:17
[INFO] [stdout]     |
[INFO] [stdout] 627 |             let node = Node::Addr {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `lhs`
[INFO] [stdout]    --> src/parser.rs:614:25
[INFO] [stdout]     |
[INFO] [stdout] 611 |             let lhs = self.unary()?;
[INFO] [stdout]     |                 --- move occurs because `lhs` has type `Node`, which does not implement the `Copy` trait
[INFO] [stdout] 612 |             let node = Node::Neg {
[INFO] [stdout] 613 |                 lhs: Box::new(lhs),
[INFO] [stdout]     |                               --- value moved here
[INFO] [stdout] 614 |                 r#type: lhs.get_type().expect("should have a type"),
[INFO] [stdout]     |                         ^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 613 |                 lhs: Box::new(lhs.clone()),
[INFO] [stdout]     |                                  ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0027, E0382.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0027`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `chibicc_rust` (lib) due to 20 previous errors; 5 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "e59f7e2e1d3fd935780d88ed5d50ac3fc717c21680740f5c3ad0b99fb9365d50", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e59f7e2e1d3fd935780d88ed5d50ac3fc717c21680740f5c3ad0b99fb9365d50", kill_on_drop: false }`
[INFO] [stdout] e59f7e2e1d3fd935780d88ed5d50ac3fc717c21680740f5c3ad0b99fb9365d50
