[INFO] crate cargo-asm 0.1.16 is already in cache [INFO] extracting crate cargo-asm 0.1.16 into work/ex/clippy-test-run/sources/stable/reg/cargo-asm/0.1.16 [INFO] extracting crate cargo-asm 0.1.16 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cargo-asm/0.1.16 [INFO] validating manifest of cargo-asm-0.1.16 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 cargo-asm-0.1.16 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 cargo-asm-0.1.16 [INFO] finished frobbing cargo-asm-0.1.16 [INFO] frobbed toml for cargo-asm-0.1.16 written to work/ex/clippy-test-run/sources/stable/reg/cargo-asm/0.1.16/Cargo.toml [INFO] started frobbing cargo-asm-0.1.16 [INFO] finished frobbing cargo-asm-0.1.16 [INFO] frobbed toml for cargo-asm-0.1.16 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cargo-asm/0.1.16/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 cargo-asm-0.1.16 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/cargo-asm/0.1.16:/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] a5a1fa72c3e2e32cf8f9815e4fc22b8a5367e92bdc0355b06dd99b6b669a4452 [INFO] running `"docker" "start" "-a" "a5a1fa72c3e2e32cf8f9815e4fc22b8a5367e92bdc0355b06dd99b6b669a4452"` [INFO] [stderr] warning: file found to be present in multiple build targets: /opt/crater/workdir/src/main.rs [INFO] [stderr] Checking cargo-asm v0.1.16 (/opt/crater/workdir) [INFO] [stderr] Compiling assert_cli v0.5.4 [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `option_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:40 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::option_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: lint name `result_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:60 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::result_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/display.rs:124:49 [INFO] [stderr] | [INFO] [stderr] 124 | write!(&mut buffer, " [{0}:{0}]", "-").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/display.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | write!(&mut buffer, "\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `option_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:40 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::option_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: lint name `result_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:60 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::result_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/display.rs:124:49 [INFO] [stderr] | [INFO] [stderr] 124 | write!(&mut buffer, " [{0}:{0}]", "-").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/display.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | write!(&mut buffer, "\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `option_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:40 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::option_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: lint name `result_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:60 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::result_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/display.rs:124:49 [INFO] [stderr] | [INFO] [stderr] 124 | write!(&mut buffer, " [{0}:{0}]", "-").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/display.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | write!(&mut buffer, "\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `option_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:40 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::option_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: lint name `result_unwrap_used` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:60 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::result_unwrap_used` [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/display.rs:124:49 [INFO] [stderr] | [INFO] [stderr] 124 | write!(&mut buffer, " [{0}:{0}]", "-").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/display.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | write!(&mut buffer, "\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/asm/parse.rs:133:44 [INFO] [stderr] | [INFO] [stderr] 133 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `items_after_statements` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/display.rs:27:44 [INFO] [stderr] | [INFO] [stderr] 27 | #[cfg_attr(feature = "cargo-clippy", allow(items_after_statements))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::items_after_statements` [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/logger.rs:18:16 [INFO] [stderr] | [INFO] [stderr] 18 | const LOGGER: &'static Logger = &Logger(()); [INFO] [stderr] | -^^^^^^^------- help: consider removing `'static`: `&Logger` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/options.rs:3:45 [INFO] [stderr] | [INFO] [stderr] 3 | #![cfg_attr(feature = "cargo-clippy", allow(missing_docs_in_private_items))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/rust.rs:51:44 [INFO] [stderr] | [INFO] [stderr] 51 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `print_stdout` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^^^^ help: change it to: `clippy::print_stdout` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:58 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/asm/parse.rs:133:44 [INFO] [stderr] | [INFO] [stderr] 133 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `items_after_statements` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/display.rs:27:44 [INFO] [stderr] | [INFO] [stderr] 27 | #[cfg_attr(feature = "cargo-clippy", allow(items_after_statements))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::items_after_statements` [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/logger.rs:18:16 [INFO] [stderr] | [INFO] [stderr] 18 | const LOGGER: &'static Logger = &Logger(()); [INFO] [stderr] | -^^^^^^^------- help: consider removing `'static`: `&Logger` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/options.rs:3:45 [INFO] [stderr] | [INFO] [stderr] 3 | #![cfg_attr(feature = "cargo-clippy", allow(missing_docs_in_private_items))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/rust.rs:51:44 [INFO] [stderr] | [INFO] [stderr] 51 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `print_stdout` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^^^^ help: change it to: `clippy::print_stdout` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:58 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | .expect(&format!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s, file_path_index, &colon_tokens)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:89:14 [INFO] [stderr] | [INFO] [stderr] 89 | .expect(&format!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s, file_path_index_index, &ws_tokens)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:163:26 [INFO] [stderr] | [INFO] [stderr] 163 | let file_index = tokens.get(file_index_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_index_index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | let file_line = tokens.get(file_line_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_line_index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/asm/ast.rs:175:14 [INFO] [stderr] | [INFO] [stderr] 175 | Some(self.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:190:20 [INFO] [stderr] | [INFO] [stderr] 190 | if s.ends_with(":") { [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/asm/ast.rs:304:24 [INFO] [stderr] | [INFO] [stderr] 304 | .iter() [INFO] [stderr] | ________________________^ [INFO] [stderr] 305 | | .fold(false, |acc, x| acc || x.starts_with(".L")) [INFO] [stderr] | |_________________________________________________________________^ help: try: `.any(|x| x.starts_with(".L"))` [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: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:307:36 [INFO] [stderr] | [INFO] [stderr] 307 | self.instr.starts_with("b") [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:311:36 [INFO] [stderr] | [INFO] [stderr] 311 | self.instr.starts_with("b") && self.instr.len() > 1 [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:346:34 [INFO] [stderr] | [INFO] [stderr] 346 | let l = arg.find(")"); [INFO] [stderr] | ^^^ help: try using a char instead: `')'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/ast.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | / match self { [INFO] [stderr] 374 | | &Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | | &Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | | &Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | | &Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] 378 | | } [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] 373 | match *self { [INFO] [stderr] 374 | Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:62:21 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 63 | | if loc.file_index == file.index { [INFO] [stderr] 64 | | function.file = Some(file); [INFO] [stderr] 65 | | } [INFO] [stderr] ... | [INFO] [stderr] 71 | | function.file = Some(file); [INFO] [stderr] 72 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 62 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:88:21 [INFO] [stderr] | [INFO] [stderr] 88 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 89 | | assert_eq!(new_loc.file_index, file.index); [INFO] [stderr] 90 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 88 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/asm/parse.rs:134:1 [INFO] [stderr] | [INFO] [stderr] 134 | / pub fn function(file: &::std::path::Path) -> Result { [INFO] [stderr] 135 | | let path = if let Some(path) = opts.path() { [INFO] [stderr] 136 | | path [INFO] [stderr] 137 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 317 | | ) [INFO] [stderr] 318 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:216:17 [INFO] [stderr] | [INFO] [stderr] 216 | / if let &Some(ref function) = &function { [INFO] [stderr] 217 | | if function.file.is_some() { [INFO] [stderr] 218 | | break; [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 216 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:225:17 [INFO] [stderr] | [INFO] [stderr] 225 | / if let &Some(ref function) = &function { [INFO] [stderr] 226 | | if function.loc.is_none() { [INFO] [stderr] 227 | | break; [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 225 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:283:5 [INFO] [stderr] | [INFO] [stderr] 283 | / if let &Some(ref f) = &function.file { [INFO] [stderr] 284 | | file_directive_table [INFO] [stderr] 285 | | .entry(f.index) [INFO] [stderr] 286 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 287 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 283 | if let Some(ref f) = function.file { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:289:9 [INFO] [stderr] | [INFO] [stderr] 289 | / if let &Statement::Directive(Directive::File(ref f)) = s { [INFO] [stderr] 290 | | file_directive_table [INFO] [stderr] 291 | | .entry(f.index) [INFO] [stderr] 292 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 293 | | } [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] 289 | if let Statement::Directive(Directive::File(ref f)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:300:9 [INFO] [stderr] | [INFO] [stderr] 300 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 301 | | if !file_directive_table.contains_key(&l.file_index) { [INFO] [stderr] 302 | | done = false; [INFO] [stderr] 303 | | error!( [INFO] [stderr] ... | [INFO] [stderr] 307 | | } [INFO] [stderr] 308 | | } [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] 300 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/asm/mod.rs:104:39 [INFO] [stderr] | [INFO] [stderr] 104 | msg.push_str(&format!( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 105 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 106 | | )); [INFO] [stderr] | |_________________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/build.rs:122:23 [INFO] [stderr] | [INFO] [stderr] 122 | let e = entry.expect(&format!( [INFO] [stderr] | _______________________^ [INFO] [stderr] 123 | | "failed to iterate over the directory: {}", [INFO] [stderr] 124 | | target_directory.display() [INFO] [stderr] 125 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("failed to iterate over the directory: {}", target_directory.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / match kind { [INFO] [stderr] 31 | | &Kind::Asm(ref a) => { [INFO] [stderr] 32 | | use asm::ast::Statement::*; [INFO] [stderr] 33 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [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] 30 | match *kind { [INFO] [stderr] 31 | Kind::Asm(ref a) => { [INFO] [stderr] 32 | use asm::ast::Statement::*; [INFO] [stderr] 33 | match a { [INFO] [stderr] 34 | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | / match a { [INFO] [stderr] 34 | | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | | &Label(ref l) => { [INFO] [stderr] ... | [INFO] [stderr] 44 | | _ => {} [INFO] [stderr] 45 | | } [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] 33 | match *a { [INFO] [stderr] 34 | Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | Label(ref l) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:55:33 [INFO] [stderr] | [INFO] [stderr] 55 | let part_of_main_function = match kind { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 56 | | &Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | | &Kind::Rust(ref r) => is_rust_in_function(function, r), [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] 55 | let part_of_main_function = match *kind { [INFO] [stderr] 56 | Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | Kind::Rust(ref r) => is_rust_in_function(function, r), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | let indent = match kind { [INFO] [stderr] | __________________^ [INFO] [stderr] 61 | | &Kind::Asm(ref a) => { [INFO] [stderr] 62 | | use asm::ast::Statement::*; [INFO] [stderr] 63 | | match *a { [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | }; [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] 60 | let indent = match *kind { [INFO] [stderr] 61 | Kind::Asm(ref a) => { [INFO] [stderr] 62 | use asm::ast::Statement::*; [INFO] [stderr] 63 | match *a { [INFO] [stderr] 64 | Comment(_) | Directive(_) | Instruction(_) => { [INFO] [stderr] 65 | if !opts.rust() || part_of_main_function { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / match kind { [INFO] [stderr] 129 | | &Kind::Asm(ref a) => { [INFO] [stderr] 130 | | use asm::ast::Statement::*; [INFO] [stderr] 131 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [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] 128 | match *kind { [INFO] [stderr] 129 | Kind::Asm(ref a) => { [INFO] [stderr] 130 | use asm::ast::Statement::*; [INFO] [stderr] 131 | match a { [INFO] [stderr] 132 | &Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | / match a { [INFO] [stderr] 132 | | &Label(ref l) => { [INFO] [stderr] 133 | | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 188 | | } [INFO] [stderr] 189 | | } [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] 131 | match *a { [INFO] [stderr] 132 | Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] 135 | write!(&mut buffer, ":").unwrap(); [INFO] [stderr] 136 | if opts.debug_mode() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:140:38 [INFO] [stderr] | [INFO] [stderr] 140 | &Directive(ref d) => match d { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 141 | | &asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | | write!( [INFO] [stderr] 143 | | &mut buffer, [INFO] [stderr] ... | [INFO] [stderr] 158 | | } [INFO] [stderr] 159 | | }, [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] 140 | &Directive(ref d) => match *d { [INFO] [stderr] 141 | asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | write!( [INFO] [stderr] 143 | &mut buffer, [INFO] [stderr] 144 | ".file {} \"{}\"", [INFO] [stderr] 145 | f.index, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 218 | | if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] ... | [INFO] [stderr] 225 | | } [INFO] [stderr] 226 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 217 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] 221 | | function.id, [INFO] [stderr] ... | [INFO] [stderr] 224 | | ); [INFO] [stderr] 225 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 218 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | format!("{}", function.id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `function.id.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | / if let &mut Some(ref mut file) = &mut function.file { [INFO] [stderr] 309 | | make_path_relative(&mut file.path) [INFO] [stderr] 310 | | } [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] 308 | if let Some(ref mut file) = *(&mut function.file) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:381:21 [INFO] [stderr] | [INFO] [stderr] 381 | let r = match v { [INFO] [stderr] | _____________________^ [INFO] [stderr] 382 | | &Kind::Rust(ref r) => r, [INFO] [stderr] 383 | | _ => return true, [INFO] [stderr] 384 | | }; [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] 381 | let r = match *v { [INFO] [stderr] 382 | Kind::Rust(ref r) => r, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:386:13 [INFO] [stderr] | [INFO] [stderr] 386 | / if let &Some(ref last_rust) = &last_rust { [INFO] [stderr] 387 | | if last_rust.loc == r.loc { [INFO] [stderr] 388 | | return false; [INFO] [stderr] 389 | | } [INFO] [stderr] 390 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 386 | if let Some(ref last_rust) = last_rust { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/llvmir.rs:65:35 [INFO] [stderr] | [INFO] [stderr] 65 | msg.push_str(&format!( [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 66 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 67 | | )); [INFO] [stderr] | |_____________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/llvmir.rs:101:28 [INFO] [stderr] | [INFO] [stderr] 101 | while let Some(line) = line_iter.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for line in line_iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:117:35 [INFO] [stderr] | [INFO] [stderr] 117 | let first = line.find("@").unwrap(); [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:118:46 [INFO] [stderr] | [INFO] [stderr] 118 | let last = (&line[first..]).find("(").unwrap() + first; [INFO] [stderr] | ^^^ help: try using a char instead: `'('` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/llvmir.rs:144:37 [INFO] [stderr] | [INFO] [stderr] 144 | for line in &function_lines[0..r + 1] { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=r` [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: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:147:53 [INFO] [stderr] | [INFO] [stderr] 147 | while let Some(f) = &line[start..].find("\"") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/llvmir.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ------------------------------^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `line[f..].find("\"").unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:153:41 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:159:21 [INFO] [stderr] | [INFO] [stderr] 159 | v.extend(".exit".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `v.push_str(".exit")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_extend_chars)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | demangled_line.extend(line[start..f].chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(line[start..f])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | demangled_line.extend(demangled_name.chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(&demangled_name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | demangled_line.extend("\"".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str("\"")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:32:19 [INFO] [stderr] | [INFO] [stderr] 32 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/path.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | let mut appending = if next_sub_path.is_none() { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `next_sub_path.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:76:23 [INFO] [stderr] | [INFO] [stderr] 76 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | / if let &Some(ref l) = l { [INFO] [stderr] 16 | | return Some(l.clone()); [INFO] [stderr] 17 | | } [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] 15 | if let Some(ref l) = *l { [INFO] [stderr] | ^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 65 | | debug!("inserting locs: {:?}", l); [INFO] [stderr] 66 | | files.entry(l.file_index).or_insert_with(|| { [INFO] [stderr] 67 | | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] ... | [INFO] [stderr] 80 | | debug!("files: {:?}", files);; [INFO] [stderr] 81 | | } [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] 64 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:67:57 [INFO] [stderr] | [INFO] [stderr] 67 | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 68 | | &format!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", [INFO] [stderr] 69 | | l, file_table)); [INFO] [stderr] | |____________________________________________^ help: try this: `unwrap_or_else(|| panic!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", l))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:114:53 [INFO] [stderr] | [INFO] [stderr] 114 | let fh = ::std::fs::File::open(&f.ast.path).expect(&format!( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 115 | | "[ERROR]: failed to open file: {}", [INFO] [stderr] 116 | | f.ast.path.display() [INFO] [stderr] 117 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("[ERROR]: failed to open file: {}", f.ast.path.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if !result.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | .expect(&format!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s, file_path_index, &colon_tokens)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:89:14 [INFO] [stderr] | [INFO] [stderr] 89 | .expect(&format!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s, file_path_index_index, &ws_tokens)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:163:26 [INFO] [stderr] | [INFO] [stderr] 163 | let file_index = tokens.get(file_index_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_index_index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | let file_line = tokens.get(file_line_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_line_index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/asm/ast.rs:175:14 [INFO] [stderr] | [INFO] [stderr] 175 | Some(self.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:190:20 [INFO] [stderr] | [INFO] [stderr] 190 | if s.ends_with(":") { [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/asm/ast.rs:304:24 [INFO] [stderr] | [INFO] [stderr] 304 | .iter() [INFO] [stderr] | ________________________^ [INFO] [stderr] 305 | | .fold(false, |acc, x| acc || x.starts_with(".L")) [INFO] [stderr] | |_________________________________________________________________^ help: try: `.any(|x| x.starts_with(".L"))` [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: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:307:36 [INFO] [stderr] | [INFO] [stderr] 307 | self.instr.starts_with("b") [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:311:36 [INFO] [stderr] | [INFO] [stderr] 311 | self.instr.starts_with("b") && self.instr.len() > 1 [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:346:34 [INFO] [stderr] | [INFO] [stderr] 346 | let l = arg.find(")"); [INFO] [stderr] | ^^^ help: try using a char instead: `')'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/ast.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | / match self { [INFO] [stderr] 374 | | &Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | | &Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | | &Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | | &Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] 378 | | } [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] 373 | match *self { [INFO] [stderr] 374 | Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:62:21 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 63 | | if loc.file_index == file.index { [INFO] [stderr] 64 | | function.file = Some(file); [INFO] [stderr] 65 | | } [INFO] [stderr] ... | [INFO] [stderr] 71 | | function.file = Some(file); [INFO] [stderr] 72 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 62 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:88:21 [INFO] [stderr] | [INFO] [stderr] 88 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 89 | | assert_eq!(new_loc.file_index, file.index); [INFO] [stderr] 90 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 88 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/asm/parse.rs:134:1 [INFO] [stderr] | [INFO] [stderr] 134 | / pub fn function(file: &::std::path::Path) -> Result { [INFO] [stderr] 135 | | let path = if let Some(path) = opts.path() { [INFO] [stderr] 136 | | path [INFO] [stderr] 137 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 317 | | ) [INFO] [stderr] 318 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:216:17 [INFO] [stderr] | [INFO] [stderr] 216 | / if let &Some(ref function) = &function { [INFO] [stderr] 217 | | if function.file.is_some() { [INFO] [stderr] 218 | | break; [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 216 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:225:17 [INFO] [stderr] | [INFO] [stderr] 225 | / if let &Some(ref function) = &function { [INFO] [stderr] 226 | | if function.loc.is_none() { [INFO] [stderr] 227 | | break; [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 225 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:283:5 [INFO] [stderr] | [INFO] [stderr] 283 | / if let &Some(ref f) = &function.file { [INFO] [stderr] 284 | | file_directive_table [INFO] [stderr] 285 | | .entry(f.index) [INFO] [stderr] 286 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 287 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 283 | if let Some(ref f) = function.file { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:289:9 [INFO] [stderr] | [INFO] [stderr] 289 | / if let &Statement::Directive(Directive::File(ref f)) = s { [INFO] [stderr] 290 | | file_directive_table [INFO] [stderr] 291 | | .entry(f.index) [INFO] [stderr] 292 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 293 | | } [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] 289 | if let Statement::Directive(Directive::File(ref f)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:300:9 [INFO] [stderr] | [INFO] [stderr] 300 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 301 | | if !file_directive_table.contains_key(&l.file_index) { [INFO] [stderr] 302 | | done = false; [INFO] [stderr] 303 | | error!( [INFO] [stderr] ... | [INFO] [stderr] 307 | | } [INFO] [stderr] 308 | | } [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] 300 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/asm/mod.rs:104:39 [INFO] [stderr] | [INFO] [stderr] 104 | msg.push_str(&format!( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 105 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 106 | | )); [INFO] [stderr] | |_________________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/build.rs:122:23 [INFO] [stderr] | [INFO] [stderr] 122 | let e = entry.expect(&format!( [INFO] [stderr] | _______________________^ [INFO] [stderr] 123 | | "failed to iterate over the directory: {}", [INFO] [stderr] 124 | | target_directory.display() [INFO] [stderr] 125 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("failed to iterate over the directory: {}", target_directory.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / match kind { [INFO] [stderr] 31 | | &Kind::Asm(ref a) => { [INFO] [stderr] 32 | | use asm::ast::Statement::*; [INFO] [stderr] 33 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [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] 30 | match *kind { [INFO] [stderr] 31 | Kind::Asm(ref a) => { [INFO] [stderr] 32 | use asm::ast::Statement::*; [INFO] [stderr] 33 | match a { [INFO] [stderr] 34 | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | / match a { [INFO] [stderr] 34 | | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | | &Label(ref l) => { [INFO] [stderr] ... | [INFO] [stderr] 44 | | _ => {} [INFO] [stderr] 45 | | } [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] 33 | match *a { [INFO] [stderr] 34 | Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | Label(ref l) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:55:33 [INFO] [stderr] | [INFO] [stderr] 55 | let part_of_main_function = match kind { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 56 | | &Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | | &Kind::Rust(ref r) => is_rust_in_function(function, r), [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] 55 | let part_of_main_function = match *kind { [INFO] [stderr] 56 | Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | Kind::Rust(ref r) => is_rust_in_function(function, r), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | let indent = match kind { [INFO] [stderr] | __________________^ [INFO] [stderr] 61 | | &Kind::Asm(ref a) => { [INFO] [stderr] 62 | | use asm::ast::Statement::*; [INFO] [stderr] 63 | | match *a { [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | }; [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] 60 | let indent = match *kind { [INFO] [stderr] 61 | Kind::Asm(ref a) => { [INFO] [stderr] 62 | use asm::ast::Statement::*; [INFO] [stderr] 63 | match *a { [INFO] [stderr] 64 | Comment(_) | Directive(_) | Instruction(_) => { [INFO] [stderr] 65 | if !opts.rust() || part_of_main_function { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / match kind { [INFO] [stderr] 129 | | &Kind::Asm(ref a) => { [INFO] [stderr] 130 | | use asm::ast::Statement::*; [INFO] [stderr] 131 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [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] 128 | match *kind { [INFO] [stderr] 129 | Kind::Asm(ref a) => { [INFO] [stderr] 130 | use asm::ast::Statement::*; [INFO] [stderr] 131 | match a { [INFO] [stderr] 132 | &Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | / match a { [INFO] [stderr] 132 | | &Label(ref l) => { [INFO] [stderr] 133 | | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 188 | | } [INFO] [stderr] 189 | | } [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] 131 | match *a { [INFO] [stderr] 132 | Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] 135 | write!(&mut buffer, ":").unwrap(); [INFO] [stderr] 136 | if opts.debug_mode() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:140:38 [INFO] [stderr] | [INFO] [stderr] 140 | &Directive(ref d) => match d { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 141 | | &asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | | write!( [INFO] [stderr] 143 | | &mut buffer, [INFO] [stderr] ... | [INFO] [stderr] 158 | | } [INFO] [stderr] 159 | | }, [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] 140 | &Directive(ref d) => match *d { [INFO] [stderr] 141 | asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | write!( [INFO] [stderr] 143 | &mut buffer, [INFO] [stderr] 144 | ".file {} \"{}\"", [INFO] [stderr] 145 | f.index, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 218 | | if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] ... | [INFO] [stderr] 225 | | } [INFO] [stderr] 226 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 217 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] 221 | | function.id, [INFO] [stderr] ... | [INFO] [stderr] 224 | | ); [INFO] [stderr] 225 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 218 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | format!("{}", function.id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `function.id.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | / if let &mut Some(ref mut file) = &mut function.file { [INFO] [stderr] 309 | | make_path_relative(&mut file.path) [INFO] [stderr] 310 | | } [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] 308 | if let Some(ref mut file) = *(&mut function.file) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:381:21 [INFO] [stderr] | [INFO] [stderr] 381 | let r = match v { [INFO] [stderr] | _____________________^ [INFO] [stderr] 382 | | &Kind::Rust(ref r) => r, [INFO] [stderr] 383 | | _ => return true, [INFO] [stderr] 384 | | }; [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] 381 | let r = match *v { [INFO] [stderr] 382 | Kind::Rust(ref r) => r, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:386:13 [INFO] [stderr] | [INFO] [stderr] 386 | / if let &Some(ref last_rust) = &last_rust { [INFO] [stderr] 387 | | if last_rust.loc == r.loc { [INFO] [stderr] 388 | | return false; [INFO] [stderr] 389 | | } [INFO] [stderr] 390 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 386 | if let Some(ref last_rust) = last_rust { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/llvmir.rs:65:35 [INFO] [stderr] | [INFO] [stderr] 65 | msg.push_str(&format!( [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 66 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 67 | | )); [INFO] [stderr] | |_____________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/llvmir.rs:101:28 [INFO] [stderr] | [INFO] [stderr] 101 | while let Some(line) = line_iter.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for line in line_iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:117:35 [INFO] [stderr] | [INFO] [stderr] 117 | let first = line.find("@").unwrap(); [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:118:46 [INFO] [stderr] | [INFO] [stderr] 118 | let last = (&line[first..]).find("(").unwrap() + first; [INFO] [stderr] | ^^^ help: try using a char instead: `'('` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/llvmir.rs:144:37 [INFO] [stderr] | [INFO] [stderr] 144 | for line in &function_lines[0..r + 1] { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=r` [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: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:147:53 [INFO] [stderr] | [INFO] [stderr] 147 | while let Some(f) = &line[start..].find("\"") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/llvmir.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ------------------------------^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `line[f..].find("\"").unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:153:41 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:159:21 [INFO] [stderr] | [INFO] [stderr] 159 | v.extend(".exit".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `v.push_str(".exit")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_extend_chars)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | demangled_line.extend(line[start..f].chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(line[start..f])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | demangled_line.extend(demangled_name.chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(&demangled_name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | demangled_line.extend("\"".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str("\"")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:32:19 [INFO] [stderr] | [INFO] [stderr] 32 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/path.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | let mut appending = if next_sub_path.is_none() { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `next_sub_path.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:76:23 [INFO] [stderr] | [INFO] [stderr] 76 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | / if let &Some(ref l) = l { [INFO] [stderr] 16 | | return Some(l.clone()); [INFO] [stderr] 17 | | } [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] 15 | if let Some(ref l) = *l { [INFO] [stderr] | ^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 65 | | debug!("inserting locs: {:?}", l); [INFO] [stderr] 66 | | files.entry(l.file_index).or_insert_with(|| { [INFO] [stderr] 67 | | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] ... | [INFO] [stderr] 80 | | debug!("files: {:?}", files);; [INFO] [stderr] 81 | | } [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] 64 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:67:57 [INFO] [stderr] | [INFO] [stderr] 67 | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 68 | | &format!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", [INFO] [stderr] 69 | | l, file_table)); [INFO] [stderr] | |____________________________________________^ help: try this: `unwrap_or_else(|| panic!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", l))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:114:53 [INFO] [stderr] | [INFO] [stderr] 114 | let fh = ::std::fs::File::open(&f.ast.path).expect(&format!( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 115 | | "[ERROR]: failed to open file: {}", [INFO] [stderr] 116 | | f.ast.path.display() [INFO] [stderr] 117 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("[ERROR]: failed to open file: {}", f.ast.path.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if !result.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | missing_docs_in_private_items, option_unwrap_used, result_unwrap_used [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/asm/parse.rs:133:44 [INFO] [stderr] | [INFO] [stderr] 133 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `items_after_statements` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/display.rs:27:44 [INFO] [stderr] | [INFO] [stderr] 27 | #[cfg_attr(feature = "cargo-clippy", allow(items_after_statements))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::items_after_statements` [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/logger.rs:18:16 [INFO] [stderr] | [INFO] [stderr] 18 | const LOGGER: &'static Logger = &Logger(()); [INFO] [stderr] | -^^^^^^^------- help: consider removing `'static`: `&Logger` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/options.rs:3:45 [INFO] [stderr] | [INFO] [stderr] 3 | #![cfg_attr(feature = "cargo-clippy", allow(missing_docs_in_private_items))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/rust.rs:51:44 [INFO] [stderr] | [INFO] [stderr] 51 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `print_stdout` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^^^^ help: change it to: `clippy::print_stdout` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:58 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/asm/parse.rs:133:44 [INFO] [stderr] | [INFO] [stderr] 133 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `items_after_statements` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/display.rs:27:44 [INFO] [stderr] | [INFO] [stderr] 27 | #[cfg_attr(feature = "cargo-clippy", allow(items_after_statements))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::items_after_statements` [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/logger.rs:18:16 [INFO] [stderr] | [INFO] [stderr] 18 | const LOGGER: &'static Logger = &Logger(()); [INFO] [stderr] | -^^^^^^^------- help: consider removing `'static`: `&Logger` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: lint name `missing_docs_in_private_items` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/options.rs:3:45 [INFO] [stderr] | [INFO] [stderr] 3 | #![cfg_attr(feature = "cargo-clippy", allow(missing_docs_in_private_items))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::missing_docs_in_private_items` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/rust.rs:51:44 [INFO] [stderr] | [INFO] [stderr] 51 | #[cfg_attr(feature = "cargo-clippy", allow(use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: lint name `print_stdout` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^^^^ help: change it to: `clippy::print_stdout` [INFO] [stderr] [INFO] [stderr] warning: lint name `use_debug` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/main.rs:40:58 [INFO] [stderr] | [INFO] [stderr] 40 | #[cfg_attr(feature = "cargo-clippy", allow(print_stdout, use_debug))] [INFO] [stderr] | ^^^^^^^^^ help: change it to: `clippy::use_debug` [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | .expect(&format!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s, file_path_index, &colon_tokens)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:89:14 [INFO] [stderr] | [INFO] [stderr] 89 | .expect(&format!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s, file_path_index_index, &ws_tokens)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:163:26 [INFO] [stderr] | [INFO] [stderr] 163 | let file_index = tokens.get(file_index_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_index_index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | let file_line = tokens.get(file_line_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_line_index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/asm/ast.rs:175:14 [INFO] [stderr] | [INFO] [stderr] 175 | Some(self.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:190:20 [INFO] [stderr] | [INFO] [stderr] 190 | if s.ends_with(":") { [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/asm/ast.rs:304:24 [INFO] [stderr] | [INFO] [stderr] 304 | .iter() [INFO] [stderr] | ________________________^ [INFO] [stderr] 305 | | .fold(false, |acc, x| acc || x.starts_with(".L")) [INFO] [stderr] | |_________________________________________________________________^ help: try: `.any(|x| x.starts_with(".L"))` [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: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:307:36 [INFO] [stderr] | [INFO] [stderr] 307 | self.instr.starts_with("b") [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:311:36 [INFO] [stderr] | [INFO] [stderr] 311 | self.instr.starts_with("b") && self.instr.len() > 1 [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:346:34 [INFO] [stderr] | [INFO] [stderr] 346 | let l = arg.find(")"); [INFO] [stderr] | ^^^ help: try using a char instead: `')'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/ast.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | / match self { [INFO] [stderr] 374 | | &Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | | &Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | | &Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | | &Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] 378 | | } [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] 373 | match *self { [INFO] [stderr] 374 | Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:62:21 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 63 | | if loc.file_index == file.index { [INFO] [stderr] 64 | | function.file = Some(file); [INFO] [stderr] 65 | | } [INFO] [stderr] ... | [INFO] [stderr] 71 | | function.file = Some(file); [INFO] [stderr] 72 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 62 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:88:21 [INFO] [stderr] | [INFO] [stderr] 88 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 89 | | assert_eq!(new_loc.file_index, file.index); [INFO] [stderr] 90 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 88 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/asm/parse.rs:134:1 [INFO] [stderr] | [INFO] [stderr] 134 | / pub fn function(file: &::std::path::Path) -> Result { [INFO] [stderr] 135 | | let path = if let Some(path) = opts.path() { [INFO] [stderr] 136 | | path [INFO] [stderr] 137 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 317 | | ) [INFO] [stderr] 318 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:216:17 [INFO] [stderr] | [INFO] [stderr] 216 | / if let &Some(ref function) = &function { [INFO] [stderr] 217 | | if function.file.is_some() { [INFO] [stderr] 218 | | break; [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 216 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:225:17 [INFO] [stderr] | [INFO] [stderr] 225 | / if let &Some(ref function) = &function { [INFO] [stderr] 226 | | if function.loc.is_none() { [INFO] [stderr] 227 | | break; [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 225 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:283:5 [INFO] [stderr] | [INFO] [stderr] 283 | / if let &Some(ref f) = &function.file { [INFO] [stderr] 284 | | file_directive_table [INFO] [stderr] 285 | | .entry(f.index) [INFO] [stderr] 286 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 287 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 283 | if let Some(ref f) = function.file { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:289:9 [INFO] [stderr] | [INFO] [stderr] 289 | / if let &Statement::Directive(Directive::File(ref f)) = s { [INFO] [stderr] 290 | | file_directive_table [INFO] [stderr] 291 | | .entry(f.index) [INFO] [stderr] 292 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 293 | | } [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] 289 | if let Statement::Directive(Directive::File(ref f)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:300:9 [INFO] [stderr] | [INFO] [stderr] 300 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 301 | | if !file_directive_table.contains_key(&l.file_index) { [INFO] [stderr] 302 | | done = false; [INFO] [stderr] 303 | | error!( [INFO] [stderr] ... | [INFO] [stderr] 307 | | } [INFO] [stderr] 308 | | } [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] 300 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/asm/mod.rs:104:39 [INFO] [stderr] | [INFO] [stderr] 104 | msg.push_str(&format!( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 105 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 106 | | )); [INFO] [stderr] | |_________________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/build.rs:122:23 [INFO] [stderr] | [INFO] [stderr] 122 | let e = entry.expect(&format!( [INFO] [stderr] | _______________________^ [INFO] [stderr] 123 | | "failed to iterate over the directory: {}", [INFO] [stderr] 124 | | target_directory.display() [INFO] [stderr] 125 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("failed to iterate over the directory: {}", target_directory.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / match kind { [INFO] [stderr] 31 | | &Kind::Asm(ref a) => { [INFO] [stderr] 32 | | use asm::ast::Statement::*; [INFO] [stderr] 33 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [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] 30 | match *kind { [INFO] [stderr] 31 | Kind::Asm(ref a) => { [INFO] [stderr] 32 | use asm::ast::Statement::*; [INFO] [stderr] 33 | match a { [INFO] [stderr] 34 | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | / match a { [INFO] [stderr] 34 | | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | | &Label(ref l) => { [INFO] [stderr] ... | [INFO] [stderr] 44 | | _ => {} [INFO] [stderr] 45 | | } [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] 33 | match *a { [INFO] [stderr] 34 | Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | Label(ref l) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:55:33 [INFO] [stderr] | [INFO] [stderr] 55 | let part_of_main_function = match kind { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 56 | | &Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | | &Kind::Rust(ref r) => is_rust_in_function(function, r), [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] 55 | let part_of_main_function = match *kind { [INFO] [stderr] 56 | Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | Kind::Rust(ref r) => is_rust_in_function(function, r), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | let indent = match kind { [INFO] [stderr] | __________________^ [INFO] [stderr] 61 | | &Kind::Asm(ref a) => { [INFO] [stderr] 62 | | use asm::ast::Statement::*; [INFO] [stderr] 63 | | match *a { [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | }; [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] 60 | let indent = match *kind { [INFO] [stderr] 61 | Kind::Asm(ref a) => { [INFO] [stderr] 62 | use asm::ast::Statement::*; [INFO] [stderr] 63 | match *a { [INFO] [stderr] 64 | Comment(_) | Directive(_) | Instruction(_) => { [INFO] [stderr] 65 | if !opts.rust() || part_of_main_function { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / match kind { [INFO] [stderr] 129 | | &Kind::Asm(ref a) => { [INFO] [stderr] 130 | | use asm::ast::Statement::*; [INFO] [stderr] 131 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [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] 128 | match *kind { [INFO] [stderr] 129 | Kind::Asm(ref a) => { [INFO] [stderr] 130 | use asm::ast::Statement::*; [INFO] [stderr] 131 | match a { [INFO] [stderr] 132 | &Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | / match a { [INFO] [stderr] 132 | | &Label(ref l) => { [INFO] [stderr] 133 | | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 188 | | } [INFO] [stderr] 189 | | } [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] 131 | match *a { [INFO] [stderr] 132 | Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] 135 | write!(&mut buffer, ":").unwrap(); [INFO] [stderr] 136 | if opts.debug_mode() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:140:38 [INFO] [stderr] | [INFO] [stderr] 140 | &Directive(ref d) => match d { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 141 | | &asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | | write!( [INFO] [stderr] 143 | | &mut buffer, [INFO] [stderr] ... | [INFO] [stderr] 158 | | } [INFO] [stderr] 159 | | }, [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] 140 | &Directive(ref d) => match *d { [INFO] [stderr] 141 | asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | write!( [INFO] [stderr] 143 | &mut buffer, [INFO] [stderr] 144 | ".file {} \"{}\"", [INFO] [stderr] 145 | f.index, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 218 | | if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] ... | [INFO] [stderr] 225 | | } [INFO] [stderr] 226 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 217 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] 221 | | function.id, [INFO] [stderr] ... | [INFO] [stderr] 224 | | ); [INFO] [stderr] 225 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 218 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | format!("{}", function.id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `function.id.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | .expect(&format!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s, file_path_index, &colon_tokens)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file path of {} | file_path_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/asm/ast.rs:89:14 [INFO] [stderr] | [INFO] [stderr] 89 | .expect(&format!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s, file_path_index_index, &ws_tokens)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("could not get file index of {} | file_path_index_index: {} | tokens: {:?}", s))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | / if let &mut Some(ref mut file) = &mut function.file { [INFO] [stderr] 309 | | make_path_relative(&mut file.path) [INFO] [stderr] 310 | | } [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] 308 | if let Some(ref mut file) = *(&mut function.file) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:163:26 [INFO] [stderr] | [INFO] [stderr] 163 | let file_index = tokens.get(file_index_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_index_index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/asm/ast.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | let file_line = tokens.get(file_line_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens[file_line_index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/asm/ast.rs:175:14 [INFO] [stderr] | [INFO] [stderr] 175 | Some(self.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:190:20 [INFO] [stderr] | [INFO] [stderr] 190 | if s.ends_with(":") { [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:381:21 [INFO] [stderr] | [INFO] [stderr] 381 | let r = match v { [INFO] [stderr] | _____________________^ [INFO] [stderr] 382 | | &Kind::Rust(ref r) => r, [INFO] [stderr] 383 | | _ => return true, [INFO] [stderr] 384 | | }; [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] 381 | let r = match *v { [INFO] [stderr] 382 | Kind::Rust(ref r) => r, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:386:13 [INFO] [stderr] | [INFO] [stderr] 386 | / if let &Some(ref last_rust) = &last_rust { [INFO] [stderr] 387 | | if last_rust.loc == r.loc { [INFO] [stderr] 388 | | return false; [INFO] [stderr] 389 | | } [INFO] [stderr] 390 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 386 | if let Some(ref last_rust) = last_rust { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/llvmir.rs:65:35 [INFO] [stderr] | [INFO] [stderr] 65 | msg.push_str(&format!( [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 66 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 67 | | )); [INFO] [stderr] | |_____________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/asm/ast.rs:304:24 [INFO] [stderr] | [INFO] [stderr] 304 | .iter() [INFO] [stderr] | ________________________^ [INFO] [stderr] 305 | | .fold(false, |acc, x| acc || x.starts_with(".L")) [INFO] [stderr] | |_________________________________________________________________^ help: try: `.any(|x| x.starts_with(".L"))` [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: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:307:36 [INFO] [stderr] | [INFO] [stderr] 307 | self.instr.starts_with("b") [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:311:36 [INFO] [stderr] | [INFO] [stderr] 311 | self.instr.starts_with("b") && self.instr.len() > 1 [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/asm/ast.rs:346:34 [INFO] [stderr] | [INFO] [stderr] 346 | let l = arg.find(")"); [INFO] [stderr] | ^^^ help: try using a char instead: `')'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/ast.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | / match self { [INFO] [stderr] 374 | | &Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | | &Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | | &Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | | &Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] 378 | | } [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] 373 | match *self { [INFO] [stderr] 374 | Statement::Label(ref l) => l.rust_loc(), [INFO] [stderr] 375 | Statement::Directive(ref l) => l.rust_loc(), [INFO] [stderr] 376 | Statement::Instruction(ref l) => l.rust_loc(), [INFO] [stderr] 377 | Statement::Comment(ref l) => l.rust_loc(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:62:21 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 63 | | if loc.file_index == file.index { [INFO] [stderr] 64 | | function.file = Some(file); [INFO] [stderr] 65 | | } [INFO] [stderr] ... | [INFO] [stderr] 71 | | function.file = Some(file); [INFO] [stderr] 72 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 62 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/llvmir.rs:101:28 [INFO] [stderr] | [INFO] [stderr] 101 | while let Some(line) = line_iter.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for line in line_iter { .. }` [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:88:21 [INFO] [stderr] | [INFO] [stderr] 88 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 89 | | assert_eq!(new_loc.file_index, file.index); [INFO] [stderr] 90 | | } [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] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 88 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:117:35 [INFO] [stderr] | [INFO] [stderr] 117 | let first = line.find("@").unwrap(); [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:118:46 [INFO] [stderr] | [INFO] [stderr] 118 | let last = (&line[first..]).find("(").unwrap() + first; [INFO] [stderr] | ^^^ help: try using a char instead: `'('` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/asm/parse.rs:134:1 [INFO] [stderr] | [INFO] [stderr] 134 | / pub fn function(file: &::std::path::Path) -> Result { [INFO] [stderr] 135 | | let path = if let Some(path) = opts.path() { [INFO] [stderr] 136 | | path [INFO] [stderr] 137 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 317 | | ) [INFO] [stderr] 318 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/llvmir.rs:144:37 [INFO] [stderr] | [INFO] [stderr] 144 | for line in &function_lines[0..r + 1] { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=r` [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: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:147:53 [INFO] [stderr] | [INFO] [stderr] 147 | while let Some(f) = &line[start..].find("\"") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/llvmir.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ------------------------------^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `line[f..].find("\"").unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:153:41 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:159:21 [INFO] [stderr] | [INFO] [stderr] 159 | v.extend(".exit".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `v.push_str(".exit")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_extend_chars)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | demangled_line.extend(line[start..f].chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(line[start..f])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | demangled_line.extend(demangled_name.chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(&demangled_name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | demangled_line.extend("\"".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str("\"")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:216:17 [INFO] [stderr] | [INFO] [stderr] 216 | / if let &Some(ref function) = &function { [INFO] [stderr] 217 | | if function.file.is_some() { [INFO] [stderr] 218 | | break; [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 216 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:225:17 [INFO] [stderr] | [INFO] [stderr] 225 | / if let &Some(ref function) = &function { [INFO] [stderr] 226 | | if function.loc.is_none() { [INFO] [stderr] 227 | | break; [INFO] [stderr] 228 | | } [INFO] [stderr] 229 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 225 | if let Some(ref function) = function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/asm/parse.rs:283:5 [INFO] [stderr] | [INFO] [stderr] 283 | / if let &Some(ref f) = &function.file { [INFO] [stderr] 284 | | file_directive_table [INFO] [stderr] 285 | | .entry(f.index) [INFO] [stderr] 286 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 287 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 283 | if let Some(ref f) = function.file { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:289:9 [INFO] [stderr] | [INFO] [stderr] 289 | / if let &Statement::Directive(Directive::File(ref f)) = s { [INFO] [stderr] 290 | | file_directive_table [INFO] [stderr] 291 | | .entry(f.index) [INFO] [stderr] 292 | | .or_insert_with(|| f.clone()); [INFO] [stderr] 293 | | } [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] 289 | if let Statement::Directive(Directive::File(ref f)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/asm/parse.rs:300:9 [INFO] [stderr] | [INFO] [stderr] 300 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 301 | | if !file_directive_table.contains_key(&l.file_index) { [INFO] [stderr] 302 | | done = false; [INFO] [stderr] 303 | | error!( [INFO] [stderr] ... | [INFO] [stderr] 307 | | } [INFO] [stderr] 308 | | } [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] 300 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/asm/mod.rs:104:39 [INFO] [stderr] | [INFO] [stderr] 104 | msg.push_str(&format!( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 105 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 106 | | )); [INFO] [stderr] | |_________________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:32:19 [INFO] [stderr] | [INFO] [stderr] 32 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/path.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | let mut appending = if next_sub_path.is_none() { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `next_sub_path.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:76:23 [INFO] [stderr] | [INFO] [stderr] 76 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | / if let &Some(ref l) = l { [INFO] [stderr] 16 | | return Some(l.clone()); [INFO] [stderr] 17 | | } [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] 15 | if let Some(ref l) = *l { [INFO] [stderr] | ^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/build.rs:122:23 [INFO] [stderr] | [INFO] [stderr] 122 | let e = entry.expect(&format!( [INFO] [stderr] | _______________________^ [INFO] [stderr] 123 | | "failed to iterate over the directory: {}", [INFO] [stderr] 124 | | target_directory.display() [INFO] [stderr] 125 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("failed to iterate over the directory: {}", target_directory.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 65 | | debug!("inserting locs: {:?}", l); [INFO] [stderr] 66 | | files.entry(l.file_index).or_insert_with(|| { [INFO] [stderr] 67 | | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] ... | [INFO] [stderr] 80 | | debug!("files: {:?}", files);; [INFO] [stderr] 81 | | } [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] 64 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:67:57 [INFO] [stderr] | [INFO] [stderr] 67 | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 68 | | &format!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", [INFO] [stderr] 69 | | l, file_table)); [INFO] [stderr] | |____________________________________________^ help: try this: `unwrap_or_else(|| panic!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", l))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:114:53 [INFO] [stderr] | [INFO] [stderr] 114 | let fh = ::std::fs::File::open(&f.ast.path).expect(&format!( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 115 | | "[ERROR]: failed to open file: {}", [INFO] [stderr] 116 | | f.ast.path.display() [INFO] [stderr] 117 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("[ERROR]: failed to open file: {}", f.ast.path.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / match kind { [INFO] [stderr] 31 | | &Kind::Asm(ref a) => { [INFO] [stderr] 32 | | use asm::ast::Statement::*; [INFO] [stderr] 33 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [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] 30 | match *kind { [INFO] [stderr] 31 | Kind::Asm(ref a) => { [INFO] [stderr] 32 | use asm::ast::Statement::*; [INFO] [stderr] 33 | match a { [INFO] [stderr] 34 | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | / match a { [INFO] [stderr] 34 | | &Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | | &Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | | &Label(ref l) => { [INFO] [stderr] ... | [INFO] [stderr] 44 | | _ => {} [INFO] [stderr] 45 | | } [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] 33 | match *a { [INFO] [stderr] 34 | Comment(_) if !opts.print_comments() => return, [INFO] [stderr] 35 | Directive(_) if !opts.print_directives() => return, [INFO] [stderr] 36 | Label(ref l) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:55:33 [INFO] [stderr] | [INFO] [stderr] 55 | let part_of_main_function = match kind { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 56 | | &Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | | &Kind::Rust(ref r) => is_rust_in_function(function, r), [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] 55 | let part_of_main_function = match *kind { [INFO] [stderr] 56 | Kind::Asm(ref a) => is_stmt_in_function(function, a), [INFO] [stderr] 57 | Kind::Rust(ref r) => is_rust_in_function(function, r), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | let indent = match kind { [INFO] [stderr] | __________________^ [INFO] [stderr] 61 | | &Kind::Asm(ref a) => { [INFO] [stderr] 62 | | use asm::ast::Statement::*; [INFO] [stderr] 63 | | match *a { [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | }; [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] 60 | let indent = match *kind { [INFO] [stderr] 61 | Kind::Asm(ref a) => { [INFO] [stderr] 62 | use asm::ast::Statement::*; [INFO] [stderr] 63 | match *a { [INFO] [stderr] 64 | Comment(_) | Directive(_) | Instruction(_) => { [INFO] [stderr] 65 | if !opts.rust() || part_of_main_function { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / match kind { [INFO] [stderr] 129 | | &Kind::Asm(ref a) => { [INFO] [stderr] 130 | | use asm::ast::Statement::*; [INFO] [stderr] 131 | | match a { [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [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] 128 | match *kind { [INFO] [stderr] 129 | Kind::Asm(ref a) => { [INFO] [stderr] 130 | use asm::ast::Statement::*; [INFO] [stderr] 131 | match a { [INFO] [stderr] 132 | &Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | / match a { [INFO] [stderr] 132 | | &Label(ref l) => { [INFO] [stderr] 133 | | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 188 | | } [INFO] [stderr] 189 | | } [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] 131 | match *a { [INFO] [stderr] 132 | Label(ref l) => { [INFO] [stderr] 133 | buffer.set_color(&label_color).unwrap(); [INFO] [stderr] 134 | write!(&mut buffer, "{}", l.id).unwrap(); [INFO] [stderr] 135 | write!(&mut buffer, ":").unwrap(); [INFO] [stderr] 136 | if opts.debug_mode() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:140:38 [INFO] [stderr] | [INFO] [stderr] 140 | &Directive(ref d) => match d { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 141 | | &asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | | write!( [INFO] [stderr] 143 | | &mut buffer, [INFO] [stderr] ... | [INFO] [stderr] 158 | | } [INFO] [stderr] 159 | | }, [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] 140 | &Directive(ref d) => match *d { [INFO] [stderr] 141 | asm::ast::Directive::File(ref f) => { [INFO] [stderr] 142 | write!( [INFO] [stderr] 143 | &mut buffer, [INFO] [stderr] 144 | ".file {} \"{}\"", [INFO] [stderr] 145 | f.index, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if !result.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / if let &Some(ref file) = &function.file { [INFO] [stderr] 218 | | if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] ... | [INFO] [stderr] 225 | | } [INFO] [stderr] 226 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 217 | if let Some(ref file) = function.file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | / if let &Some(ref loc) = &function.loc { [INFO] [stderr] 219 | | return format!( [INFO] [stderr] 220 | | "{} ({}:{})", [INFO] [stderr] 221 | | function.id, [INFO] [stderr] ... | [INFO] [stderr] 224 | | ); [INFO] [stderr] 225 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 218 | if let Some(ref loc) = function.loc { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:231:9 [INFO] [stderr] | [INFO] [stderr] 231 | format!("{}", function.id) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `function.id.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | / if let &mut Some(ref mut file) = &mut function.file { [INFO] [stderr] 309 | | make_path_relative(&mut file.path) [INFO] [stderr] 310 | | } [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] 308 | if let Some(ref mut file) = *(&mut function.file) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/display.rs:381:21 [INFO] [stderr] | [INFO] [stderr] 381 | let r = match v { [INFO] [stderr] | _____________________^ [INFO] [stderr] 382 | | &Kind::Rust(ref r) => r, [INFO] [stderr] 383 | | _ => return true, [INFO] [stderr] 384 | | }; [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] 381 | let r = match *v { [INFO] [stderr] 382 | Kind::Rust(ref r) => r, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/display.rs:386:13 [INFO] [stderr] | [INFO] [stderr] 386 | / if let &Some(ref last_rust) = &last_rust { [INFO] [stderr] 387 | | if last_rust.loc == r.loc { [INFO] [stderr] 388 | | return false; [INFO] [stderr] 389 | | } [INFO] [stderr] 390 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 386 | if let Some(ref last_rust) = last_rust { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/llvmir.rs:65:35 [INFO] [stderr] | [INFO] [stderr] 65 | msg.push_str(&format!( [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 66 | | "Is it one of the following functions?\n\n" [INFO] [stderr] 67 | | )); [INFO] [stderr] | |_____________________^ help: consider using .to_string(): `"Is it one of the following functions?\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/llvmir.rs:101:28 [INFO] [stderr] | [INFO] [stderr] 101 | while let Some(line) = line_iter.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `for line in line_iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:117:35 [INFO] [stderr] | [INFO] [stderr] 117 | let first = line.find("@").unwrap(); [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:118:46 [INFO] [stderr] | [INFO] [stderr] 118 | let last = (&line[first..]).find("(").unwrap() + first; [INFO] [stderr] | ^^^ help: try using a char instead: `'('` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/llvmir.rs:144:37 [INFO] [stderr] | [INFO] [stderr] 144 | for line in &function_lines[0..r + 1] { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=r` [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: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:147:53 [INFO] [stderr] | [INFO] [stderr] 147 | while let Some(f) = &line[start..].find("\"") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/llvmir.rs:153:25 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ------------------------------^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `line[f..].find("\"").unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/llvmir.rs:153:41 [INFO] [stderr] | [INFO] [stderr] 153 | let l = &line[f..].find("\"").unwrap() + f; [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:159:21 [INFO] [stderr] | [INFO] [stderr] 159 | v.extend(".exit".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `v.push_str(".exit")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_extend_chars)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:168:17 [INFO] [stderr] | [INFO] [stderr] 168 | demangled_line.extend(line[start..f].chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(line[start..f])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | demangled_line.extend(demangled_name.chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str(&demangled_name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: calling `.extend(_.chars())` [INFO] [stderr] --> src/llvmir.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | demangled_line.extend("\"".chars()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `demangled_line.push_str("\"")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:32:19 [INFO] [stderr] | [INFO] [stderr] 32 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/path.rs:54:25 [INFO] [stderr] | [INFO] [stderr] 54 | let mut appending = if next_sub_path.is_none() { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `next_sub_path.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/path.rs:76:23 [INFO] [stderr] | [INFO] [stderr] 76 | } else if matching == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `matching` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | / if let &Some(ref l) = l { [INFO] [stderr] 16 | | return Some(l.clone()); [INFO] [stderr] 17 | | } [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] 15 | if let Some(ref l) = *l { [INFO] [stderr] | ^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | / if let &Statement::Directive(Directive::Loc(ref l)) = s { [INFO] [stderr] 65 | | debug!("inserting locs: {:?}", l); [INFO] [stderr] 66 | | files.entry(l.file_index).or_insert_with(|| { [INFO] [stderr] 67 | | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] ... | [INFO] [stderr] 80 | | debug!("files: {:?}", files);; [INFO] [stderr] 81 | | } [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] 64 | if let Statement::Directive(Directive::Loc(ref l)) = *s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:67:57 [INFO] [stderr] | [INFO] [stderr] 67 | let ast = file_table.get(&l.file_index).expect( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 68 | | &format!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", [INFO] [stderr] 69 | | l, file_table)); [INFO] [stderr] | |____________________________________________^ help: try this: `unwrap_or_else(|| panic!("[ERROR]: incomplete file table. Location {:?} 's file is not in the file table:\n{:?}", l))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/rust.rs:114:53 [INFO] [stderr] | [INFO] [stderr] 114 | let fh = ::std::fs::File::open(&f.ast.path).expect(&format!( [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 115 | | "[ERROR]: failed to open file: {}", [INFO] [stderr] 116 | | f.ast.path.display() [INFO] [stderr] 117 | | )); [INFO] [stderr] | |__________^ help: try this: `unwrap_or_else(|_| panic!("[ERROR]: failed to open file: {}", f.ast.path.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if !result.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 8.58s [INFO] running `"docker" "inspect" "a5a1fa72c3e2e32cf8f9815e4fc22b8a5367e92bdc0355b06dd99b6b669a4452"` [INFO] running `"docker" "rm" "-f" "a5a1fa72c3e2e32cf8f9815e4fc22b8a5367e92bdc0355b06dd99b6b669a4452"` [INFO] [stdout] a5a1fa72c3e2e32cf8f9815e4fc22b8a5367e92bdc0355b06dd99b6b669a4452