[INFO] updating cached repository clarkezone/simple_c_compiler [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/clarkezone/simple_c_compiler [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/clarkezone/simple_c_compiler" "work/ex/clippy-test-run/sources/stable/gh/clarkezone/simple_c_compiler"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/clarkezone/simple_c_compiler'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/clarkezone/simple_c_compiler" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clarkezone/simple_c_compiler"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clarkezone/simple_c_compiler'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ac9db8f0fcfcef7153b9b0aa01d2dec72f59e1b3 [INFO] sha for GitHub repo clarkezone/simple_c_compiler: ac9db8f0fcfcef7153b9b0aa01d2dec72f59e1b3 [INFO] validating manifest of clarkezone/simple_c_compiler 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 clarkezone/simple_c_compiler 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 clarkezone/simple_c_compiler [INFO] finished frobbing clarkezone/simple_c_compiler [INFO] frobbed toml for clarkezone/simple_c_compiler written to work/ex/clippy-test-run/sources/stable/gh/clarkezone/simple_c_compiler/Cargo.toml [INFO] started frobbing clarkezone/simple_c_compiler [INFO] finished frobbing clarkezone/simple_c_compiler [INFO] frobbed toml for clarkezone/simple_c_compiler written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/clarkezone/simple_c_compiler/Cargo.toml [INFO] crate clarkezone/simple_c_compiler 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 clarkezone/simple_c_compiler against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/clarkezone/simple_c_compiler:/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] c0962f6c048088937cf7e9f331d16d6dc659970e9ef481423a814c34d34f24ef [INFO] running `"docker" "start" "-a" "c0962f6c048088937cf7e9f331d16d6dc659970e9ef481423a814c34d34f24ef"` [INFO] [stderr] Checking regex v0.2.3 [INFO] [stderr] Checking simple_c_compiler v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lexer.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | / pub mod lexer { [INFO] [stderr] 4 | | use std::fmt::*; [INFO] [stderr] 5 | | use std::path::Path; [INFO] [stderr] 6 | | use fileutils::lines_from_file; [INFO] [stderr] ... | [INFO] [stderr] 345 | | } [INFO] [stderr] 346 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return collector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `collector` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | return is_word_char(x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_word_char(x)` [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/lexer.rs:118:74 [INFO] [stderr] | [INFO] [stderr] 118 | readallconf(&mut bb, &mut slast_char, |x: &char| return is_number(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_number(x)` [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/lexer.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | return (maa, advanced, start, end); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(maa, advanced, start, end)` [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/lexer.rs:238:13 [INFO] [stderr] | [INFO] [stderr] 238 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [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/lexer.rs:245:21 [INFO] [stderr] | [INFO] [stderr] 245 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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/lexer.rs:249:21 [INFO] [stderr] | [INFO] [stderr] 249 | return Some(t); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(t)` [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/lexer.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | return CharClassified::Alpha(*input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CharClassified::Alpha(*input)` [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/lexer.rs:268:13 [INFO] [stderr] | [INFO] [stderr] 268 | return CharClassified::Number(*input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CharClassified::Number(*input)` [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/lexer.rs:270:13 [INFO] [stderr] | [INFO] [stderr] 270 | return CharClassified::Symbol(*input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CharClassified::Symbol(*input)` [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/lexer.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | return foo != None; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `foo != None` [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/lexer.rs:281:9 [INFO] [stderr] | [INFO] [stderr] 281 | return foo != None; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `foo != None` [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 import: `std::fs` [INFO] [stderr] --> src/lexer.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:343:13 [INFO] [stderr] | [INFO] [stderr] 343 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: module has the same name as its containing module [INFO] [stderr] --> src/ast.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | / pub mod ast { [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use std::slice::Iter; [INFO] [stderr] 6 | | use lexer::*; [INFO] [stderr] ... | [INFO] [stderr] 212 | | } [INFO] [stderr] 213 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | return fun; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `fun` [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/ast.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | return fun; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `fun` [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/ast.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | return boxed_root; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `boxed_root` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/ast.rs:65:60 [INFO] [stderr] | [INFO] [stderr] 65 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Function))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ast.rs:65:60 [INFO] [stderr] | [INFO] [stderr] 65 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Function))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/ast.rs:116:60 [INFO] [stderr] | [INFO] [stderr] 116 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Statement))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ast.rs:116:60 [INFO] [stderr] | [INFO] [stderr] 116 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Statement))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/ast.rs:136:60 [INFO] [stderr] | [INFO] [stderr] 136 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Expression))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ast.rs:136:60 [INFO] [stderr] | [INFO] [stderr] 136 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Expression))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs` [INFO] [stderr] --> src/ast.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/codegen.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | / pub mod codegen { [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use std::path::Path; [INFO] [stderr] 6 | | use fileutils::write_lines; [INFO] [stderr] ... | [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/codegen.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | return state; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `state` [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 import: `lexer::*` [INFO] [stderr] --> src/codegen.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | use lexer::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs` [INFO] [stderr] --> src/codegen.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ast::*` [INFO] [stderr] --> src/codegen.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | use ast::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::Path` [INFO] [stderr] --> src/codegen.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lexer.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | / pub mod lexer { [INFO] [stderr] 4 | | use std::fmt::*; [INFO] [stderr] 5 | | use std::path::Path; [INFO] [stderr] 6 | | use fileutils::lines_from_file; [INFO] [stderr] ... | [INFO] [stderr] 345 | | } [INFO] [stderr] 346 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return collector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `collector` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:75:25 [INFO] [stderr] | [INFO] [stderr] 75 | return is_word_char(x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_word_char(x)` [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/lexer.rs:118:74 [INFO] [stderr] | [INFO] [stderr] 118 | readallconf(&mut bb, &mut slast_char, |x: &char| return is_number(x)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `is_number(x)` [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/lexer.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | return (maa, advanced, start, end); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(maa, advanced, start, end)` [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/lexer.rs:238:13 [INFO] [stderr] | [INFO] [stderr] 238 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [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/lexer.rs:245:21 [INFO] [stderr] | [INFO] [stderr] 245 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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/lexer.rs:249:21 [INFO] [stderr] | [INFO] [stderr] 249 | return Some(t); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(t)` [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/lexer.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | return CharClassified::Alpha(*input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CharClassified::Alpha(*input)` [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/lexer.rs:268:13 [INFO] [stderr] | [INFO] [stderr] 268 | return CharClassified::Number(*input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CharClassified::Number(*input)` [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/lexer.rs:270:13 [INFO] [stderr] | [INFO] [stderr] 270 | return CharClassified::Symbol(*input); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CharClassified::Symbol(*input)` [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/lexer.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | return foo != None; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `foo != None` [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/lexer.rs:281:9 [INFO] [stderr] | [INFO] [stderr] 281 | return foo != None; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `foo != None` [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/lexer.rs:343:13 [INFO] [stderr] | [INFO] [stderr] 343 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: module has the same name as its containing module [INFO] [stderr] --> src/ast.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | / pub mod ast { [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use std::slice::Iter; [INFO] [stderr] 6 | | use lexer::*; [INFO] [stderr] ... | [INFO] [stderr] 212 | | } [INFO] [stderr] 213 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | return fun; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `fun` [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/ast.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | return fun; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `fun` [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/ast.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | return boxed_root; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `boxed_root` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/ast.rs:65:60 [INFO] [stderr] | [INFO] [stderr] 65 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Function))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ast.rs:65:60 [INFO] [stderr] | [INFO] [stderr] 65 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Function))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/ast.rs:116:60 [INFO] [stderr] | [INFO] [stderr] 116 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Statement))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ast.rs:116:60 [INFO] [stderr] | [INFO] [stderr] 116 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Statement))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/ast.rs:136:60 [INFO] [stderr] | [INFO] [stderr] 136 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Expression))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/ast.rs:136:60 [INFO] [stderr] | [INFO] [stderr] 136 | let mut boxed_node = Box::new(AstNode::new((AstNodeType::Expression))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/codegen.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | / pub mod codegen { [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use std::path::Path; [INFO] [stderr] 6 | | use fileutils::write_lines; [INFO] [stderr] ... | [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/codegen.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | return state; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `state` [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 import: `std::fs` [INFO] [stderr] --> src/codegen.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/fileutils.rs:17:43 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn write_lines

(filename: P, lines: &Vec) [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fileutils.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / match result.err() { [INFO] [stderr] 25 | | Some(_l) => panic!("error writing file"), [INFO] [stderr] 26 | | _ => {} [INFO] [stderr] 27 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(_l) = result.err() { panic!("error writing file") }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fileutils.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / match res2.err() { [INFO] [stderr] 31 | | Some(_l) => panic!("error writing to file"), [INFO] [stderr] 32 | | _ => {} [INFO] [stderr] 33 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(_l) = res2.err() { panic!("error writing to file") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lexer.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | line_num = line_num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_num += 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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lexer.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | fn get_tokens(line: &String, line_num: u32, collector: &mut Vec) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lexer.rs:248:21 [INFO] [stderr] | [INFO] [stderr] 248 | self.cnt = self.cnt + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cnt += 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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:264:24 [INFO] [stderr] | [INFO] [stderr] 264 | fn classify(input: &char) -> CharClassified { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:274:28 [INFO] [stderr] | [INFO] [stderr] 274 | fn is_word_char(input: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/lexer.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | let foo = ALPHA.find(*input); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:279:25 [INFO] [stderr] | [INFO] [stderr] 279 | fn is_number(input: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/lexer.rs:280:13 [INFO] [stderr] | [INFO] [stderr] 280 | let foo = NUMERIC.find(*input); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lexer.rs:320:47 [INFO] [stderr] | [INFO] [stderr] 320 | fn verify_stage_one_tokens(tokenlist: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[super::TokenInfo]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lexer.rs:333:32 [INFO] [stderr] | [INFO] [stderr] 333 | for i in tokenlist.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | fn parse_ast(node: &mut Box, tokens: &mut Iter, errorf: &F) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `&mut AstNode` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ast.rs:96:28 [INFO] [stderr] | [INFO] [stderr] 96 | errorf(String::from(format!( [INFO] [stderr] | ____________________________^ [INFO] [stderr] 97 | | "Wrong token type {}: expected open paren", [INFO] [stderr] 98 | | token.token_type, [INFO] [stderr] 99 | | ))); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 96 | errorf(format!( [INFO] [stderr] 97 | "Wrong token type {}: expected open paren", [INFO] [stderr] 98 | token.token_type, [INFO] [stderr] 99 | )); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/codegen.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | / match node.child { [INFO] [stderr] 53 | | Some(ref valid) => { [INFO] [stderr] 54 | | self.generate_code_recurse(valid, argstack, emitstack); [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | None => {} //break recursion by not calling recurse, continuing execution [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 52 | if let Some(ref valid) = node.child { [INFO] [stderr] 53 | self.generate_code_recurse(valid, argstack, emitstack); [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | &mut emitstack.push(String::from("ret")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from("ret"));` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 67 | &mut emitstack.push(String::from(format!("mov ${}, %eax", ret_arg.unwrap()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from(format!("mov ${}, %eax", ret_arg.unwrap())));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/codegen.rs:67:41 [INFO] [stderr] | [INFO] [stderr] 67 | &mut emitstack.push(String::from(format!("mov ${}, %eax", ret_arg.unwrap()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("mov ${}, %eax", ret_arg.unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:70:21 [INFO] [stderr] | [INFO] [stderr] 70 | &mut emitstack.push(String::from("_main:")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from("_main:"));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:71:21 [INFO] [stderr] | [INFO] [stderr] 71 | &mut emitstack.push(String::from(".globl _main")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from(".globl _main"));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/fileutils.rs:17:43 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn write_lines

(filename: P, lines: &Vec) [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fileutils.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | / match result.err() { [INFO] [stderr] 25 | | Some(_l) => panic!("error writing file"), [INFO] [stderr] 26 | | _ => {} [INFO] [stderr] 27 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(_l) = result.err() { panic!("error writing file") }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fileutils.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / match res2.err() { [INFO] [stderr] 31 | | Some(_l) => panic!("error writing to file"), [INFO] [stderr] 32 | | _ => {} [INFO] [stderr] 33 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(_l) = res2.err() { panic!("error writing to file") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lexer.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | line_num = line_num + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_num += 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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lexer.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | fn get_tokens(line: &String, line_num: u32, collector: &mut Vec) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lexer.rs:248:21 [INFO] [stderr] | [INFO] [stderr] 248 | self.cnt = self.cnt + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cnt += 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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:264:24 [INFO] [stderr] | [INFO] [stderr] 264 | fn classify(input: &char) -> CharClassified { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:274:28 [INFO] [stderr] | [INFO] [stderr] 274 | fn is_word_char(input: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/lexer.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | let foo = ALPHA.find(*input); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:279:25 [INFO] [stderr] | [INFO] [stderr] 279 | fn is_number(input: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/lexer.rs:280:13 [INFO] [stderr] | [INFO] [stderr] 280 | let foo = NUMERIC.find(*input); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lexer.rs:320:47 [INFO] [stderr] | [INFO] [stderr] 320 | fn verify_stage_one_tokens(tokenlist: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[super::TokenInfo]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lexer.rs:333:32 [INFO] [stderr] | [INFO] [stderr] 333 | for i in tokenlist.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | fn parse_ast(node: &mut Box, tokens: &mut Iter, errorf: &F) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `&mut AstNode` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ast.rs:96:28 [INFO] [stderr] | [INFO] [stderr] 96 | errorf(String::from(format!( [INFO] [stderr] | ____________________________^ [INFO] [stderr] 97 | | "Wrong token type {}: expected open paren", [INFO] [stderr] 98 | | token.token_type, [INFO] [stderr] 99 | | ))); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 96 | errorf(format!( [INFO] [stderr] 97 | "Wrong token type {}: expected open paren", [INFO] [stderr] 98 | token.token_type, [INFO] [stderr] 99 | )); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/codegen.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | / match node.child { [INFO] [stderr] 53 | | Some(ref valid) => { [INFO] [stderr] 54 | | self.generate_code_recurse(valid, argstack, emitstack); [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | None => {} //break recursion by not calling recurse, continuing execution [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 52 | if let Some(ref valid) = node.child { [INFO] [stderr] 53 | self.generate_code_recurse(valid, argstack, emitstack); [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | &mut emitstack.push(String::from("ret")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from("ret"));` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 67 | &mut emitstack.push(String::from(format!("mov ${}, %eax", ret_arg.unwrap()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from(format!("mov ${}, %eax", ret_arg.unwrap())));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/codegen.rs:67:41 [INFO] [stderr] | [INFO] [stderr] 67 | &mut emitstack.push(String::from(format!("mov ${}, %eax", ret_arg.unwrap()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("mov ${}, %eax", ret_arg.unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:70:21 [INFO] [stderr] | [INFO] [stderr] 70 | &mut emitstack.push(String::from("_main:")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from("_main:"));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/codegen.rs:71:21 [INFO] [stderr] | [INFO] [stderr] 71 | &mut emitstack.push(String::from(".globl _main")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `emitstack.push(String::from(".globl _main"));` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter_mut() and will not move the Vec [INFO] [stderr] --> src/codegen.rs:105:33 [INFO] [stderr] | [INFO] [stderr] 105 | for i in emit_stack.into_iter().rev() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter_mut` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.20s [INFO] running `"docker" "inspect" "c0962f6c048088937cf7e9f331d16d6dc659970e9ef481423a814c34d34f24ef"` [INFO] running `"docker" "rm" "-f" "c0962f6c048088937cf7e9f331d16d6dc659970e9ef481423a814c34d34f24ef"` [INFO] [stdout] c0962f6c048088937cf7e9f331d16d6dc659970e9ef481423a814c34d34f24ef