[INFO] crate cargo-web 0.6.21 is already in cache [INFO] extracting crate cargo-web 0.6.21 into work/ex/clippy-test-run/sources/stable/reg/cargo-web/0.6.21 [INFO] extracting crate cargo-web 0.6.21 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cargo-web/0.6.21 [INFO] validating manifest of cargo-web-0.6.21 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-web-0.6.21 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-web-0.6.21 [INFO] finished frobbing cargo-web-0.6.21 [INFO] frobbed toml for cargo-web-0.6.21 written to work/ex/clippy-test-run/sources/stable/reg/cargo-web/0.6.21/Cargo.toml [INFO] started frobbing cargo-web-0.6.21 [INFO] finished frobbing cargo-web-0.6.21 [INFO] frobbed toml for cargo-web-0.6.21 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cargo-web/0.6.21/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-web-0.6.21 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/cargo-web/0.6.21:/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] b0fba674e9db5b6936e3bc22001251833b26063ba205ff08873bd3fc5e81cbaf [INFO] running `"docker" "start" "-a" "b0fba674e9db5b6936e3bc22001251833b26063ba205ff08873bd3fc5e81cbaf"` [INFO] [stderr] Compiling openssl v0.10.13 [INFO] [stderr] Checking base-x v0.2.4 [INFO] [stderr] Compiling openssl-src v110.0.7+1.1.0i [INFO] [stderr] Checking parity-wasm v0.35.7 [INFO] [stderr] Checking cargo_metadata v0.6.4 [INFO] [stderr] Checking handlebars v1.1.0 [INFO] [stderr] Checking tokio-reactor v0.1.8 [INFO] [stderr] Checking tokio-threadpool v0.1.11 [INFO] [stderr] Compiling openssl-sys v0.9.37 [INFO] [stderr] Checking tokio-udp v0.1.3 [INFO] [stderr] Checking tokio-tcp v0.1.3 [INFO] [stderr] Checking tokio-uds v0.2.5 [INFO] [stderr] Checking inotify v0.6.1 [INFO] [stderr] Checking tokio-fs v0.1.5 [INFO] [stderr] Checking notify v4.0.7 [INFO] [stderr] Checking tokio v0.1.15 [INFO] [stderr] Checking hyper v0.12.23 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Compiling native-tls v0.2.1 [INFO] [stderr] Checking tokio-tls v0.2.1 [INFO] [stderr] Checking hyper-tls v0.3.1 [INFO] [stderr] Checking websocket v0.21.1 [INFO] [stderr] Checking reqwest v0.9.9 [INFO] [stderr] Checking cargo-web v0.6.21 (/opt/crater/workdir) [INFO] [stderr] warning: using `writeln!(fp, "")` [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | writeln!( fp, "" )?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(fp)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cargo_shim/mod.rs:242:21 [INFO] [stderr] | [INFO] [stderr] 242 | manifest_path: manifest_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `manifest_path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wasm_gc.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | memories: memories, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `memories` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `writeln!(fp, "")` [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | writeln!( fp, "" )?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(fp)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cargo_shim/mod.rs:242:21 [INFO] [stderr] | [INFO] [stderr] 242 | manifest_path: manifest_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `manifest_path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/wasm_gc.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | memories: memories, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `memories` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cargo_shim/mod.rs:575:9 [INFO] [stderr] | [INFO] [stderr] 575 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/config.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | return Err( format!( "{}: you can't have multiple 'link-args' defined for a single target", config.source() ).into() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( format!( "{}: you can't have multiple 'link-args' defined for a single target", config.source() ).into() )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/config.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | return Err( format!( "{}: you can't have multiple 'prepend-js' defined for a single target", config.source() ).into() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( format!( "{}: you can't have multiple 'prepend-js' defined for a single target", config.source() ).into() )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config.rs:98:22 [INFO] [stderr] | [INFO] [stderr] 98 | const ALL_BACKENDS: &'static [Backend] = &[ [INFO] [stderr] | -^^^^^^^---------- help: consider removing `'static`: `&[Backend]` [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: unneeded return statement [INFO] [stderr] --> src/package.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | return unpack_path; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `unpack_path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:240:25 [INFO] [stderr] | [INFO] [stderr] 240 | None => return Err( Error::ConfigurationError( format!( "no library targets found" ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no library targets found" ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:246:25 [INFO] [stderr] | [INFO] [stderr] 246 | None => return Err( Error::ConfigurationError( format!( "no bin target named `{}`", name ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no bin target named `{}`", name ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:252:25 [INFO] [stderr] | [INFO] [stderr] 252 | None => return Err( Error::ConfigurationError( format!( "no example target named `{}`", name ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no example target named `{}`", name ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:258:25 [INFO] [stderr] | [INFO] [stderr] 258 | None => return Err( Error::ConfigurationError( format!( "no bench target named `{}`", name ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no bench target named `{}`", name ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/deployment.rs:20:37 [INFO] [stderr] | [INFO] [stderr] 20 | const DEFAULT_INDEX_HTML_TEMPLATE: &'static str = r#" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/wasm_gc.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | return v [INFO] [stderr] | ^^^^^^^^ help: remove `return` as shown: `v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wasm_inline_js.rs:134:33 [INFO] [stderr] | [INFO] [stderr] 134 | function_index: 0xFFFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wasm_context.rs:575:41 [INFO] [stderr] | [INFO] [stderr] 575 | type_index: 0xFFFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wasm_context.rs:687:50 [INFO] [stderr] | [INFO] [stderr] 687 | assert_eq!( *type_index, 0xFFFFFFFF, "function type was already set" ); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^-------------------------------------------------------------------------- help: consider removing `'static`: `&[(&'static str, &'static [ValueType], Option< ValueType >, &'static str)]` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:31 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:45 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^------------ help: consider removing `'static`: `&[ValueType]` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:88 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_js_export.rs:39:23 [INFO] [stderr] | [INFO] [stderr] 39 | const ENCODING_BASE: &'static [u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_js_export.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | const PREFIX: &'static str = "__JS_EXPORT_"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:19:23 [INFO] [stderr] | [INFO] [stderr] 19 | size: 211505607 [INFO] [stderr] | ^^^^^^^^^ help: consider: `211_505_607` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:28:23 [INFO] [stderr] | [INFO] [stderr] 28 | size: 223770839 [INFO] [stderr] | ^^^^^^^^^ help: consider: `223_770_839` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:46:23 [INFO] [stderr] | [INFO] [stderr] 46 | size: 15818455 [INFO] [stderr] | ^^^^^^^^ help: consider: `15_818_455` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:55:23 [INFO] [stderr] | [INFO] [stderr] 55 | size: 15951181 [INFO] [stderr] | ^^^^^^^^ help: consider: `15_951_181` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/test_chromium.rs:35:33 [INFO] [stderr] | [INFO] [stderr] 35 | const DEFAULT_TEST_INDEX_HTML: &'static str = r#" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:148:32 [INFO] [stderr] | [INFO] [stderr] 148 | Ok( value ) => return Ok( value ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok( value )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:149:33 [INFO] [stderr] | [INFO] [stderr] 149 | Err( error ) => return Err( error.into() ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( error.into() )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:152:14 [INFO] [stderr] | [INFO] [stderr] 152 | _ => return Err( ReplyError::MalformedMessage( "non text message received" ) ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( ReplyError::MalformedMessage( "non text message received" ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:299:32 [INFO] [stderr] | [INFO] [stderr] 299 | Some( message ) => return owned_message_to_json( message ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `owned_message_to_json( message )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:300:21 [INFO] [stderr] | [INFO] [stderr] 300 | None => return Err( ReplyError::Timeout ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( ReplyError::Timeout )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cmd_start.rs:42:22 [INFO] [stderr] | [INFO] [stderr] 42 | const TEMPLATE: &'static str = r##" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cmd_test.rs:26:25 [INFO] [stderr] | [INFO] [stderr] 26 | pub const TEST_RUNNER: &'static str = include_str!( "test_runner.js" ); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cmd_test.rs:141:12 [INFO] [stderr] | [INFO] [stderr] 141 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 142 | | if project.backend().is_native_wasm() { [INFO] [stderr] 143 | | eprintln!( "All tests passed!" ); [INFO] [stderr] 144 | | // At least **I hope** that's the case; there are no prints [INFO] [stderr] 145 | | // when running those tests, so who knows what happens. *shrug* [INFO] [stderr] 146 | | } [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 141 | } else if project.backend().is_native_wasm() { [INFO] [stderr] 142 | eprintln!( "All tests passed!" ); [INFO] [stderr] 143 | // At least **I hope** that's the case; there are no prints [INFO] [stderr] 144 | // when running those tests, so who knows what happens. *shrug* [INFO] [stderr] 145 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cmd_prepare_emscripten.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | None => return Err( Error::EmscriptenNotAvailable ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::EmscriptenNotAvailable )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cmd_prepare_emscripten.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | Some( _emscripten ) => return Ok( () ), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok( () )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / return app [INFO] [stderr] 96 | | .arg( [INFO] [stderr] 97 | | Arg::with_name( "package" ) [INFO] [stderr] 98 | | .short( "p" ) [INFO] [stderr] ... | [INFO] [stderr] 169 | | .hidden( true ) [INFO] [stderr] 170 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 95 | app [INFO] [stderr] 96 | .arg( [INFO] [stderr] 97 | Arg::with_name( "package" ) [INFO] [stderr] 98 | .short( "p" ) [INFO] [stderr] 99 | .long( "package" ) [INFO] [stderr] 100 | .help( "Package to build" ) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cargo_shim/mod.rs:575:9 [INFO] [stderr] | [INFO] [stderr] 575 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/config.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | return Err( format!( "{}: you can't have multiple 'link-args' defined for a single target", config.source() ).into() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( format!( "{}: you can't have multiple 'link-args' defined for a single target", config.source() ).into() )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/config.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | return Err( format!( "{}: you can't have multiple 'prepend-js' defined for a single target", config.source() ).into() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( format!( "{}: you can't have multiple 'prepend-js' defined for a single target", config.source() ).into() )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config.rs:98:22 [INFO] [stderr] | [INFO] [stderr] 98 | const ALL_BACKENDS: &'static [Backend] = &[ [INFO] [stderr] | -^^^^^^^---------- help: consider removing `'static`: `&[Backend]` [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: unneeded return statement [INFO] [stderr] --> src/package.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | return unpack_path; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `unpack_path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:240:25 [INFO] [stderr] | [INFO] [stderr] 240 | None => return Err( Error::ConfigurationError( format!( "no library targets found" ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no library targets found" ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:246:25 [INFO] [stderr] | [INFO] [stderr] 246 | None => return Err( Error::ConfigurationError( format!( "no bin target named `{}`", name ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no bin target named `{}`", name ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:252:25 [INFO] [stderr] | [INFO] [stderr] 252 | None => return Err( Error::ConfigurationError( format!( "no example target named `{}`", name ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no example target named `{}`", name ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build.rs:258:25 [INFO] [stderr] | [INFO] [stderr] 258 | None => return Err( Error::ConfigurationError( format!( "no bench target named `{}`", name ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::ConfigurationError( format!( "no bench target named `{}`", name ) ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/deployment.rs:20:37 [INFO] [stderr] | [INFO] [stderr] 20 | const DEFAULT_INDEX_HTML_TEMPLATE: &'static str = r#" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/wasm_gc.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | return v [INFO] [stderr] | ^^^^^^^^ help: remove `return` as shown: `v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wasm_inline_js.rs:134:33 [INFO] [stderr] | [INFO] [stderr] 134 | function_index: 0xFFFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wasm_context.rs:575:41 [INFO] [stderr] | [INFO] [stderr] 575 | type_index: 0xFFFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/wasm_context.rs:687:50 [INFO] [stderr] | [INFO] [stderr] 687 | assert_eq!( *type_index, 0xFFFFFFFF, "function type was already set" ); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^-------------------------------------------------------------------------- help: consider removing `'static`: `&[(&'static str, &'static [ValueType], Option< ValueType >, &'static str)]` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:31 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:45 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^------------ help: consider removing `'static`: `&[ValueType]` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_intrinsics.rs:12:88 [INFO] [stderr] | [INFO] [stderr] 12 | const INTRINSICS: &'static [(&'static str, &'static [ValueType], Option< ValueType >, &'static str)] = &[ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_js_export.rs:39:23 [INFO] [stderr] | [INFO] [stderr] 39 | const ENCODING_BASE: &'static [u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/wasm_js_export.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | const PREFIX: &'static str = "__JS_EXPORT_"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:19:23 [INFO] [stderr] | [INFO] [stderr] 19 | size: 211505607 [INFO] [stderr] | ^^^^^^^^^ help: consider: `211_505_607` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:28:23 [INFO] [stderr] | [INFO] [stderr] 28 | size: 223770839 [INFO] [stderr] | ^^^^^^^^^ help: consider: `223_770_839` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:46:23 [INFO] [stderr] | [INFO] [stderr] 46 | size: 15818455 [INFO] [stderr] | ^^^^^^^^ help: consider: `15_818_455` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/emscripten.rs:55:23 [INFO] [stderr] | [INFO] [stderr] 55 | size: 15951181 [INFO] [stderr] | ^^^^^^^^ help: consider: `15_951_181` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/test_chromium.rs:35:33 [INFO] [stderr] | [INFO] [stderr] 35 | const DEFAULT_TEST_INDEX_HTML: &'static str = r#" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:148:32 [INFO] [stderr] | [INFO] [stderr] 148 | Ok( value ) => return Ok( value ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok( value )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:149:33 [INFO] [stderr] | [INFO] [stderr] 149 | Err( error ) => return Err( error.into() ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( error.into() )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:152:14 [INFO] [stderr] | [INFO] [stderr] 152 | _ => return Err( ReplyError::MalformedMessage( "non text message received" ) ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( ReplyError::MalformedMessage( "non text message received" ) )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:299:32 [INFO] [stderr] | [INFO] [stderr] 299 | Some( message ) => return owned_message_to_json( message ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `owned_message_to_json( message )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chrome_devtools.rs:300:21 [INFO] [stderr] | [INFO] [stderr] 300 | None => return Err( ReplyError::Timeout ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( ReplyError::Timeout )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cmd_start.rs:42:22 [INFO] [stderr] | [INFO] [stderr] 42 | const TEMPLATE: &'static str = r##" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cmd_test.rs:26:25 [INFO] [stderr] | [INFO] [stderr] 26 | pub const TEST_RUNNER: &'static str = include_str!( "test_runner.js" ); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cmd_test.rs:141:12 [INFO] [stderr] | [INFO] [stderr] 141 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 142 | | if project.backend().is_native_wasm() { [INFO] [stderr] 143 | | eprintln!( "All tests passed!" ); [INFO] [stderr] 144 | | // At least **I hope** that's the case; there are no prints [INFO] [stderr] 145 | | // when running those tests, so who knows what happens. *shrug* [INFO] [stderr] 146 | | } [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 141 | } else if project.backend().is_native_wasm() { [INFO] [stderr] 142 | eprintln!( "All tests passed!" ); [INFO] [stderr] 143 | // At least **I hope** that's the case; there are no prints [INFO] [stderr] 144 | // when running those tests, so who knows what happens. *shrug* [INFO] [stderr] 145 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cmd_prepare_emscripten.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | None => return Err( Error::EmscriptenNotAvailable ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err( Error::EmscriptenNotAvailable )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cmd_prepare_emscripten.rs:7:32 [INFO] [stderr] | [INFO] [stderr] 7 | Some( _emscripten ) => return Ok( () ), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok( () )` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / return app [INFO] [stderr] 96 | | .arg( [INFO] [stderr] 97 | | Arg::with_name( "package" ) [INFO] [stderr] 98 | | .short( "p" ) [INFO] [stderr] ... | [INFO] [stderr] 169 | | .hidden( true ) [INFO] [stderr] 170 | | ); [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 95 | app [INFO] [stderr] 96 | .arg( [INFO] [stderr] 97 | Arg::with_name( "package" ) [INFO] [stderr] 98 | .short( "p" ) [INFO] [stderr] 99 | .long( "package" ) [INFO] [stderr] 100 | .help( "Package to build" ) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Bench` [INFO] [stderr] --> src/cargo_shim/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | Bench [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `default_package` [INFO] [stderr] --> src/cargo_shim/mod.rs:346:5 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn default_package( &self ) -> Option< &CargoPackage > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:80:35 [INFO] [stderr] | [INFO] [stderr] 80 | if code.code.starts_with( "E" ) { [INFO] [stderr] | ^^^ help: try using a char instead: `'E'` [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 should use the `starts_with` method [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:221:11 [INFO] [stderr] | [INFO] [stderr] 221 | while p.chars().next() == Some( ' ' ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `p.starts_with(' ')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::chars_next_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_next_cmp [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:309:28 [INFO] [stderr] | [INFO] [stderr] 309 | if !message.ends_with( "\n" ) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: redundant closure found [INFO] [stderr] --> src/cargo_shim/mod.rs:220:48 [INFO] [stderr] | [INFO] [stderr] 220 | let output = command.output().map_err( |err| Error::CannotLaunchCargo( err ) )?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Error::CannotLaunchCargo` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/cargo_shim/mod.rs:226:55 [INFO] [stderr] | [INFO] [stderr] 226 | serde_json::from_str( metadata ).map_err( |err| Error::CannotParseCargoOutput( err ) )?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Error::CannotParseCargoOutput` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cargo_shim/mod.rs:268:38 [INFO] [stderr] | [INFO] [stderr] 268 | let target = match json.get( "target" ).unwrap() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 269 | | &serde_json::Value::Null => None, [INFO] [stderr] 270 | | &serde_json::Value::String( ref target ) => { [INFO] [stderr] 271 | | let target = match target.replace( " ", "" ).as_str() { [INFO] [stderr] ... | [INFO] [stderr] 280 | | _ => unreachable!() [INFO] [stderr] 281 | | }; [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] 268 | let target = match *json.get( "target" ).unwrap() { [INFO] [stderr] 269 | serde_json::Value::Null => None, [INFO] [stderr] 270 | serde_json::Value::String( ref target ) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/cargo_shim/mod.rs:405:41 [INFO] [stderr] | [INFO] [stderr] 405 | let dependency_index = *package_map.get( dependency_id ).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&package_map[dependency_id]` [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/cargo_shim/mod.rs:552:12 [INFO] [stderr] | [INFO] [stderr] 552 | if result.is_ok() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!result.is_ok()` [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: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/cargo_shim/mod.rs:578:5 [INFO] [stderr] | [INFO] [stderr] 578 | / fn build_internal< F >( &self, postprocess: &mut Option< F > ) -> CargoResult [INFO] [stderr] 579 | | where F: for <'a> FnMut( Vec< PathBuf > ) -> Vec< PathBuf > [INFO] [stderr] 580 | | { [INFO] [stderr] 581 | | let mut command = self.as_command(); [INFO] [stderr] ... | [INFO] [stderr] 776 | | } [INFO] [stderr] 777 | | } [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/cargo_shim/mod.rs:583:25 [INFO] [stderr] | [INFO] [stderr] 583 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] | _________________________^ [INFO] [stderr] 584 | | .map( |paths| env::split_paths( &paths ).collect() ) [INFO] [stderr] 585 | | .unwrap_or( Vec::new() ); [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 583 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] 584 | .map( |paths| env::split_paths( &paths ).collect() ).unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/utils.rs:45:25 [INFO] [stderr] | [INFO] [stderr] 45 | let mut paths = env::var_os( "PATH" ).map( |paths| env::split_paths( &paths ).collect() ).unwrap_or( Vec::new() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `env::var_os( "PATH" ).map( |paths| env::split_paths( &paths ).collect() ).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/utils.rs:75:16 [INFO] [stderr] | [INFO] [stderr] 75 | let path = env::var_os( "PATH" ).unwrap_or( OsString::new() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `env::var_os( "PATH" ).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/utils.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | cmds.into_iter().map( |&s| s ).filter( |&s| has_cmd( s ) ).next() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|&s| has_cmd( s )).next()` with `find(|&s| has_cmd( s ))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/utils.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | cmds.into_iter().map( |&s| s ).filter( |&s| has_cmd( s ) ).next() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `cmds.into_iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/utils.rs:84:10 [INFO] [stderr] | [INFO] [stderr] 84 | cmds.into_iter().map( |&s| s ).filter( |&s| has_cmd( s ) ).next() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/config.rs:76:61 [INFO] [stderr] | [INFO] [stderr] 76 | let per_target = config.per_target.entry( backend ).or_insert( Default::default() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Default::default)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/config.rs:88:61 [INFO] [stderr] | [INFO] [stderr] 88 | let per_target = config.per_target.entry( backend ).or_insert( Default::default() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Default::default)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build.rs:240:64 [INFO] [stderr] | [INFO] [stderr] 240 | None => return Err( Error::ConfigurationError( format!( "no library targets found" ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no library targets found".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: useless use of `format!` [INFO] [stderr] --> src/build.rs:283:25 [INFO] [stderr] | [INFO] [stderr] 283 | return Err( format!( "`--runtime` can be only used with `--target=wasm32-unknown-unknown`" ).into() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"`--runtime` can be only used with `--target=wasm32-unknown-unknown`".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: single-character string constant used as pattern [INFO] [stderr] --> src/build.rs:482:34 [INFO] [stderr] | [INFO] [stderr] 482 | if arg.contains( " " ) { [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/build.rs:607:42 [INFO] [stderr] | [INFO] [stderr] 607 | for line in stdout.trim().split( "\n" ) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/build.rs:608:53 [INFO] [stderr] | [INFO] [stderr] 608 | let target = &line[ 0..line.find( " " ).unwrap_or( line.len() ) ]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| line.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/build.rs:608:47 [INFO] [stderr] | [INFO] [stderr] 608 | let target = &line[ 0..line.find( " " ).unwrap_or( line.len() ) ]; [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/build.rs:707:12 [INFO] [stderr] | [INFO] [stderr] 707 | if result.is_ok() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!result.is_ok()` [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: single-character string constant used as pattern [INFO] [stderr] --> src/deployment.rs:176:29 [INFO] [stderr] | [INFO] [stderr] 176 | if url.starts_with( "/" ) { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/deployment.rs:195:45 [INFO] [stderr] | [INFO] [stderr] 195 | else if url.ends_with( ".jpg" ) { "image/jpeg" } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/deployment.rs:194:46 [INFO] [stderr] | [INFO] [stderr] 194 | else if url.ends_with( ".jpeg" ) { "image/jpeg" } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/deployment.rs:213:45 [INFO] [stderr] | [INFO] [stderr] 213 | for chunk in url.split( "/" ) { [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/deployment.rs:249:51 [INFO] [stderr] | [INFO] [stderr] 249 | for chunk in route.key.split( "/" ) { [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/error.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / match self { [INFO] [stderr] 75 | | &Error::RuntimeError( _, ref inner ) => write!( formatter, "{}: {}", self.description(), inner ), [INFO] [stderr] 76 | | &Error::CargoShimError( cargo_shim::Error::CargoFailed( ref message ) ) => write!( formatter, "{}", message ), [INFO] [stderr] 77 | | &Error::CargoShimError( ref inner ) => write!( formatter, "{}", inner ), [INFO] [stderr] ... | [INFO] [stderr] 85 | | _ => write!( formatter, "{}", self.description() ) [INFO] [stderr] 86 | | } [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] 74 | match *self { [INFO] [stderr] 75 | Error::RuntimeError( _, ref inner ) => write!( formatter, "{}: {}", self.description(), inner ), [INFO] [stderr] 76 | Error::CargoShimError( cargo_shim::Error::CargoFailed( ref message ) ) => write!( formatter, "{}", message ), [INFO] [stderr] 77 | Error::CargoShimError( ref inner ) => write!( formatter, "{}", inner ), [INFO] [stderr] 78 | Error::CannotLoadFile( ref path, ref inner ) => write!( formatter, "cannot load file {:?}: {}", path, inner ), [INFO] [stderr] 79 | Error::CannotRemoveDirectory( ref path, ref inner ) => write!( formatter, "cannot remove directory {:?}: {}", path, inner ), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:255:9 [INFO] [stderr] | [INFO] [stderr] 255 | drop(table); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_ref)] on by default [INFO] [stderr] note: argument has type &parity_wasm::elements::TableType [INFO] [stderr] --> src/wasm_gc.rs:255:14 [INFO] [stderr] | [INFO] [stderr] 255 | drop(table); [INFO] [stderr] | ^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wasm_gc.rs:276:38 [INFO] [stderr] | [INFO] [stderr] 276 | fn add_global_type(&mut self, t: &GlobalType) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `GlobalType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wasm_gc.rs:303:41 [INFO] [stderr] | [INFO] [stderr] 303 | fn add_value_type(&mut self, value: &ValueType) { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `ValueType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wasm_gc.rs:339:38 [INFO] [stderr] | [INFO] [stderr] 339 | fn add_block_type(&mut self, bt: &BlockType) { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `BlockType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/wasm_gc.rs:414:18 [INFO] [stderr] | [INFO] [stderr] 414 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:481:9 [INFO] [stderr] | [INFO] [stderr] 481 | s.types().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.types().is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:500:9 [INFO] [stderr] | [INFO] [stderr] 500 | drop(t); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::ValueType [INFO] [stderr] --> src/wasm_gc.rs:500:14 [INFO] [stderr] | [INFO] [stderr] 500 | drop(t); [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:508:9 [INFO] [stderr] | [INFO] [stderr] 508 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:529:9 [INFO] [stderr] | [INFO] [stderr] 529 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:539:13 [INFO] [stderr] | [INFO] [stderr] 539 | drop(t); // TODO [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::TableType [INFO] [stderr] --> src/wasm_gc.rs:539:18 [INFO] [stderr] | [INFO] [stderr] 539 | drop(t); // TODO [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:541:9 [INFO] [stderr] | [INFO] [stderr] 541 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:547:13 [INFO] [stderr] | [INFO] [stderr] 547 | drop(m); // TODO [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::MemoryType [INFO] [stderr] --> src/wasm_gc.rs:547:18 [INFO] [stderr] | [INFO] [stderr] 547 | drop(m); // TODO [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:549:9 [INFO] [stderr] | [INFO] [stderr] 549 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:557:9 [INFO] [stderr] | [INFO] [stderr] 557 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | drop(s); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::GlobalType [INFO] [stderr] --> src/wasm_gc.rs:566:14 [INFO] [stderr] | [INFO] [stderr] 566 | drop(s); [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:580:9 [INFO] [stderr] | [INFO] [stderr] 580 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:614:9 [INFO] [stderr] | [INFO] [stderr] 614 | s.bodies().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.bodies().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:695:15 [INFO] [stderr] | [INFO] [stderr] 695 | while data.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &FunctionKind::Import { type_index, ref import, .. } = function { [INFO] [stderr] 63 | | if import.module == "env" && import.field.starts_with( "__js_" ) { [INFO] [stderr] 64 | | shim_map.insert( function_index, type_index ); [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [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] 62 | if let FunctionKind::Import { type_index, ref import, .. } = *function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / if let &FunctionKind::Definition { ref instructions, .. } = function { [INFO] [stderr] 71 | | for (index, instruction) in instructions.iter().enumerate() { [INFO] [stderr] 72 | | match instruction { [INFO] [stderr] 73 | | &Instruction::Call( function_index ) => { [INFO] [stderr] ... | [INFO] [stderr] 91 | | } [INFO] [stderr] 92 | | } [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] 70 | if let FunctionKind::Definition { ref instructions, .. } = *function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wasm_inline_js.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | / match instruction { [INFO] [stderr] 73 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 74 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 75 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 89 | | _ => {} [INFO] [stderr] 90 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 72 | if let &Instruction::Call( function_index ) = instruction { [INFO] [stderr] 73 | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 74 | match instructions[ index - 1 ] { [INFO] [stderr] 75 | Instruction::I32Const( offset ) => { [INFO] [stderr] 76 | if let Some( previous_ty ) = snippet_offset_to_type_index.get( &offset ).cloned() { [INFO] [stderr] 77 | if type_index != previous_ty { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | / match instruction { [INFO] [stderr] 73 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 74 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 75 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 89 | | _ => {} [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *instruction { [INFO] [stderr] 73 | Instruction::Call( function_index ) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/wasm_inline_js.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | Err( _ ) => { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/wasm_inline_js.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | return_type: shim_ty.return_type.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `shim_ty.return_type` [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: variant is never constructed: `Bench` [INFO] [stderr] --> src/cargo_shim/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | Bench [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `default_package` [INFO] [stderr] --> src/cargo_shim/mod.rs:346:5 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn default_package( &self ) -> Option< &CargoPackage > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/wasm_inline_js.rs:162:75 [INFO] [stderr] | [INFO] [stderr] 162 | let slice = &slice[ 0..slice.iter().position( |&byte| byte == 0 ).unwrap_or( slice.len() ) ]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| slice.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | / match instruction { [INFO] [stderr] 194 | | &Instruction::Call( function_index ) => shim_map.contains_key( &function_index ), [INFO] [stderr] 195 | | _ => false [INFO] [stderr] 196 | | } [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] 193 | match *instruction { [INFO] [stderr] 194 | Instruction::Call( function_index ) => shim_map.contains_key( &function_index ), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/wasm_inline_js.rs:215:42 [INFO] [stderr] | [INFO] [stderr] 215 | let &snippet_index = snippet_index_by_offset.get( &offset ).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&snippet_index_by_offset[&offset]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | / match instruction { [INFO] [stderr] 27 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 28 | | _ => false [INFO] [stderr] 29 | | } [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] 26 | match *instruction { [INFO] [stderr] 27 | Instruction::GrowMemory( _ ) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:41:33 [INFO] [stderr] | [INFO] [stderr] 41 | let should_insert = match &instruction { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 42 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 43 | | &_ => false [INFO] [stderr] 44 | | }; [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] 41 | let should_insert = match instruction { [INFO] [stderr] 42 | Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 43 | _ => false [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/wasm_runtime.rs:111:58 [INFO] [stderr] | [INFO] [stderr] 111 | TypeMetadata::I32 | TypeMetadata::F64 => format!( "{}", arg.name ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `arg.name.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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wasm_context.rs:20:33 [INFO] [stderr] | [INFO] [stderr] 20 | fn enumerate_u32( self ) -> iter::Map< iter::Enumerate< Self >, fn( (usize, Self::Item) ) -> (u32, Self::Item) > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/wasm_context.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | / impl Hash for FnTy { [INFO] [stderr] 44 | | fn hash< H: Hasher >( &self, state: &mut H ) { [INFO] [stderr] 45 | | for param in &self.params { [INFO] [stderr] 46 | | (*param as i32).hash( state ); [INFO] [stderr] ... | [INFO] [stderr] 49 | | } [INFO] [stderr] 50 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/wasm_context.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | #[derive(Clone, PartialEq, Debug)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/wasm_context.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | self.return_type.clone().map( |ret| ret as i32 ).hash( state ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.return_type` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | / match self { [INFO] [stderr] 113 | | &FunctionKind::Import { .. } => true, [INFO] [stderr] 114 | | _ => false [INFO] [stderr] 115 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 112 | match *self { [INFO] [stderr] 113 | FunctionKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | / match self { [INFO] [stderr] 120 | | &FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 121 | | &FunctionKind::Definition { ref export, .. } => export, [INFO] [stderr] 122 | | } [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] 119 | match *self { [INFO] [stderr] 120 | FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 121 | FunctionKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | / match self { [INFO] [stderr] 127 | | &mut FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 128 | | &mut FunctionKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 129 | | } [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] 126 | match *self { [INFO] [stderr] 127 | FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 128 | FunctionKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | / match self { [INFO] [stderr] 136 | | &mut FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 137 | | &mut FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] 138 | | } [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] 135 | match *self { [INFO] [stderr] 136 | FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 137 | FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | / match self { [INFO] [stderr] 164 | | &TableKind::Import { .. } => true, [INFO] [stderr] 165 | | _ => false [INFO] [stderr] 166 | | } [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] 163 | match *self { [INFO] [stderr] 164 | TableKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | / match self { [INFO] [stderr] 171 | | &TableKind::Import { ref export, .. } => export, [INFO] [stderr] 172 | | &TableKind::Definition { ref export, .. } => export, [INFO] [stderr] 173 | | } [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] 170 | match *self { [INFO] [stderr] 171 | TableKind::Import { ref export, .. } => export, [INFO] [stderr] 172 | TableKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / match self { [INFO] [stderr] 178 | | &mut TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 179 | | &mut TableKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 180 | | } [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] 177 | match *self { [INFO] [stderr] 178 | TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 179 | TableKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / match self { [INFO] [stderr] 200 | | &MemoryKind::Import { .. } => true, [INFO] [stderr] 201 | | _ => false [INFO] [stderr] 202 | | } [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] 199 | match *self { [INFO] [stderr] 200 | MemoryKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | / match self { [INFO] [stderr] 207 | | &MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 208 | | &MemoryKind::Definition { ref export, .. } => export, [INFO] [stderr] 209 | | } [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] 206 | match *self { [INFO] [stderr] 207 | MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 208 | MemoryKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | / match self { [INFO] [stderr] 214 | | &mut MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 215 | | &mut MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 216 | | } [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] 213 | match *self { [INFO] [stderr] 214 | MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 215 | MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / match self { [INFO] [stderr] 243 | | &GlobalKind::Import { .. } => true, [INFO] [stderr] 244 | | _ => false [INFO] [stderr] 245 | | } [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] 242 | match *self { [INFO] [stderr] 243 | GlobalKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | / match self { [INFO] [stderr] 250 | | &GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 251 | | &GlobalKind::Definition { ref export, .. } => export, [INFO] [stderr] 252 | | } [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] 249 | match *self { [INFO] [stderr] 250 | GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 251 | GlobalKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:256:9 [INFO] [stderr] | [INFO] [stderr] 256 | / match self { [INFO] [stderr] 257 | | &mut GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 258 | | &mut GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 259 | | } [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] 256 | match *self { [INFO] [stderr] 257 | GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 258 | GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/wasm_context.rs:431:5 [INFO] [stderr] | [INFO] [stderr] 431 | / pub fn from_module( mut module: pw::Module ) -> Self { [INFO] [stderr] 432 | | let mut ctx = Self::new(); [INFO] [stderr] 433 | | [INFO] [stderr] 434 | | let mut next_table_index = 0; [INFO] [stderr] ... | [INFO] [stderr] 716 | | ctx [INFO] [stderr] 717 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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 all patterns [INFO] [stderr] --> src/wasm_context.rs:462:25 [INFO] [stderr] | [INFO] [stderr] 462 | / match entry.external() { [INFO] [stderr] 463 | | &pw::External::Function( type_index ) => { [INFO] [stderr] 464 | | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 465 | | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] ... | [INFO] [stderr] 508 | | } [INFO] [stderr] 509 | | } [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] 462 | match *entry.external() { [INFO] [stderr] 463 | pw::External::Function( type_index ) => { [INFO] [stderr] 464 | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 465 | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] 466 | export: Export::none(), [INFO] [stderr] 467 | type_index, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/wasm_context.rs:596:61 [INFO] [stderr] | [INFO] [stderr] 596 | if ctx.data.last().map( |last_data| { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 597 | | last_data.offset == entry.offset().as_ref().unwrap().code() && last_data.value.is_empty() [INFO] [stderr] 598 | | }).unwrap_or( false ) { [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_context.rs:615:31 [INFO] [stderr] | [INFO] [stderr] 615 | while p.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:640:45 [INFO] [stderr] | [INFO] [stderr] 640 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 641 | | &mut FunctionKind::Definition { ref mut locals, .. } => { [INFO] [stderr] 642 | | let local = &mut locals[ local_index as usize ]; [INFO] [stderr] 643 | | assert!( local.name.is_none(), "duplicate local variable name" ); [INFO] [stderr] ... | [INFO] [stderr] 646 | | _ => panic!() [INFO] [stderr] 647 | | } [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] 640 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 641 | FunctionKind::Definition { ref mut locals, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:685:17 [INFO] [stderr] | [INFO] [stderr] 685 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 686 | | &mut FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] 687 | | assert_eq!( *type_index, 0xFFFFFFFF, "function type was already set" ); [INFO] [stderr] 688 | | *type_index = entry.type_ref(); [INFO] [stderr] 689 | | }, [INFO] [stderr] 690 | | _ => panic!() [INFO] [stderr] 691 | | } [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] 685 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 686 | FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:699:17 [INFO] [stderr] | [INFO] [stderr] 699 | / match entry.internal() { [INFO] [stderr] 700 | | &pw::Internal::Function( function_index ) => { [INFO] [stderr] 701 | | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 702 | | }, [INFO] [stderr] ... | [INFO] [stderr] 711 | | } [INFO] [stderr] 712 | | } [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] 699 | match *entry.internal() { [INFO] [stderr] 700 | pw::Internal::Function( function_index ) => { [INFO] [stderr] 701 | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 702 | }, [INFO] [stderr] 703 | pw::Internal::Table( table_index ) => { [INFO] [stderr] 704 | ctx.tables.get_mut( &table_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/wasm_context.rs:719:5 [INFO] [stderr] | [INFO] [stderr] 719 | / pub fn into_module( self ) -> pw::Module { [INFO] [stderr] 720 | | fn process_instructions( [INFO] [stderr] 721 | | function_index_map: &HashMap< FunctionIndex, FunctionIndex >, [INFO] [stderr] 722 | | type_index_map: &HashMap< TypeIndex, TypeIndex >, [INFO] [stderr] ... | [INFO] [stderr] 964 | | pw::Module::new( sections ) [INFO] [stderr] 965 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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 all patterns [INFO] [stderr] --> src/wasm_context.rs:727:17 [INFO] [stderr] | [INFO] [stderr] 727 | / match instruction { [INFO] [stderr] 728 | | &mut Instruction::Call( ref mut index ) => { [INFO] [stderr] 729 | | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 730 | | }, [INFO] [stderr] ... | [INFO] [stderr] 738 | | _ => {} [INFO] [stderr] 739 | | } [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] 727 | match *instruction { [INFO] [stderr] 728 | Instruction::Call( ref mut index ) => { [INFO] [stderr] 729 | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 730 | }, [INFO] [stderr] 731 | Instruction::CallIndirect( ref mut index, _ ) => { [INFO] [stderr] 732 | *index = type_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: for loop over `self.fn_pointer_tables`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/wasm_context.rs:887:34 [INFO] [stderr] | [INFO] [stderr] 887 | for mut pointer_table in self.fn_pointer_tables { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for mut pointer_table in self.fn_pointer_tables` with `if let Some(mut pointer_table) = self.fn_pointer_tables` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wasm_context.rs:991:13 [INFO] [stderr] | [INFO] [stderr] 991 | / match function { [INFO] [stderr] 992 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 993 | | callback( instructions ); [INFO] [stderr] 994 | | }, [INFO] [stderr] 995 | | _ => {} [INFO] [stderr] 996 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 991 | if let &mut FunctionKind::Definition { ref mut instructions, .. } = function { [INFO] [stderr] 992 | callback( instructions ); [INFO] [stderr] 993 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:991:13 [INFO] [stderr] | [INFO] [stderr] 991 | / match function { [INFO] [stderr] 992 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 993 | | callback( instructions ); [INFO] [stderr] 994 | | }, [INFO] [stderr] 995 | | _ => {} [INFO] [stderr] 996 | | } [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] 991 | match *function { [INFO] [stderr] 992 | FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:80:35 [INFO] [stderr] | [INFO] [stderr] 80 | if code.code.starts_with( "E" ) { [INFO] [stderr] | ^^^ help: try using a char instead: `'E'` [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/wasm_intrinsics.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | / match function { [INFO] [stderr] 60 | | &FunctionKind::Import { ref import, .. } if import.module == "env" => { [INFO] [stderr] 61 | | if let Some( &(args, _return_type, code) ) = intrinsics.get( import.field.as_str() ) { [INFO] [stderr] 62 | | snippets.push( JsSnippet { [INFO] [stderr] ... | [INFO] [stderr] 69 | | _ => {} [INFO] [stderr] 70 | | } [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] 59 | match *function { [INFO] [stderr] 60 | FunctionKind::Import { ref import, .. } if import.module == "env" => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should use the `starts_with` method [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:221:11 [INFO] [stderr] | [INFO] [stderr] 221 | while p.chars().next() == Some( ' ' ) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `p.starts_with(' ')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::chars_next_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_next_cmp [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cargo_shim/diagnostic_formatter.rs:309:28 [INFO] [stderr] | [INFO] [stderr] 309 | if !message.ends_with( "\n" ) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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/wasm_js_export.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / if let &mut FunctionKind::Definition { ref mut export, ref mut name, .. } = function { [INFO] [stderr] 47 | | if export.names.len() == 1 && export.names[ 0 ].starts_with( PREFIX ) { [INFO] [stderr] 48 | | let json_metadata = { [INFO] [stderr] 49 | | let encoded_metadata = &export.names[ 0 ][ PREFIX.len().. ]; [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [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] 46 | if let FunctionKind::Definition { ref mut export, ref mut name, .. } = *function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_js_export.rs:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &mut Some( ref mut name ) = name { [INFO] [stderr] 63 | | *name = metadata.name.clone(); [INFO] [stderr] 64 | | } [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] 62 | if let Some( ref mut name ) = *name { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/test_chromium.rs:59:22 [INFO] [stderr] | [INFO] [stderr] 59 | arg_passthrough: &Vec< &OsStr >, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[&OsStr]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/cargo_shim/mod.rs:220:48 [INFO] [stderr] | [INFO] [stderr] 220 | let output = command.output().map_err( |err| Error::CannotLaunchCargo( err ) )?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Error::CannotLaunchCargo` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/cargo_shim/mod.rs:226:55 [INFO] [stderr] | [INFO] [stderr] 226 | serde_json::from_str( metadata ).map_err( |err| Error::CannotParseCargoOutput( err ) )?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Error::CannotParseCargoOutput` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cargo_shim/mod.rs:268:38 [INFO] [stderr] | [INFO] [stderr] 268 | let target = match json.get( "target" ).unwrap() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 269 | | &serde_json::Value::Null => None, [INFO] [stderr] 270 | | &serde_json::Value::String( ref target ) => { [INFO] [stderr] 271 | | let target = match target.replace( " ", "" ).as_str() { [INFO] [stderr] ... | [INFO] [stderr] 280 | | _ => unreachable!() [INFO] [stderr] 281 | | }; [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] 268 | let target = match *json.get( "target" ).unwrap() { [INFO] [stderr] 269 | serde_json::Value::Null => None, [INFO] [stderr] 270 | serde_json::Value::String( ref target ) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/test_chromium.rs:278:86 [INFO] [stderr] | [INFO] [stderr] 278 | } else if print_counter == 1 && output.trim().is_empty() { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 279 | | continue; [INFO] [stderr] 280 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/test_chromium.rs:276:87 [INFO] [stderr] | [INFO] [stderr] 276 | if print_counter == 0 && output.starts_with( "pre-main" ) { [INFO] [stderr] | _______________________________________________________________________________________^ [INFO] [stderr] 277 | | continue; [INFO] [stderr] 278 | | } else if print_counter == 1 && output.trim().is_empty() { [INFO] [stderr] | |_____________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/cargo_shim/mod.rs:405:41 [INFO] [stderr] | [INFO] [stderr] 405 | let dependency_index = *package_map.get( dependency_id ).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&package_map[dependency_id]` [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/cargo_shim/mod.rs:552:12 [INFO] [stderr] | [INFO] [stderr] 552 | if result.is_ok() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!result.is_ok()` [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: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/cargo_shim/mod.rs:578:5 [INFO] [stderr] | [INFO] [stderr] 578 | / fn build_internal< F >( &self, postprocess: &mut Option< F > ) -> CargoResult [INFO] [stderr] 579 | | where F: for <'a> FnMut( Vec< PathBuf > ) -> Vec< PathBuf > [INFO] [stderr] 580 | | { [INFO] [stderr] 581 | | let mut command = self.as_command(); [INFO] [stderr] ... | [INFO] [stderr] 776 | | } [INFO] [stderr] 777 | | } [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/chrome_devtools.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | / loop { [INFO] [stderr] 196 | | let message = match output_rx.recv() { [INFO] [stderr] 197 | | Ok( message ) => message, [INFO] [stderr] 198 | | Err( _ ) => break [INFO] [stderr] ... | [INFO] [stderr] 210 | | } [INFO] [stderr] 211 | | } [INFO] [stderr] | |_____________^ help: try: `while let Ok( message ) = output_rx.recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/cargo_shim/mod.rs:583:25 [INFO] [stderr] | [INFO] [stderr] 583 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] | _________________________^ [INFO] [stderr] 584 | | .map( |paths| env::split_paths( &paths ).collect() ) [INFO] [stderr] 585 | | .unwrap_or( Vec::new() ); [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 583 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] 584 | .map( |paths| env::split_paths( &paths ).collect() ).unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/utils.rs:45:25 [INFO] [stderr] | [INFO] [stderr] 45 | let mut paths = env::var_os( "PATH" ).map( |paths| env::split_paths( &paths ).collect() ).unwrap_or( Vec::new() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `env::var_os( "PATH" ).map( |paths| env::split_paths( &paths ).collect() ).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/utils.rs:75:16 [INFO] [stderr] | [INFO] [stderr] 75 | let path = env::var_os( "PATH" ).unwrap_or( OsString::new() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `env::var_os( "PATH" ).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/utils.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | cmds.into_iter().map( |&s| s ).filter( |&s| has_cmd( s ) ).next() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|&s| has_cmd( s )).next()` with `find(|&s| has_cmd( s ))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/utils.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | cmds.into_iter().map( |&s| s ).filter( |&s| has_cmd( s ) ).next() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `cmds.into_iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/utils.rs:84:10 [INFO] [stderr] | [INFO] [stderr] 84 | cmds.into_iter().map( |&s| s ).filter( |&s| has_cmd( s ) ).next() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/cmd_start.rs:131:44 [INFO] [stderr] | [INFO] [stderr] 131 | Error::ConfigurationError( format!( "cannot start a webserver for a crate which is a library!" ) ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"cannot start a webserver for a crate which is a library!".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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/config.rs:76:61 [INFO] [stderr] | [INFO] [stderr] 76 | let per_target = config.per_target.entry( backend ).or_insert( Default::default() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Default::default)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/config.rs:88:61 [INFO] [stderr] | [INFO] [stderr] 88 | let per_target = config.per_target.entry( backend ).or_insert( Default::default() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Default::default)` [INFO] [stderr] | [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cmd_test.rs:31:22 [INFO] [stderr] | [INFO] [stderr] 31 | arg_passthrough: &Vec< &OsStr >, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[&OsStr]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/cmd_prepare_emscripten.rs:4:36 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn command_prepare_emscripten< 'a >() -> Result< (), Error > { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/main.rs:370:19 [INFO] [stderr] | [INFO] [stderr] 370 | } else if let Some( _ ) = matches.subcommand_matches( "prepare-emscripten" ) { [INFO] [stderr] | ____________- ^^^^^^^^^ [INFO] [stderr] 371 | | cmd_prepare_emscripten::command_prepare_emscripten() [INFO] [stderr] 372 | | } else { [INFO] [stderr] 373 | | return; [INFO] [stderr] 374 | | }; [INFO] [stderr] | |_____- help: try this: `if matches.subcommand_matches( "prepare-emscripten" ).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build.rs:240:64 [INFO] [stderr] | [INFO] [stderr] 240 | None => return Err( Error::ConfigurationError( format!( "no library targets found" ) ) ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no library targets found".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: useless use of `format!` [INFO] [stderr] --> src/build.rs:283:25 [INFO] [stderr] | [INFO] [stderr] 283 | return Err( format!( "`--runtime` can be only used with `--target=wasm32-unknown-unknown`" ).into() ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"`--runtime` can be only used with `--target=wasm32-unknown-unknown`".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] error: Could not compile `cargo-web`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/build.rs:482:34 [INFO] [stderr] | [INFO] [stderr] 482 | if arg.contains( " " ) { [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/build.rs:607:42 [INFO] [stderr] | [INFO] [stderr] 607 | for line in stdout.trim().split( "\n" ) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/build.rs:608:53 [INFO] [stderr] | [INFO] [stderr] 608 | let target = &line[ 0..line.find( " " ).unwrap_or( line.len() ) ]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| line.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/build.rs:608:47 [INFO] [stderr] | [INFO] [stderr] 608 | let target = &line[ 0..line.find( " " ).unwrap_or( line.len() ) ]; [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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/build.rs:707:12 [INFO] [stderr] | [INFO] [stderr] 707 | if result.is_ok() == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!result.is_ok()` [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: single-character string constant used as pattern [INFO] [stderr] --> src/deployment.rs:176:29 [INFO] [stderr] | [INFO] [stderr] 176 | if url.starts_with( "/" ) { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/deployment.rs:195:45 [INFO] [stderr] | [INFO] [stderr] 195 | else if url.ends_with( ".jpg" ) { "image/jpeg" } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/deployment.rs:194:46 [INFO] [stderr] | [INFO] [stderr] 194 | else if url.ends_with( ".jpeg" ) { "image/jpeg" } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/deployment.rs:213:45 [INFO] [stderr] | [INFO] [stderr] 213 | for chunk in url.split( "/" ) { [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/deployment.rs:249:51 [INFO] [stderr] | [INFO] [stderr] 249 | for chunk in route.key.split( "/" ) { [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/error.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / match self { [INFO] [stderr] 75 | | &Error::RuntimeError( _, ref inner ) => write!( formatter, "{}: {}", self.description(), inner ), [INFO] [stderr] 76 | | &Error::CargoShimError( cargo_shim::Error::CargoFailed( ref message ) ) => write!( formatter, "{}", message ), [INFO] [stderr] 77 | | &Error::CargoShimError( ref inner ) => write!( formatter, "{}", inner ), [INFO] [stderr] ... | [INFO] [stderr] 85 | | _ => write!( formatter, "{}", self.description() ) [INFO] [stderr] 86 | | } [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] 74 | match *self { [INFO] [stderr] 75 | Error::RuntimeError( _, ref inner ) => write!( formatter, "{}: {}", self.description(), inner ), [INFO] [stderr] 76 | Error::CargoShimError( cargo_shim::Error::CargoFailed( ref message ) ) => write!( formatter, "{}", message ), [INFO] [stderr] 77 | Error::CargoShimError( ref inner ) => write!( formatter, "{}", inner ), [INFO] [stderr] 78 | Error::CannotLoadFile( ref path, ref inner ) => write!( formatter, "cannot load file {:?}: {}", path, inner ), [INFO] [stderr] 79 | Error::CannotRemoveDirectory( ref path, ref inner ) => write!( formatter, "cannot remove directory {:?}: {}", path, inner ), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:255:9 [INFO] [stderr] | [INFO] [stderr] 255 | drop(table); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_ref)] on by default [INFO] [stderr] note: argument has type &parity_wasm::elements::TableType [INFO] [stderr] --> src/wasm_gc.rs:255:14 [INFO] [stderr] | [INFO] [stderr] 255 | drop(table); [INFO] [stderr] | ^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wasm_gc.rs:276:38 [INFO] [stderr] | [INFO] [stderr] 276 | fn add_global_type(&mut self, t: &GlobalType) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `GlobalType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wasm_gc.rs:303:41 [INFO] [stderr] | [INFO] [stderr] 303 | fn add_value_type(&mut self, value: &ValueType) { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `ValueType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/wasm_gc.rs:339:38 [INFO] [stderr] | [INFO] [stderr] 339 | fn add_block_type(&mut self, bt: &BlockType) { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `BlockType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/wasm_gc.rs:414:18 [INFO] [stderr] | [INFO] [stderr] 414 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:481:9 [INFO] [stderr] | [INFO] [stderr] 481 | s.types().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.types().is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:500:9 [INFO] [stderr] | [INFO] [stderr] 500 | drop(t); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::ValueType [INFO] [stderr] --> src/wasm_gc.rs:500:14 [INFO] [stderr] | [INFO] [stderr] 500 | drop(t); [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:508:9 [INFO] [stderr] | [INFO] [stderr] 508 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:529:9 [INFO] [stderr] | [INFO] [stderr] 529 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:539:13 [INFO] [stderr] | [INFO] [stderr] 539 | drop(t); // TODO [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::TableType [INFO] [stderr] --> src/wasm_gc.rs:539:18 [INFO] [stderr] | [INFO] [stderr] 539 | drop(t); // TODO [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:541:9 [INFO] [stderr] | [INFO] [stderr] 541 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:547:13 [INFO] [stderr] | [INFO] [stderr] 547 | drop(m); // TODO [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::MemoryType [INFO] [stderr] --> src/wasm_gc.rs:547:18 [INFO] [stderr] | [INFO] [stderr] 547 | drop(m); // TODO [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:549:9 [INFO] [stderr] | [INFO] [stderr] 549 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:557:9 [INFO] [stderr] | [INFO] [stderr] 557 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/wasm_gc.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | drop(s); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: argument has type &mut parity_wasm::elements::GlobalType [INFO] [stderr] --> src/wasm_gc.rs:566:14 [INFO] [stderr] | [INFO] [stderr] 566 | drop(s); [INFO] [stderr] | ^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:580:9 [INFO] [stderr] | [INFO] [stderr] 580 | s.entries().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.entries().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:614:9 [INFO] [stderr] | [INFO] [stderr] 614 | s.bodies().len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.bodies().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_gc.rs:695:15 [INFO] [stderr] | [INFO] [stderr] 695 | while data.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!data.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &FunctionKind::Import { type_index, ref import, .. } = function { [INFO] [stderr] 63 | | if import.module == "env" && import.field.starts_with( "__js_" ) { [INFO] [stderr] 64 | | shim_map.insert( function_index, type_index ); [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [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] 62 | if let FunctionKind::Import { type_index, ref import, .. } = *function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / if let &FunctionKind::Definition { ref instructions, .. } = function { [INFO] [stderr] 71 | | for (index, instruction) in instructions.iter().enumerate() { [INFO] [stderr] 72 | | match instruction { [INFO] [stderr] 73 | | &Instruction::Call( function_index ) => { [INFO] [stderr] ... | [INFO] [stderr] 91 | | } [INFO] [stderr] 92 | | } [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] 70 | if let FunctionKind::Definition { ref instructions, .. } = *function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wasm_inline_js.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | / match instruction { [INFO] [stderr] 73 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 74 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 75 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 89 | | _ => {} [INFO] [stderr] 90 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 72 | if let &Instruction::Call( function_index ) = instruction { [INFO] [stderr] 73 | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 74 | match instructions[ index - 1 ] { [INFO] [stderr] 75 | Instruction::I32Const( offset ) => { [INFO] [stderr] 76 | if let Some( previous_ty ) = snippet_offset_to_type_index.get( &offset ).cloned() { [INFO] [stderr] 77 | if type_index != previous_ty { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | / match instruction { [INFO] [stderr] 73 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 74 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 75 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 89 | | _ => {} [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *instruction { [INFO] [stderr] 73 | Instruction::Call( function_index ) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/wasm_inline_js.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | Err( _ ) => { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/wasm_inline_js.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | return_type: shim_ty.return_type.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `shim_ty.return_type` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/wasm_inline_js.rs:162:75 [INFO] [stderr] | [INFO] [stderr] 162 | let slice = &slice[ 0..slice.iter().position( |&byte| byte == 0 ).unwrap_or( slice.len() ) ]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| slice.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | / match instruction { [INFO] [stderr] 194 | | &Instruction::Call( function_index ) => shim_map.contains_key( &function_index ), [INFO] [stderr] 195 | | _ => false [INFO] [stderr] 196 | | } [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] 193 | match *instruction { [INFO] [stderr] 194 | Instruction::Call( function_index ) => shim_map.contains_key( &function_index ), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/wasm_inline_js.rs:215:42 [INFO] [stderr] | [INFO] [stderr] 215 | let &snippet_index = snippet_index_by_offset.get( &offset ).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&snippet_index_by_offset[&offset]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | / match instruction { [INFO] [stderr] 27 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 28 | | _ => false [INFO] [stderr] 29 | | } [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] 26 | match *instruction { [INFO] [stderr] 27 | Instruction::GrowMemory( _ ) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:41:33 [INFO] [stderr] | [INFO] [stderr] 41 | let should_insert = match &instruction { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 42 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 43 | | &_ => false [INFO] [stderr] 44 | | }; [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] 41 | let should_insert = match instruction { [INFO] [stderr] 42 | Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 43 | _ => false [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/wasm_runtime.rs:111:58 [INFO] [stderr] | [INFO] [stderr] 111 | TypeMetadata::I32 | TypeMetadata::F64 => format!( "{}", arg.name ), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `arg.name.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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wasm_context.rs:20:33 [INFO] [stderr] | [INFO] [stderr] 20 | fn enumerate_u32( self ) -> iter::Map< iter::Enumerate< Self >, fn( (usize, Self::Item) ) -> (u32, Self::Item) > { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/wasm_context.rs:43:1 [INFO] [stderr] | [INFO] [stderr] 43 | / impl Hash for FnTy { [INFO] [stderr] 44 | | fn hash< H: Hasher >( &self, state: &mut H ) { [INFO] [stderr] 45 | | for param in &self.params { [INFO] [stderr] 46 | | (*param as i32).hash( state ); [INFO] [stderr] ... | [INFO] [stderr] 49 | | } [INFO] [stderr] 50 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/wasm_context.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | #[derive(Clone, PartialEq, Debug)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/wasm_context.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | self.return_type.clone().map( |ret| ret as i32 ).hash( state ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.return_type` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | / match self { [INFO] [stderr] 113 | | &FunctionKind::Import { .. } => true, [INFO] [stderr] 114 | | _ => false [INFO] [stderr] 115 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 112 | match *self { [INFO] [stderr] 113 | FunctionKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | / match self { [INFO] [stderr] 120 | | &FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 121 | | &FunctionKind::Definition { ref export, .. } => export, [INFO] [stderr] 122 | | } [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] 119 | match *self { [INFO] [stderr] 120 | FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 121 | FunctionKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | / match self { [INFO] [stderr] 127 | | &mut FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 128 | | &mut FunctionKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 129 | | } [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] 126 | match *self { [INFO] [stderr] 127 | FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 128 | FunctionKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | / match self { [INFO] [stderr] 136 | | &mut FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 137 | | &mut FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] 138 | | } [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] 135 | match *self { [INFO] [stderr] 136 | FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 137 | FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | / match self { [INFO] [stderr] 164 | | &TableKind::Import { .. } => true, [INFO] [stderr] 165 | | _ => false [INFO] [stderr] 166 | | } [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] 163 | match *self { [INFO] [stderr] 164 | TableKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:170:9 [INFO] [stderr] | [INFO] [stderr] 170 | / match self { [INFO] [stderr] 171 | | &TableKind::Import { ref export, .. } => export, [INFO] [stderr] 172 | | &TableKind::Definition { ref export, .. } => export, [INFO] [stderr] 173 | | } [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] 170 | match *self { [INFO] [stderr] 171 | TableKind::Import { ref export, .. } => export, [INFO] [stderr] 172 | TableKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / match self { [INFO] [stderr] 178 | | &mut TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 179 | | &mut TableKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 180 | | } [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] 177 | match *self { [INFO] [stderr] 178 | TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 179 | TableKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / match self { [INFO] [stderr] 200 | | &MemoryKind::Import { .. } => true, [INFO] [stderr] 201 | | _ => false [INFO] [stderr] 202 | | } [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] 199 | match *self { [INFO] [stderr] 200 | MemoryKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | / match self { [INFO] [stderr] 207 | | &MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 208 | | &MemoryKind::Definition { ref export, .. } => export, [INFO] [stderr] 209 | | } [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] 206 | match *self { [INFO] [stderr] 207 | MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 208 | MemoryKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | / match self { [INFO] [stderr] 214 | | &mut MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 215 | | &mut MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 216 | | } [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] 213 | match *self { [INFO] [stderr] 214 | MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 215 | MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | / match self { [INFO] [stderr] 243 | | &GlobalKind::Import { .. } => true, [INFO] [stderr] 244 | | _ => false [INFO] [stderr] 245 | | } [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] 242 | match *self { [INFO] [stderr] 243 | GlobalKind::Import { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | / match self { [INFO] [stderr] 250 | | &GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 251 | | &GlobalKind::Definition { ref export, .. } => export, [INFO] [stderr] 252 | | } [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] 249 | match *self { [INFO] [stderr] 250 | GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 251 | GlobalKind::Definition { ref export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:256:9 [INFO] [stderr] | [INFO] [stderr] 256 | / match self { [INFO] [stderr] 257 | | &mut GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 258 | | &mut GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 259 | | } [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] 256 | match *self { [INFO] [stderr] 257 | GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 258 | GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/wasm_context.rs:431:5 [INFO] [stderr] | [INFO] [stderr] 431 | / pub fn from_module( mut module: pw::Module ) -> Self { [INFO] [stderr] 432 | | let mut ctx = Self::new(); [INFO] [stderr] 433 | | [INFO] [stderr] 434 | | let mut next_table_index = 0; [INFO] [stderr] ... | [INFO] [stderr] 716 | | ctx [INFO] [stderr] 717 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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 all patterns [INFO] [stderr] --> src/wasm_context.rs:462:25 [INFO] [stderr] | [INFO] [stderr] 462 | / match entry.external() { [INFO] [stderr] 463 | | &pw::External::Function( type_index ) => { [INFO] [stderr] 464 | | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 465 | | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] ... | [INFO] [stderr] 508 | | } [INFO] [stderr] 509 | | } [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] 462 | match *entry.external() { [INFO] [stderr] 463 | pw::External::Function( type_index ) => { [INFO] [stderr] 464 | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 465 | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] 466 | export: Export::none(), [INFO] [stderr] 467 | type_index, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/wasm_context.rs:596:61 [INFO] [stderr] | [INFO] [stderr] 596 | if ctx.data.last().map( |last_data| { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 597 | | last_data.offset == entry.offset().as_ref().unwrap().code() && last_data.value.is_empty() [INFO] [stderr] 598 | | }).unwrap_or( false ) { [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/wasm_context.rs:615:31 [INFO] [stderr] | [INFO] [stderr] 615 | while p.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!p.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:640:45 [INFO] [stderr] | [INFO] [stderr] 640 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 641 | | &mut FunctionKind::Definition { ref mut locals, .. } => { [INFO] [stderr] 642 | | let local = &mut locals[ local_index as usize ]; [INFO] [stderr] 643 | | assert!( local.name.is_none(), "duplicate local variable name" ); [INFO] [stderr] ... | [INFO] [stderr] 646 | | _ => panic!() [INFO] [stderr] 647 | | } [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] 640 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 641 | FunctionKind::Definition { ref mut locals, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:685:17 [INFO] [stderr] | [INFO] [stderr] 685 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 686 | | &mut FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] 687 | | assert_eq!( *type_index, 0xFFFFFFFF, "function type was already set" ); [INFO] [stderr] 688 | | *type_index = entry.type_ref(); [INFO] [stderr] 689 | | }, [INFO] [stderr] 690 | | _ => panic!() [INFO] [stderr] 691 | | } [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] 685 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 686 | FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:699:17 [INFO] [stderr] | [INFO] [stderr] 699 | / match entry.internal() { [INFO] [stderr] 700 | | &pw::Internal::Function( function_index ) => { [INFO] [stderr] 701 | | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 702 | | }, [INFO] [stderr] ... | [INFO] [stderr] 711 | | } [INFO] [stderr] 712 | | } [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] 699 | match *entry.internal() { [INFO] [stderr] 700 | pw::Internal::Function( function_index ) => { [INFO] [stderr] 701 | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 702 | }, [INFO] [stderr] 703 | pw::Internal::Table( table_index ) => { [INFO] [stderr] 704 | ctx.tables.get_mut( &table_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/wasm_context.rs:719:5 [INFO] [stderr] | [INFO] [stderr] 719 | / pub fn into_module( self ) -> pw::Module { [INFO] [stderr] 720 | | fn process_instructions( [INFO] [stderr] 721 | | function_index_map: &HashMap< FunctionIndex, FunctionIndex >, [INFO] [stderr] 722 | | type_index_map: &HashMap< TypeIndex, TypeIndex >, [INFO] [stderr] ... | [INFO] [stderr] 964 | | pw::Module::new( sections ) [INFO] [stderr] 965 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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 all patterns [INFO] [stderr] --> src/wasm_context.rs:727:17 [INFO] [stderr] | [INFO] [stderr] 727 | / match instruction { [INFO] [stderr] 728 | | &mut Instruction::Call( ref mut index ) => { [INFO] [stderr] 729 | | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 730 | | }, [INFO] [stderr] ... | [INFO] [stderr] 738 | | _ => {} [INFO] [stderr] 739 | | } [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] 727 | match *instruction { [INFO] [stderr] 728 | Instruction::Call( ref mut index ) => { [INFO] [stderr] 729 | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 730 | }, [INFO] [stderr] 731 | Instruction::CallIndirect( ref mut index, _ ) => { [INFO] [stderr] 732 | *index = type_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: for loop over `self.fn_pointer_tables`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/wasm_context.rs:887:34 [INFO] [stderr] | [INFO] [stderr] 887 | for mut pointer_table in self.fn_pointer_tables { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for mut pointer_table in self.fn_pointer_tables` with `if let Some(mut pointer_table) = self.fn_pointer_tables` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_option [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wasm_context.rs:991:13 [INFO] [stderr] | [INFO] [stderr] 991 | / match function { [INFO] [stderr] 992 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 993 | | callback( instructions ); [INFO] [stderr] 994 | | }, [INFO] [stderr] 995 | | _ => {} [INFO] [stderr] 996 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 991 | if let &mut FunctionKind::Definition { ref mut instructions, .. } = function { [INFO] [stderr] 992 | callback( instructions ); [INFO] [stderr] 993 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:991:13 [INFO] [stderr] | [INFO] [stderr] 991 | / match function { [INFO] [stderr] 992 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 993 | | callback( instructions ); [INFO] [stderr] 994 | | }, [INFO] [stderr] 995 | | _ => {} [INFO] [stderr] 996 | | } [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] 991 | match *function { [INFO] [stderr] 992 | FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_intrinsics.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | / match function { [INFO] [stderr] 60 | | &FunctionKind::Import { ref import, .. } if import.module == "env" => { [INFO] [stderr] 61 | | if let Some( &(args, _return_type, code) ) = intrinsics.get( import.field.as_str() ) { [INFO] [stderr] 62 | | snippets.push( JsSnippet { [INFO] [stderr] ... | [INFO] [stderr] 69 | | _ => {} [INFO] [stderr] 70 | | } [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] 59 | match *function { [INFO] [stderr] 60 | FunctionKind::Import { ref import, .. } if import.module == "env" => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_js_export.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / if let &mut FunctionKind::Definition { ref mut export, ref mut name, .. } = function { [INFO] [stderr] 47 | | if export.names.len() == 1 && export.names[ 0 ].starts_with( PREFIX ) { [INFO] [stderr] 48 | | let json_metadata = { [INFO] [stderr] 49 | | let encoded_metadata = &export.names[ 0 ][ PREFIX.len().. ]; [INFO] [stderr] ... | [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [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] 46 | if let FunctionKind::Definition { ref mut export, ref mut name, .. } = *function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_js_export.rs:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &mut Some( ref mut name ) = name { [INFO] [stderr] 63 | | *name = metadata.name.clone(); [INFO] [stderr] 64 | | } [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] 62 | if let Some( ref mut name ) = *name { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/test_chromium.rs:59:22 [INFO] [stderr] | [INFO] [stderr] 59 | arg_passthrough: &Vec< &OsStr >, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[&OsStr]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/test_chromium.rs:278:86 [INFO] [stderr] | [INFO] [stderr] 278 | } else if print_counter == 1 && output.trim().is_empty() { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 279 | | continue; [INFO] [stderr] 280 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/test_chromium.rs:276:87 [INFO] [stderr] | [INFO] [stderr] 276 | if print_counter == 0 && output.starts_with( "pre-main" ) { [INFO] [stderr] | _______________________________________________________________________________________^ [INFO] [stderr] 277 | | continue; [INFO] [stderr] 278 | | } else if print_counter == 1 && output.trim().is_empty() { [INFO] [stderr] | |_____________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/chrome_devtools.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | / loop { [INFO] [stderr] 196 | | let message = match output_rx.recv() { [INFO] [stderr] 197 | | Ok( message ) => message, [INFO] [stderr] 198 | | Err( _ ) => break [INFO] [stderr] ... | [INFO] [stderr] 210 | | } [INFO] [stderr] 211 | | } [INFO] [stderr] | |_____________^ help: try: `while let Ok( message ) = output_rx.recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/cmd_start.rs:131:44 [INFO] [stderr] | [INFO] [stderr] 131 | Error::ConfigurationError( format!( "cannot start a webserver for a crate which is a library!" ) ) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"cannot start a webserver for a crate which is a library!".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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cmd_test.rs:31:22 [INFO] [stderr] | [INFO] [stderr] 31 | arg_passthrough: &Vec< &OsStr >, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[&OsStr]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/cmd_prepare_emscripten.rs:4:36 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn command_prepare_emscripten< 'a >() -> Result< (), Error > { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/main.rs:370:19 [INFO] [stderr] | [INFO] [stderr] 370 | } else if let Some( _ ) = matches.subcommand_matches( "prepare-emscripten" ) { [INFO] [stderr] | ____________- ^^^^^^^^^ [INFO] [stderr] 371 | | cmd_prepare_emscripten::command_prepare_emscripten() [INFO] [stderr] 372 | | } else { [INFO] [stderr] 373 | | return; [INFO] [stderr] 374 | | }; [INFO] [stderr] | |_____- help: try this: `if matches.subcommand_matches( "prepare-emscripten" ).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `cargo-web`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b0fba674e9db5b6936e3bc22001251833b26063ba205ff08873bd3fc5e81cbaf"` [INFO] running `"docker" "rm" "-f" "b0fba674e9db5b6936e3bc22001251833b26063ba205ff08873bd3fc5e81cbaf"` [INFO] [stdout] b0fba674e9db5b6936e3bc22001251833b26063ba205ff08873bd3fc5e81cbaf