[INFO] updating cached repository chklauser/rust-nvm [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/chklauser/rust-nvm [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/chklauser/rust-nvm" "work/ex/clippy-test-run/sources/stable/gh/chklauser/rust-nvm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/chklauser/rust-nvm'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/chklauser/rust-nvm" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/chklauser/rust-nvm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/chklauser/rust-nvm'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 50e64e580fc3ed48073e106e0a1dd586d52f4576 [INFO] sha for GitHub repo chklauser/rust-nvm: 50e64e580fc3ed48073e106e0a1dd586d52f4576 [INFO] validating manifest of chklauser/rust-nvm on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of chklauser/rust-nvm on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing chklauser/rust-nvm [INFO] finished frobbing chklauser/rust-nvm [INFO] frobbed toml for chklauser/rust-nvm written to work/ex/clippy-test-run/sources/stable/gh/chklauser/rust-nvm/Cargo.toml [INFO] started frobbing chklauser/rust-nvm [INFO] finished frobbing chklauser/rust-nvm [INFO] frobbed toml for chklauser/rust-nvm written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/chklauser/rust-nvm/Cargo.toml [INFO] crate chklauser/rust-nvm has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting chklauser/rust-nvm against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/chklauser/rust-nvm:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] dd1bba71c060f86279b99731fe8b16f97dd35a108178a01aaf06a4821b9e7597 [INFO] running `"docker" "start" "-a" "dd1bba71c060f86279b99731fe8b16f97dd35a108178a01aaf06a4821b9e7597"` [INFO] [stderr] Checking libc v0.2.14 [INFO] [stderr] Checking regex-syntax v0.3.4 [INFO] [stderr] Checking combine v2.0.0 [INFO] [stderr] Checking thread-id v2.0.0 [INFO] [stderr] Checking memchr v0.1.11 [INFO] [stderr] Checking term_size v0.2.1 [INFO] [stderr] Checking thread_local v0.2.6 [INFO] [stderr] Checking clap v2.19.1 [INFO] [stderr] Checking aho-corasick v0.5.2 [INFO] [stderr] Checking regex v0.1.73 [INFO] [stderr] Checking combine-language v2.0.0 [INFO] [stderr] Checking env_logger v0.3.4 [INFO] [stderr] Checking nvm v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | num_parameters: num_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_parameters` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | num_registers: num_registers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_registers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | instructions: instructions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `instructions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/machine.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/machine.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | routine: routine, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `routine` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frontend/codegen.rs:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | program_ctx: program_ctx, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `program_ctx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | num_parameters: num_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_parameters` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | num_registers: num_registers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_registers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | instructions: instructions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `instructions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/bytecode.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/machine.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm/machine.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | routine: routine, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `routine` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frontend/codegen.rs:584:9 [INFO] [stderr] | [INFO] [stderr] 584 | program_ctx: program_ctx, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `program_ctx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vm/bytecode.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / return Routine { [INFO] [stderr] 55 | | num_parameters: num_parameters, [INFO] [stderr] 56 | | num_registers: num_registers, [INFO] [stderr] 57 | | instructions: instructions, [INFO] [stderr] 58 | | name: name, [INFO] [stderr] 59 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 54 | Routine { [INFO] [stderr] 55 | num_parameters: num_parameters, [INFO] [stderr] 56 | num_registers: num_registers, [INFO] [stderr] 57 | instructions: instructions, [INFO] [stderr] 58 | name: name, [INFO] [stderr] 59 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/vm/machine.rs:109:1 [INFO] [stderr] | [INFO] [stderr] 109 | / macro_rules! try_check{ [INFO] [stderr] 110 | | ($e:expr) => (e) [INFO] [stderr] 111 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vm/machine.rs:312:5 [INFO] [stderr] | [INFO] [stderr] 312 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vm/machine.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/frontend/parser.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | r [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/frontend/parser.rs:176:21 [INFO] [stderr] | [INFO] [stderr] 176 | let r = Decl::Routine(id, args, stmts); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/frontend/parser.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | p [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/frontend/parser.rs:183:17 [INFO] [stderr] | [INFO] [stderr] 183 | let p = Program(ds); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | return self.instructions.len() - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.instructions.len() - 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | return self.instructions.len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.instructions.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / return self.register_map [INFO] [stderr] 43 | | .get(&name) [INFO] [stderr] 44 | | .map_or_else(// No register found, try parameter [INFO] [stderr] 45 | | || self.parameter_map.get(&name).map(|v| Parameter(*v)), [INFO] [stderr] 46 | | // Some register found [INFO] [stderr] 47 | | |v| Some(Register(*v))) [INFO] [stderr] 48 | | .ok_or_else(|| UnresolvedSymbol(name.to_string())); [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 42 | self.register_map [INFO] [stderr] 43 | .get(&name) [INFO] [stderr] 44 | .map_or_else(// No register found, try parameter [INFO] [stderr] 45 | || self.parameter_map.get(&name).map(|v| Parameter(*v)), [INFO] [stderr] 46 | // Some register found [INFO] [stderr] 47 | |v| Some(Register(*v))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:424:5 [INFO] [stderr] | [INFO] [stderr] 424 | return Ok(final_register_names); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(final_register_names)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:588:5 [INFO] [stderr] | [INFO] [stderr] 588 | return Ok((ctx.vars, ctx.max_stack)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((ctx.vars, ctx.max_stack))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/frontend/codegen.rs:447:17 [INFO] [stderr] | [INFO] [stderr] 447 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:632:13 [INFO] [stderr] | [INFO] [stderr] 632 | return map; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `map` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/mod.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | return Ok(program); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(program)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vm/bytecode.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / return Routine { [INFO] [stderr] 55 | | num_parameters: num_parameters, [INFO] [stderr] 56 | | num_registers: num_registers, [INFO] [stderr] 57 | | instructions: instructions, [INFO] [stderr] 58 | | name: name, [INFO] [stderr] 59 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 54 | Routine { [INFO] [stderr] 55 | num_parameters: num_parameters, [INFO] [stderr] 56 | num_registers: num_registers, [INFO] [stderr] 57 | instructions: instructions, [INFO] [stderr] 58 | name: name, [INFO] [stderr] 59 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/vm/machine.rs:109:1 [INFO] [stderr] | [INFO] [stderr] 109 | / macro_rules! try_check{ [INFO] [stderr] 110 | | ($e:expr) => (e) [INFO] [stderr] 111 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vm/machine.rs:312:5 [INFO] [stderr] | [INFO] [stderr] 312 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/vm/machine.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/frontend/parser.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | r [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/frontend/parser.rs:176:21 [INFO] [stderr] | [INFO] [stderr] 176 | let r = Decl::Routine(id, args, stmts); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/frontend/parser.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | p [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/frontend/parser.rs:183:17 [INFO] [stderr] | [INFO] [stderr] 183 | let p = Program(ds); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | return self.instructions.len() - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.instructions.len() - 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | return self.instructions.len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.instructions.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / return self.register_map [INFO] [stderr] 43 | | .get(&name) [INFO] [stderr] 44 | | .map_or_else(// No register found, try parameter [INFO] [stderr] 45 | | || self.parameter_map.get(&name).map(|v| Parameter(*v)), [INFO] [stderr] 46 | | // Some register found [INFO] [stderr] 47 | | |v| Some(Register(*v))) [INFO] [stderr] 48 | | .ok_or_else(|| UnresolvedSymbol(name.to_string())); [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 42 | self.register_map [INFO] [stderr] 43 | .get(&name) [INFO] [stderr] 44 | .map_or_else(// No register found, try parameter [INFO] [stderr] 45 | || self.parameter_map.get(&name).map(|v| Parameter(*v)), [INFO] [stderr] 46 | // Some register found [INFO] [stderr] 47 | |v| Some(Register(*v))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:424:5 [INFO] [stderr] | [INFO] [stderr] 424 | return Ok(final_register_names); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(final_register_names)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:588:5 [INFO] [stderr] | [INFO] [stderr] 588 | return Ok((ctx.vars, ctx.max_stack)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((ctx.vars, ctx.max_stack))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/frontend/codegen.rs:447:17 [INFO] [stderr] | [INFO] [stderr] 447 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/codegen.rs:632:13 [INFO] [stderr] | [INFO] [stderr] 632 | return map; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `map` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/frontend/mod.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | return Ok(program); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(program)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tests.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | / return match n { [INFO] [stderr] 372 | | 0 => { [INFO] [stderr] 373 | | Ok(as_program(bytecode::Routine::new("fib0".to_owned(), [INFO] [stderr] 374 | | 1, [INFO] [stderr] ... | [INFO] [stderr] 432 | | } [INFO] [stderr] 433 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 371 | match n { [INFO] [stderr] 372 | 0 => { [INFO] [stderr] 373 | Ok(as_program(bytecode::Routine::new("fib0".to_owned(), [INFO] [stderr] 374 | 1, [INFO] [stderr] 375 | 0, [INFO] [stderr] 376 | vec![bytecode::Instruction::Lit(0, 0), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tests.rs:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | / return match n { [INFO] [stderr] 438 | | 0 => 0, [INFO] [stderr] 439 | | 1 => a, [INFO] [stderr] 440 | | 2 => a + b, [INFO] [stderr] ... | [INFO] [stderr] 450 | | } [INFO] [stderr] 451 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 437 | match n { [INFO] [stderr] 438 | 0 => 0, [INFO] [stderr] 439 | 1 => a, [INFO] [stderr] 440 | 2 => a + b, [INFO] [stderr] 441 | n => { [INFO] [stderr] 442 | let mut fim1 = b; //F_{i-1} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tests.rs:480:9 [INFO] [stderr] | [INFO] [stderr] 480 | return frontend::compile_function("fib_iter".to_string(), &["return", "n", "a", "b"], code); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `frontend::compile_function("fib_iter".to_string(), &["return", "n", "a", "b"], code)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm/machine.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match self { [INFO] [stderr] 134 | | &StackUnderflow => write!(f, "Stack underflow"), [INFO] [stderr] 135 | | &NotEnoughParameters(actual, expected) => write!(f, [INFO] [stderr] 136 | | "Not enough arguments to call routine. Expected {} Actual {}", expected, actual), [INFO] [stderr] ... | [INFO] [stderr] 145 | | "Routine index {} out of range. Maximum routine index {}", actual, maximum) [INFO] [stderr] 146 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 133 | match *self { [INFO] [stderr] 134 | StackUnderflow => write!(f, "Stack underflow"), [INFO] [stderr] 135 | NotEnoughParameters(actual, expected) => write!(f, [INFO] [stderr] 136 | "Not enough arguments to call routine. Expected {} Actual {}", expected, actual), [INFO] [stderr] 137 | ParameterOutOfRange(actual, maximum) => write!(f, [INFO] [stderr] 138 | "Parameter index {} out of range. Maximum parameter index {}", actual, maximum), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/vm/machine.rs:308:13 [INFO] [stderr] | [INFO] [stderr] 308 | frame.next_instruction = frame.next_instruction + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame.next_instruction += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:28:63 [INFO] [stderr] | [INFO] [stderr] 28 | let arg = (toy.reserved("ref").with(toy.identifier()).map(|id| Arg::ByRef(id))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Arg::ByRef` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:43:75 [INFO] [stderr] | [INFO] [stderr] 43 | Stmt::Condition(cond, if_block, opt_else_block.unwrap_or_else(|| Vec::new())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/frontend/parser.rs:86:59 [INFO] [stderr] | [INFO] [stderr] 86 | opt_args.map(|args| Expr::Function(id, args)).unwrap_or(Expr::Variable(id2)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Expr::Variable(id2))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | self.eval_stack_ptr = self.eval_stack_ptr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | self.eval_stack_ptr = self.eval_stack_ptr + paramoffset; // implicit result parameter, if present [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr += paramoffset` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match arg { [INFO] [stderr] 113 | | &ByVal(ref value_expr) => { [INFO] [stderr] 114 | | try!(self.compile_expr(&*value_expr)); [INFO] [stderr] 115 | | } [INFO] [stderr] ... | [INFO] [stderr] 118 | | } [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 112 | match *arg { [INFO] [stderr] 113 | ByVal(ref value_expr) => { [INFO] [stderr] 114 | try!(self.compile_expr(&*value_expr)); [INFO] [stderr] 115 | } [INFO] [stderr] 116 | ByRef(ref name) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:137:17 [INFO] [stderr] | [INFO] [stderr] 137 | / match arg { [INFO] [stderr] 138 | | &ByRef(ref name) => { [INFO] [stderr] 139 | | try!(self.emit_store_variable(&name[..])); [INFO] [stderr] 140 | | false [INFO] [stderr] 141 | | } [INFO] [stderr] 142 | | _ => true, [INFO] [stderr] 143 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 137 | match *arg { [INFO] [stderr] 138 | ByRef(ref name) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:149:17 [INFO] [stderr] | [INFO] [stderr] 149 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / match expr { [INFO] [stderr] 167 | | &Addition(ref lhs, ref rhs) => { [INFO] [stderr] 168 | | try!(self.compile_expr(&**lhs)); [INFO] [stderr] 169 | | try!(self.compile_expr(&**rhs)); [INFO] [stderr] ... | [INFO] [stderr] 288 | | } [INFO] [stderr] 289 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 166 | match *expr { [INFO] [stderr] 167 | Addition(ref lhs, ref rhs) => { [INFO] [stderr] 168 | try!(self.compile_expr(&**lhs)); [INFO] [stderr] 169 | try!(self.compile_expr(&**rhs)); [INFO] [stderr] 170 | try!(self.static_eval_stack_min(2)); [INFO] [stderr] 171 | let lhs = self.eval_stack_ptr - 2; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:183:17 [INFO] [stderr] | [INFO] [stderr] 183 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:192:17 [INFO] [stderr] | [INFO] [stderr] 192 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:210:17 [INFO] [stderr] | [INFO] [stderr] 210 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:219:17 [INFO] [stderr] | [INFO] [stderr] 219 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:237:17 [INFO] [stderr] | [INFO] [stderr] 237 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:255:17 [INFO] [stderr] | [INFO] [stderr] 255 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:264:17 [INFO] [stderr] | [INFO] [stderr] 264 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:272:17 [INFO] [stderr] | [INFO] [stderr] 272 | self.eval_stack_ptr = self.eval_stack_ptr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | / match stmt { [INFO] [stderr] 296 | | &Assign(ref var, ref rhs) => { [INFO] [stderr] 297 | | try!(self.compile_expr(rhs)); [INFO] [stderr] 298 | | try!(self.emit_store_variable(&var[..])); [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 295 | match *stmt { [INFO] [stderr] 296 | Assign(ref var, ref rhs) => { [INFO] [stderr] 297 | try!(self.compile_expr(rhs)); [INFO] [stderr] 298 | try!(self.emit_store_variable(&var[..])); [INFO] [stderr] 299 | } [INFO] [stderr] 300 | Condition(ref cond, ref ifbranch, ref elsebranch) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:388:9 [INFO] [stderr] | [INFO] [stderr] 388 | / match self { [INFO] [stderr] 389 | | &UnresolvedSymbol(ref s) => write!(f, "Unresolved symbol: {}", s), [INFO] [stderr] 390 | | &UnsupportedExpr(ref e) => write!(f, "Unsupported expression: {:?}", e), [INFO] [stderr] 391 | | &DuplicateName(ref s) => write!(f, "Duplicate name: {}", s), [INFO] [stderr] ... | [INFO] [stderr] 395 | | routine, expected, actual) [INFO] [stderr] 396 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 388 | match *self { [INFO] [stderr] 389 | UnresolvedSymbol(ref s) => write!(f, "Unresolved symbol: {}", s), [INFO] [stderr] 390 | UnsupportedExpr(ref e) => write!(f, "Unsupported expression: {:?}", e), [INFO] [stderr] 391 | DuplicateName(ref s) => write!(f, "Duplicate name: {}", s), [INFO] [stderr] 392 | InternalError(s) => write!(f, "Internal compiler error: {}", s), [INFO] [stderr] 393 | InsufficientArguments(ref routine, actual, expected) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/frontend/codegen.rs:402:29 [INFO] [stderr] | [INFO] [stderr] 402 | fn infer_register_names<'a, 'd>(routine_name: &str, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:443:9 [INFO] [stderr] | [INFO] [stderr] 443 | / match expr { [INFO] [stderr] 444 | | &Variable(ref v) => { [INFO] [stderr] 445 | | ctx.vars.insert(&v[..]); [INFO] [stderr] 446 | | size_for_expr = size_for_expr + 1; [INFO] [stderr] ... | [INFO] [stderr] 516 | | } [INFO] [stderr] 517 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 443 | match *expr { [INFO] [stderr] 444 | Variable(ref v) => { [INFO] [stderr] 445 | ctx.vars.insert(&v[..]); [INFO] [stderr] 446 | size_for_expr = size_for_expr + 1; [INFO] [stderr] 447 | () [INFO] [stderr] 448 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:446:17 [INFO] [stderr] | [INFO] [stderr] 446 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:451:17 [INFO] [stderr] | [INFO] [stderr] 451 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:461:17 [INFO] [stderr] | [INFO] [stderr] 461 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:466:17 [INFO] [stderr] | [INFO] [stderr] 466 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:471:17 [INFO] [stderr] | [INFO] [stderr] 471 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:481:17 [INFO] [stderr] | [INFO] [stderr] 481 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:486:17 [INFO] [stderr] | [INFO] [stderr] 486 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:491:17 [INFO] [stderr] | [INFO] [stderr] 491 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:496:17 [INFO] [stderr] | [INFO] [stderr] 496 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:501:17 [INFO] [stderr] | [INFO] [stderr] 501 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:505:17 [INFO] [stderr] | [INFO] [stderr] 505 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:515:17 [INFO] [stderr] | [INFO] [stderr] 515 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:540:13 [INFO] [stderr] | [INFO] [stderr] 540 | / match arg { [INFO] [stderr] 541 | | &ByVal(ref e) => { [INFO] [stderr] 542 | | try!(list_vars_in_expr(ctx, &*e, stack_size)); [INFO] [stderr] 543 | | } [INFO] [stderr] ... | [INFO] [stderr] 546 | | } [INFO] [stderr] 547 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 540 | match *arg { [INFO] [stderr] 541 | ByVal(ref e) => { [INFO] [stderr] 542 | try!(list_vars_in_expr(ctx, &*e, stack_size)); [INFO] [stderr] 543 | } [INFO] [stderr] 544 | ByRef(ref v) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:549:13 [INFO] [stderr] | [INFO] [stderr] 549 | stack_size = stack_size + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_size += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:559:13 [INFO] [stderr] | [INFO] [stderr] 559 | / match stmt { [INFO] [stderr] 560 | | &Assign(ref lhs, ref rhs) => { [INFO] [stderr] 561 | | ctx.vars.insert(&lhs[..]); [INFO] [stderr] 562 | | try!(list_vars_in_expr(ctx, rhs, 0)); [INFO] [stderr] ... | [INFO] [stderr] 575 | | } [INFO] [stderr] 576 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 559 | match *stmt { [INFO] [stderr] 560 | Assign(ref lhs, ref rhs) => { [INFO] [stderr] 561 | ctx.vars.insert(&lhs[..]); [INFO] [stderr] 562 | try!(list_vars_in_expr(ctx, rhs, 0)); [INFO] [stderr] 563 | } [INFO] [stderr] 564 | Condition(ref cond, ref ifbranch, ref elsebranch) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:630:17 [INFO] [stderr] | [INFO] [stderr] 630 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:660:9 [INFO] [stderr] | [INFO] [stderr] 660 | / match decl { [INFO] [stderr] 661 | | &Routine(ref name, ref parameter_names, _) => { [INFO] [stderr] 662 | | let key = &name[..]; [INFO] [stderr] 663 | | if ctx.routine_map.contains_key(&key) { [INFO] [stderr] ... | [INFO] [stderr] 672 | | } [INFO] [stderr] 673 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 660 | match *decl { [INFO] [stderr] 661 | Routine(ref name, ref parameter_names, _) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:671:17 [INFO] [stderr] | [INFO] [stderr] 671 | next_slot = next_slot + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `next_slot += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:678:9 [INFO] [stderr] | [INFO] [stderr] 678 | / match decl { [INFO] [stderr] 679 | | &Routine(ref name, ref parameter_names, ref stmts) => { [INFO] [stderr] 680 | | let info = try!(ctx.routine_map [INFO] [stderr] 681 | | .get(&name[..]) [INFO] [stderr] ... | [INFO] [stderr] 707 | | } [INFO] [stderr] 708 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 678 | match *decl { [INFO] [stderr] 679 | Routine(ref name, ref parameter_names, ref stmts) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/mod.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match self { [INFO] [stderr] 26 | | &FrontendError::FeCodeGenError(ref e) => Some(e), [INFO] [stderr] 27 | | _ => None [INFO] [stderr] 28 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 25 | match *self { [INFO] [stderr] 26 | FrontendError::FeCodeGenError(ref e) => Some(e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/mod.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / match self { [INFO] [stderr] 35 | | &FrontendError::FeParserError(ref txt) => write!(f, "{}", txt), [INFO] [stderr] 36 | | &FrontendError::FeCodeGenError(ref e) => write!(f, "{}", e) [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 34 | match *self { [INFO] [stderr] 35 | FrontendError::FeParserError(ref txt) => write!(f, "{}", txt), [INFO] [stderr] 36 | FrontendError::FeCodeGenError(ref e) => write!(f, "{}", e) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/frontend/mod.rs:65:65 [INFO] [stderr] | [INFO] [stderr] 65 | program.routines.iter().map(|r| r.instructions.len()).fold(0, |l, r| l + r)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / if let &Err(ref e) = arg_r { [INFO] [stderr] 55 | | write!(stderr(), "Failed to parse argument {}: {}", arg_n, e) [INFO] [stderr] 56 | | .expect("Cannot write to stderr"); [INFO] [stderr] 57 | | has_error = true; [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | if let Err(ref e) = *arg_r { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm/machine.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match self { [INFO] [stderr] 134 | | &StackUnderflow => write!(f, "Stack underflow"), [INFO] [stderr] 135 | | &NotEnoughParameters(actual, expected) => write!(f, [INFO] [stderr] 136 | | "Not enough arguments to call routine. Expected {} Actual {}", expected, actual), [INFO] [stderr] ... | [INFO] [stderr] 145 | | "Routine index {} out of range. Maximum routine index {}", actual, maximum) [INFO] [stderr] 146 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 133 | match *self { [INFO] [stderr] 134 | StackUnderflow => write!(f, "Stack underflow"), [INFO] [stderr] 135 | NotEnoughParameters(actual, expected) => write!(f, [INFO] [stderr] 136 | "Not enough arguments to call routine. Expected {} Actual {}", expected, actual), [INFO] [stderr] 137 | ParameterOutOfRange(actual, maximum) => write!(f, [INFO] [stderr] 138 | "Parameter index {} out of range. Maximum parameter index {}", actual, maximum), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/vm/machine.rs:308:13 [INFO] [stderr] | [INFO] [stderr] 308 | frame.next_instruction = frame.next_instruction + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frame.next_instruction += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:28:63 [INFO] [stderr] | [INFO] [stderr] 28 | let arg = (toy.reserved("ref").with(toy.identifier()).map(|id| Arg::ByRef(id))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Arg::ByRef` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:43:75 [INFO] [stderr] | [INFO] [stderr] 43 | Stmt::Condition(cond, if_block, opt_else_block.unwrap_or_else(|| Vec::new())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/frontend/parser.rs:86:59 [INFO] [stderr] | [INFO] [stderr] 86 | opt_args.map(|args| Expr::Function(id, args)).unwrap_or(Expr::Variable(id2)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Expr::Variable(id2))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | self.eval_stack_ptr = self.eval_stack_ptr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | self.eval_stack_ptr = self.eval_stack_ptr + paramoffset; // implicit result parameter, if present [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr += paramoffset` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match arg { [INFO] [stderr] 113 | | &ByVal(ref value_expr) => { [INFO] [stderr] 114 | | try!(self.compile_expr(&*value_expr)); [INFO] [stderr] 115 | | } [INFO] [stderr] ... | [INFO] [stderr] 118 | | } [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 112 | match *arg { [INFO] [stderr] 113 | ByVal(ref value_expr) => { [INFO] [stderr] 114 | try!(self.compile_expr(&*value_expr)); [INFO] [stderr] 115 | } [INFO] [stderr] 116 | ByRef(ref name) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:137:17 [INFO] [stderr] | [INFO] [stderr] 137 | / match arg { [INFO] [stderr] 138 | | &ByRef(ref name) => { [INFO] [stderr] 139 | | try!(self.emit_store_variable(&name[..])); [INFO] [stderr] 140 | | false [INFO] [stderr] 141 | | } [INFO] [stderr] 142 | | _ => true, [INFO] [stderr] 143 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 137 | match *arg { [INFO] [stderr] 138 | ByRef(ref name) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:149:17 [INFO] [stderr] | [INFO] [stderr] 149 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:166:9 [INFO] [stderr] | [INFO] [stderr] 166 | / match expr { [INFO] [stderr] 167 | | &Addition(ref lhs, ref rhs) => { [INFO] [stderr] 168 | | try!(self.compile_expr(&**lhs)); [INFO] [stderr] 169 | | try!(self.compile_expr(&**rhs)); [INFO] [stderr] ... | [INFO] [stderr] 288 | | } [INFO] [stderr] 289 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 166 | match *expr { [INFO] [stderr] 167 | Addition(ref lhs, ref rhs) => { [INFO] [stderr] 168 | try!(self.compile_expr(&**lhs)); [INFO] [stderr] 169 | try!(self.compile_expr(&**rhs)); [INFO] [stderr] 170 | try!(self.static_eval_stack_min(2)); [INFO] [stderr] 171 | let lhs = self.eval_stack_ptr - 2; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:183:17 [INFO] [stderr] | [INFO] [stderr] 183 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:192:17 [INFO] [stderr] | [INFO] [stderr] 192 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:210:17 [INFO] [stderr] | [INFO] [stderr] 210 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:219:17 [INFO] [stderr] | [INFO] [stderr] 219 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:237:17 [INFO] [stderr] | [INFO] [stderr] 237 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:255:17 [INFO] [stderr] | [INFO] [stderr] 255 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:264:17 [INFO] [stderr] | [INFO] [stderr] 264 | self.eval_stack_ptr = self.eval_stack_ptr - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:272:17 [INFO] [stderr] | [INFO] [stderr] 272 | self.eval_stack_ptr = self.eval_stack_ptr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.eval_stack_ptr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | / match stmt { [INFO] [stderr] 296 | | &Assign(ref var, ref rhs) => { [INFO] [stderr] 297 | | try!(self.compile_expr(rhs)); [INFO] [stderr] 298 | | try!(self.emit_store_variable(&var[..])); [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 295 | match *stmt { [INFO] [stderr] 296 | Assign(ref var, ref rhs) => { [INFO] [stderr] 297 | try!(self.compile_expr(rhs)); [INFO] [stderr] 298 | try!(self.emit_store_variable(&var[..])); [INFO] [stderr] 299 | } [INFO] [stderr] 300 | Condition(ref cond, ref ifbranch, ref elsebranch) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:388:9 [INFO] [stderr] | [INFO] [stderr] 388 | / match self { [INFO] [stderr] 389 | | &UnresolvedSymbol(ref s) => write!(f, "Unresolved symbol: {}", s), [INFO] [stderr] 390 | | &UnsupportedExpr(ref e) => write!(f, "Unsupported expression: {:?}", e), [INFO] [stderr] 391 | | &DuplicateName(ref s) => write!(f, "Duplicate name: {}", s), [INFO] [stderr] ... | [INFO] [stderr] 395 | | routine, expected, actual) [INFO] [stderr] 396 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 388 | match *self { [INFO] [stderr] 389 | UnresolvedSymbol(ref s) => write!(f, "Unresolved symbol: {}", s), [INFO] [stderr] 390 | UnsupportedExpr(ref e) => write!(f, "Unsupported expression: {:?}", e), [INFO] [stderr] 391 | DuplicateName(ref s) => write!(f, "Duplicate name: {}", s), [INFO] [stderr] 392 | InternalError(s) => write!(f, "Internal compiler error: {}", s), [INFO] [stderr] 393 | InsufficientArguments(ref routine, actual, expected) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/frontend/codegen.rs:402:29 [INFO] [stderr] | [INFO] [stderr] 402 | fn infer_register_names<'a, 'd>(routine_name: &str, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:443:9 [INFO] [stderr] | [INFO] [stderr] 443 | / match expr { [INFO] [stderr] 444 | | &Variable(ref v) => { [INFO] [stderr] 445 | | ctx.vars.insert(&v[..]); [INFO] [stderr] 446 | | size_for_expr = size_for_expr + 1; [INFO] [stderr] ... | [INFO] [stderr] 516 | | } [INFO] [stderr] 517 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 443 | match *expr { [INFO] [stderr] 444 | Variable(ref v) => { [INFO] [stderr] 445 | ctx.vars.insert(&v[..]); [INFO] [stderr] 446 | size_for_expr = size_for_expr + 1; [INFO] [stderr] 447 | () [INFO] [stderr] 448 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:446:17 [INFO] [stderr] | [INFO] [stderr] 446 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:451:17 [INFO] [stderr] | [INFO] [stderr] 451 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:461:17 [INFO] [stderr] | [INFO] [stderr] 461 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:466:17 [INFO] [stderr] | [INFO] [stderr] 466 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:471:17 [INFO] [stderr] | [INFO] [stderr] 471 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:481:17 [INFO] [stderr] | [INFO] [stderr] 481 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:486:17 [INFO] [stderr] | [INFO] [stderr] 486 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:491:17 [INFO] [stderr] | [INFO] [stderr] 491 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:496:17 [INFO] [stderr] | [INFO] [stderr] 496 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:501:17 [INFO] [stderr] | [INFO] [stderr] 501 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:505:17 [INFO] [stderr] | [INFO] [stderr] 505 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:515:17 [INFO] [stderr] | [INFO] [stderr] 515 | size_for_expr = size_for_expr + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `size_for_expr += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:540:13 [INFO] [stderr] | [INFO] [stderr] 540 | / match arg { [INFO] [stderr] 541 | | &ByVal(ref e) => { [INFO] [stderr] 542 | | try!(list_vars_in_expr(ctx, &*e, stack_size)); [INFO] [stderr] 543 | | } [INFO] [stderr] ... | [INFO] [stderr] 546 | | } [INFO] [stderr] 547 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 540 | match *arg { [INFO] [stderr] 541 | ByVal(ref e) => { [INFO] [stderr] 542 | try!(list_vars_in_expr(ctx, &*e, stack_size)); [INFO] [stderr] 543 | } [INFO] [stderr] 544 | ByRef(ref v) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:549:13 [INFO] [stderr] | [INFO] [stderr] 549 | stack_size = stack_size + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_size += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:559:13 [INFO] [stderr] | [INFO] [stderr] 559 | / match stmt { [INFO] [stderr] 560 | | &Assign(ref lhs, ref rhs) => { [INFO] [stderr] 561 | | ctx.vars.insert(&lhs[..]); [INFO] [stderr] 562 | | try!(list_vars_in_expr(ctx, rhs, 0)); [INFO] [stderr] ... | [INFO] [stderr] 575 | | } [INFO] [stderr] 576 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 559 | match *stmt { [INFO] [stderr] 560 | Assign(ref lhs, ref rhs) => { [INFO] [stderr] 561 | ctx.vars.insert(&lhs[..]); [INFO] [stderr] 562 | try!(list_vars_in_expr(ctx, rhs, 0)); [INFO] [stderr] 563 | } [INFO] [stderr] 564 | Condition(ref cond, ref ifbranch, ref elsebranch) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:630:17 [INFO] [stderr] | [INFO] [stderr] 630 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:660:9 [INFO] [stderr] | [INFO] [stderr] 660 | / match decl { [INFO] [stderr] 661 | | &Routine(ref name, ref parameter_names, _) => { [INFO] [stderr] 662 | | let key = &name[..]; [INFO] [stderr] 663 | | if ctx.routine_map.contains_key(&key) { [INFO] [stderr] ... | [INFO] [stderr] 672 | | } [INFO] [stderr] 673 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 660 | match *decl { [INFO] [stderr] 661 | Routine(ref name, ref parameter_names, _) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/frontend/codegen.rs:671:17 [INFO] [stderr] | [INFO] [stderr] 671 | next_slot = next_slot + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `next_slot += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/codegen.rs:678:9 [INFO] [stderr] | [INFO] [stderr] 678 | / match decl { [INFO] [stderr] 679 | | &Routine(ref name, ref parameter_names, ref stmts) => { [INFO] [stderr] 680 | | let info = try!(ctx.routine_map [INFO] [stderr] 681 | | .get(&name[..]) [INFO] [stderr] ... | [INFO] [stderr] 707 | | } [INFO] [stderr] 708 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 678 | match *decl { [INFO] [stderr] 679 | Routine(ref name, ref parameter_names, ref stmts) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/mod.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match self { [INFO] [stderr] 26 | | &FrontendError::FeCodeGenError(ref e) => Some(e), [INFO] [stderr] 27 | | _ => None [INFO] [stderr] 28 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 25 | match *self { [INFO] [stderr] 26 | FrontendError::FeCodeGenError(ref e) => Some(e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/mod.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / match self { [INFO] [stderr] 35 | | &FrontendError::FeParserError(ref txt) => write!(f, "{}", txt), [INFO] [stderr] 36 | | &FrontendError::FeCodeGenError(ref e) => write!(f, "{}", e) [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 34 | match *self { [INFO] [stderr] 35 | FrontendError::FeParserError(ref txt) => write!(f, "{}", txt), [INFO] [stderr] 36 | FrontendError::FeCodeGenError(ref e) => write!(f, "{}", e) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/frontend/mod.rs:65:65 [INFO] [stderr] | [INFO] [stderr] 65 | program.routines.iter().map(|r| r.instructions.len()).fold(0, |l, r| l + r)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tests.rs:413:26 [INFO] [stderr] | [INFO] [stderr] 413 | for i in 3..n + 1 { [INFO] [stderr] | ^^^^^^^^ help: use: `3..=n` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tests.rs:444:26 [INFO] [stderr] | [INFO] [stderr] 444 | for _ in 3..n + 1 { [INFO] [stderr] | ^^^^^^^^ help: use: `3..=n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 16.67s [INFO] running `"docker" "inspect" "dd1bba71c060f86279b99731fe8b16f97dd35a108178a01aaf06a4821b9e7597"` [INFO] running `"docker" "rm" "-f" "dd1bba71c060f86279b99731fe8b16f97dd35a108178a01aaf06a4821b9e7597"` [INFO] [stdout] dd1bba71c060f86279b99731fe8b16f97dd35a108178a01aaf06a4821b9e7597