[INFO] updating cached repository koute/cargo-web [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/koute/cargo-web [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/koute/cargo-web" "work/ex/clippy-test-run/sources/stable/gh/koute/cargo-web"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/koute/cargo-web'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/koute/cargo-web" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/koute/cargo-web"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/koute/cargo-web'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 57b99a9c8121546d1c8aa3fa4a973fe7095a7614 [INFO] sha for GitHub repo koute/cargo-web: 57b99a9c8121546d1c8aa3fa4a973fe7095a7614 [INFO] validating manifest of koute/cargo-web 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 koute/cargo-web 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 koute/cargo-web [INFO] finished frobbing koute/cargo-web [INFO] frobbed toml for koute/cargo-web written to work/ex/clippy-test-run/sources/stable/gh/koute/cargo-web/Cargo.toml [INFO] started frobbing koute/cargo-web [INFO] finished frobbing koute/cargo-web [INFO] frobbed toml for koute/cargo-web written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/koute/cargo-web/Cargo.toml [INFO] crate koute/cargo-web has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting koute/cargo-web against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/koute/cargo-web:/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] 2d7a34bb383a17cd16f02c4e3e5e593cd320654775ddd141883b4cb0541ddffa [INFO] running `"docker" "start" "-a" "2d7a34bb383a17cd16f02c4e3e5e593cd320654775ddd141883b4cb0541ddffa"` [INFO] [stderr] Checking byte-tools v0.3.0 [INFO] [stderr] Checking opaque-debug v0.2.1 [INFO] [stderr] Checking base-x v0.2.3 [INFO] [stderr] Checking open v1.2.2 [INFO] [stderr] Checking directories v1.0.2 [INFO] [stderr] Compiling openssl-src v110.0.7+1.1.0i [INFO] [stderr] Checking parity-wasm v0.35.1 [INFO] [stderr] Checking crossbeam-epoch v0.5.2 [INFO] [stderr] Checking tar v0.4.18 [INFO] [stderr] Compiling pest_meta v2.0.3 [INFO] [stderr] Checking block-padding v0.1.2 [INFO] [stderr] Checking mio-extras v2.0.5 [INFO] [stderr] Checking generic-array v0.12.0 [INFO] [stderr] Checking crossbeam-deque v0.6.1 [INFO] [stderr] Compiling syn v0.14.9 [INFO] [stderr] Compiling syn v0.15.18 [INFO] [stderr] Checking hyper v0.10.15 [INFO] [stderr] Checking regex v1.0.5 [INFO] [stderr] Compiling openssl-sys v0.9.37 [INFO] [stderr] Checking error-chain v0.12.0 [INFO] [stderr] Checking tokio-threadpool v0.1.8 [INFO] [stderr] Checking digest v0.8.0 [INFO] [stderr] Checking block-buffer v0.7.0 [INFO] [stderr] Checking env_logger v0.6.0 [INFO] [stderr] Compiling pest_generator v2.0.0 [INFO] [stderr] Checking tokio-fs v0.1.4 [INFO] [stderr] Checking sha2 v0.8.0 [INFO] [stderr] Checking tokio-reactor v0.1.6 [INFO] [stderr] Compiling serde_derive v1.0.80 [INFO] [stderr] Checking tokio-tcp v0.1.2 [INFO] [stderr] Checking tokio-uds v0.2.3 [INFO] [stderr] Checking tokio-udp v0.1.2 [INFO] [stderr] Checking inotify v0.6.1 [INFO] [stderr] Checking tokio v0.1.11 [INFO] [stderr] Checking notify v4.0.6 [INFO] [stderr] Compiling pest_derive v2.0.1 [INFO] [stderr] Checking hyper v0.12.13 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking handlebars v1.1.0 [INFO] [stderr] Checking cargo_metadata v0.6.1 [INFO] [stderr] Compiling openssl v0.10.13 [INFO] [stderr] Compiling native-tls v0.2.1 [INFO] [stderr] Checking hyper-tls v0.3.1 [INFO] [stderr] Checking tokio-tls v0.2.0 [INFO] [stderr] Checking websocket v0.21.1 [INFO] [stderr] Checking reqwest v0.9.4 [INFO] [stderr] Checking cargo-web v0.6.23 (/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:594:9 [INFO] [stderr] | [INFO] [stderr] 594 | 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:241:25 [INFO] [stderr] | [INFO] [stderr] 241 | 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:247:25 [INFO] [stderr] | [INFO] [stderr] 247 | 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:253:25 [INFO] [stderr] | [INFO] [stderr] 253 | 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:259:25 [INFO] [stderr] | [INFO] [stderr] 259 | 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:124:33 [INFO] [stderr] | [INFO] [stderr] 124 | 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:565:41 [INFO] [stderr] | [INFO] [stderr] 565 | 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:671:50 [INFO] [stderr] | [INFO] [stderr] 671 | 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:36:33 [INFO] [stderr] | [INFO] [stderr] 36 | 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:43:22 [INFO] [stderr] | [INFO] [stderr] 43 | 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:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / return app [INFO] [stderr] 98 | | .arg( [INFO] [stderr] 99 | | Arg::with_name( "package" ) [INFO] [stderr] 100 | | .short( "p" ) [INFO] [stderr] ... | [INFO] [stderr] 171 | | .hidden( true ) [INFO] [stderr] 172 | | ); [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] 97 | app [INFO] [stderr] 98 | .arg( [INFO] [stderr] 99 | Arg::with_name( "package" ) [INFO] [stderr] 100 | .short( "p" ) [INFO] [stderr] 101 | .long( "package" ) [INFO] [stderr] 102 | .help( "Package to build" ) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:176:5 [INFO] [stderr] | [INFO] [stderr] 176 | / return app [INFO] [stderr] 177 | | .arg( [INFO] [stderr] 178 | | Arg::with_name( "lib" ) [INFO] [stderr] 179 | | .long( "lib" ) [INFO] [stderr] ... | [INFO] [stderr] 233 | | .hide_possible_values( true ) // Get rid of this after removing `experimental-only-loader` variant. [INFO] [stderr] 234 | | ); [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] 176 | app [INFO] [stderr] 177 | .arg( [INFO] [stderr] 178 | Arg::with_name( "lib" ) [INFO] [stderr] 179 | .long( "lib" ) [INFO] [stderr] 180 | .help( "Build only this package's library" ) [INFO] [stderr] 181 | ) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cargo_shim/mod.rs:594:9 [INFO] [stderr] | [INFO] [stderr] 594 | 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:241:25 [INFO] [stderr] | [INFO] [stderr] 241 | 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:247:25 [INFO] [stderr] | [INFO] [stderr] 247 | 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:253:25 [INFO] [stderr] | [INFO] [stderr] 253 | 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:259:25 [INFO] [stderr] | [INFO] [stderr] 259 | 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:124:33 [INFO] [stderr] | [INFO] [stderr] 124 | 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:565:41 [INFO] [stderr] | [INFO] [stderr] 565 | 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:671:50 [INFO] [stderr] | [INFO] [stderr] 671 | 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:36:33 [INFO] [stderr] | [INFO] [stderr] 36 | 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:43:22 [INFO] [stderr] | [INFO] [stderr] 43 | 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:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / return app [INFO] [stderr] 98 | | .arg( [INFO] [stderr] 99 | | Arg::with_name( "package" ) [INFO] [stderr] 100 | | .short( "p" ) [INFO] [stderr] ... | [INFO] [stderr] 171 | | .hidden( true ) [INFO] [stderr] 172 | | ); [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] 97 | app [INFO] [stderr] 98 | .arg( [INFO] [stderr] 99 | Arg::with_name( "package" ) [INFO] [stderr] 100 | .short( "p" ) [INFO] [stderr] 101 | .long( "package" ) [INFO] [stderr] 102 | .help( "Package to build" ) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:176:5 [INFO] [stderr] | [INFO] [stderr] 176 | / return app [INFO] [stderr] 177 | | .arg( [INFO] [stderr] 178 | | Arg::with_name( "lib" ) [INFO] [stderr] 179 | | .long( "lib" ) [INFO] [stderr] ... | [INFO] [stderr] 233 | | .hide_possible_values( true ) // Get rid of this after removing `experimental-only-loader` variant. [INFO] [stderr] 234 | | ); [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] 176 | app [INFO] [stderr] 177 | .arg( [INFO] [stderr] 178 | Arg::with_name( "lib" ) [INFO] [stderr] 179 | .long( "lib" ) [INFO] [stderr] 180 | .help( "Build only this package's library" ) [INFO] [stderr] 181 | ) [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: 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: 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:571:12 [INFO] [stderr] | [INFO] [stderr] 571 | 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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/cargo_shim/mod.rs:600:25 [INFO] [stderr] | [INFO] [stderr] 600 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] | _________________________^ [INFO] [stderr] 601 | | .map( |paths| env::split_paths( &paths ).collect() ) [INFO] [stderr] 602 | | .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] 600 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] 601 | .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:241:64 [INFO] [stderr] | [INFO] [stderr] 241 | 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:284:25 [INFO] [stderr] | [INFO] [stderr] 284 | 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:491:34 [INFO] [stderr] | [INFO] [stderr] 491 | 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:619:42 [INFO] [stderr] | [INFO] [stderr] 619 | 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:620:53 [INFO] [stderr] | [INFO] [stderr] 620 | 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:620:47 [INFO] [stderr] | [INFO] [stderr] 620 | 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:724:12 [INFO] [stderr] | [INFO] [stderr] 724 | 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: 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/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] 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: The function/method `wasm_js_snippet::process` doesn't need a mutable reference [INFO] [stderr] --> src/wasm.rs:66:58 [INFO] [stderr] | [INFO] [stderr] 66 | let snippets = wasm_js_snippet::process( target_dir, &mut ctx ); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [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] 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: 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] 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] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | / if let &FunctionKind::Import { type_index, ref import, .. } = function { [INFO] [stderr] 53 | | if import.module == "env" && import.field.starts_with( "__js_" ) { [INFO] [stderr] 54 | | shim_map.insert( function_index, type_index ); [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [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] 52 | 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:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / if let &FunctionKind::Definition { ref instructions, .. } = function { [INFO] [stderr] 61 | | for (index, instruction) in instructions.iter().enumerate() { [INFO] [stderr] 62 | | match instruction { [INFO] [stderr] 63 | | &Instruction::Call( function_index ) => { [INFO] [stderr] ... | [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 60 | 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:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | / match instruction { [INFO] [stderr] 63 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 64 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 65 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 79 | | _ => {} [INFO] [stderr] 80 | | } [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] 62 | if let &Instruction::Call( function_index ) = instruction { [INFO] [stderr] 63 | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 64 | match instructions[ index - 1 ] { [INFO] [stderr] 65 | Instruction::I32Const( offset ) => { [INFO] [stderr] 66 | if let Some( previous_ty ) = snippet_offset_to_type_index.get( &offset ).cloned() { [INFO] [stderr] 67 | 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:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | / match instruction { [INFO] [stderr] 63 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 64 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 65 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 79 | | _ => {} [INFO] [stderr] 80 | | } [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 | match *instruction { [INFO] [stderr] 63 | 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:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | 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:101:26 [INFO] [stderr] | [INFO] [stderr] 101 | 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:152:75 [INFO] [stderr] | [INFO] [stderr] 152 | 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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/cargo_shim/mod.rs:571:12 [INFO] [stderr] | [INFO] [stderr] 571 | 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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_inline_js.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | / match instruction { [INFO] [stderr] 184 | | &Instruction::Call( function_index ) => shim_map.contains_key( &function_index ), [INFO] [stderr] 185 | | _ => false [INFO] [stderr] 186 | | } [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] 183 | match *instruction { [INFO] [stderr] 184 | 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:205:42 [INFO] [stderr] | [INFO] [stderr] 205 | 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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/cargo_shim/mod.rs:600:25 [INFO] [stderr] | [INFO] [stderr] 600 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] | _________________________^ [INFO] [stderr] 601 | | .map( |paths| env::split_paths( &paths ).collect() ) [INFO] [stderr] 602 | | .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] 600 | let env_paths = env::var_os( "PATH" ) [INFO] [stderr] 601 | .map( |paths| env::split_paths( &paths ).collect() ).unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | / match function { [INFO] [stderr] 15 | | &FunctionKind::Import { import: Import { ref module, ref field }, .. } if module == "env" && field == "__web_on_grow" => { [INFO] [stderr] 16 | | true [INFO] [stderr] 17 | | }, [INFO] [stderr] 18 | | _ => false [INFO] [stderr] 19 | | } [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] 14 | match *function { [INFO] [stderr] 15 | FunctionKind::Import { import: Import { ref module, ref field }, .. } if module == "env" && field == "__web_on_grow" => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | / match instruction { [INFO] [stderr] 40 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 41 | | _ => false [INFO] [stderr] 42 | | } [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] 39 | match *instruction { [INFO] [stderr] 40 | 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:54:33 [INFO] [stderr] | [INFO] [stderr] 54 | let should_insert = match &instruction { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 55 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 56 | | &_ => false [INFO] [stderr] 57 | | }; [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] 54 | let should_insert = match instruction { [INFO] [stderr] 55 | Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 56 | _ => 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: 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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wasm_context.rs:12:33 [INFO] [stderr] | [INFO] [stderr] 12 | 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] 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] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/wasm_context.rs:35:1 [INFO] [stderr] | [INFO] [stderr] 35 | / impl Hash for FnTy { [INFO] [stderr] 36 | | fn hash< H: Hasher >( &self, state: &mut H ) { [INFO] [stderr] 37 | | for param in &self.params { [INFO] [stderr] 38 | | (*param as i32).hash( state ); [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [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:28:17 [INFO] [stderr] | [INFO] [stderr] 28 | #[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:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | 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:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match self { [INFO] [stderr] 105 | | &FunctionKind::Import { .. } => true, [INFO] [stderr] 106 | | _ => false [INFO] [stderr] 107 | | } [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] 104 | match *self { [INFO] [stderr] 105 | 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:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match self { [INFO] [stderr] 112 | | &FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 113 | | &FunctionKind::Definition { ref export, .. } => export, [INFO] [stderr] 114 | | } [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] 111 | match *self { [INFO] [stderr] 112 | FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 113 | 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:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | / match self { [INFO] [stderr] 119 | | &mut FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 120 | | &mut FunctionKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 121 | | } [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] 118 | match *self { [INFO] [stderr] 119 | FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 120 | 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:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | / match self { [INFO] [stderr] 128 | | &mut FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 129 | | &mut FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] 130 | | } [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] 127 | match *self { [INFO] [stderr] 128 | FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 129 | 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:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / match self { [INFO] [stderr] 156 | | &TableKind::Import { .. } => true, [INFO] [stderr] 157 | | _ => false [INFO] [stderr] 158 | | } [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] 155 | match *self { [INFO] [stderr] 156 | 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:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | / match self { [INFO] [stderr] 163 | | &TableKind::Import { ref export, .. } => export, [INFO] [stderr] 164 | | &TableKind::Definition { ref export, .. } => export, [INFO] [stderr] 165 | | } [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] 162 | match *self { [INFO] [stderr] 163 | TableKind::Import { ref export, .. } => export, [INFO] [stderr] 164 | 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:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / match self { [INFO] [stderr] 170 | | &mut TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 171 | | &mut TableKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 172 | | } [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] 169 | match *self { [INFO] [stderr] 170 | TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 171 | 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:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self { [INFO] [stderr] 192 | | &MemoryKind::Import { .. } => true, [INFO] [stderr] 193 | | _ => false [INFO] [stderr] 194 | | } [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] 191 | match *self { [INFO] [stderr] 192 | 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:198:9 [INFO] [stderr] | [INFO] [stderr] 198 | / match self { [INFO] [stderr] 199 | | &MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 200 | | &MemoryKind::Definition { ref export, .. } => export, [INFO] [stderr] 201 | | } [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] 198 | match *self { [INFO] [stderr] 199 | MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 200 | 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:205:9 [INFO] [stderr] | [INFO] [stderr] 205 | / match self { [INFO] [stderr] 206 | | &mut MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 207 | | &mut MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 205 | match *self { [INFO] [stderr] 206 | MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 207 | MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:234:9 [INFO] [stderr] | [INFO] [stderr] 234 | / match self { [INFO] [stderr] 235 | | &GlobalKind::Import { .. } => true, [INFO] [stderr] 236 | | _ => false [INFO] [stderr] 237 | | } [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] 234 | match *self { [INFO] [stderr] 235 | 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:241:9 [INFO] [stderr] | [INFO] [stderr] 241 | / match self { [INFO] [stderr] 242 | | &GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 243 | | &GlobalKind::Definition { ref export, .. } => export, [INFO] [stderr] 244 | | } [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] 241 | match *self { [INFO] [stderr] 242 | GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 243 | 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:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | / match self { [INFO] [stderr] 249 | | &mut GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 250 | | &mut GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 251 | | } [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] 248 | match *self { [INFO] [stderr] 249 | GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 250 | GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/wasm_context.rs:421:5 [INFO] [stderr] | [INFO] [stderr] 421 | / pub fn from_module( mut module: pw::Module ) -> Self { [INFO] [stderr] 422 | | let mut ctx = Self::new(); [INFO] [stderr] 423 | | [INFO] [stderr] 424 | | let mut next_table_index = 0; [INFO] [stderr] ... | [INFO] [stderr] 700 | | ctx [INFO] [stderr] 701 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:452:25 [INFO] [stderr] | [INFO] [stderr] 452 | / match entry.external() { [INFO] [stderr] 453 | | &pw::External::Function( type_index ) => { [INFO] [stderr] 454 | | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 455 | | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] ... | [INFO] [stderr] 498 | | } [INFO] [stderr] 499 | | } [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] 452 | match *entry.external() { [INFO] [stderr] 453 | pw::External::Function( type_index ) => { [INFO] [stderr] 454 | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 455 | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] 456 | export: Export::none(), [INFO] [stderr] 457 | 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:586:61 [INFO] [stderr] | [INFO] [stderr] 586 | if ctx.data.last().map( |last_data| { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 587 | | last_data.offset == entry.offset().as_ref().unwrap().code() && last_data.value.is_empty() [INFO] [stderr] 588 | | }).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:605:31 [INFO] [stderr] | [INFO] [stderr] 605 | 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:630:45 [INFO] [stderr] | [INFO] [stderr] 630 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 631 | | &mut FunctionKind::Definition { ref mut locals, .. } => { [INFO] [stderr] 632 | | let local = &mut locals[ local_index as usize ]; [INFO] [stderr] 633 | | assert!( local.name.is_none(), "duplicate local variable name" ); [INFO] [stderr] ... | [INFO] [stderr] 636 | | _ => panic!() [INFO] [stderr] 637 | | } [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] 630 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 631 | 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:669:17 [INFO] [stderr] | [INFO] [stderr] 669 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 670 | | &mut FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] 671 | | assert_eq!( *type_index, 0xFFFFFFFF, "function type was already set" ); [INFO] [stderr] 672 | | *type_index = entry.type_ref(); [INFO] [stderr] 673 | | }, [INFO] [stderr] 674 | | _ => panic!() [INFO] [stderr] 675 | | } [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] 669 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 670 | 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:683:17 [INFO] [stderr] | [INFO] [stderr] 683 | / match entry.internal() { [INFO] [stderr] 684 | | &pw::Internal::Function( function_index ) => { [INFO] [stderr] 685 | | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 686 | | }, [INFO] [stderr] ... | [INFO] [stderr] 695 | | } [INFO] [stderr] 696 | | } [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] 683 | match *entry.internal() { [INFO] [stderr] 684 | pw::Internal::Function( function_index ) => { [INFO] [stderr] 685 | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 686 | }, [INFO] [stderr] 687 | pw::Internal::Table( table_index ) => { [INFO] [stderr] 688 | 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:703:5 [INFO] [stderr] | [INFO] [stderr] 703 | / pub fn into_module( self ) -> pw::Module { [INFO] [stderr] 704 | | fn process_instructions( [INFO] [stderr] 705 | | function_index_map: &HashMap< FunctionIndex, FunctionIndex >, [INFO] [stderr] 706 | | type_index_map: &HashMap< TypeIndex, TypeIndex >, [INFO] [stderr] ... | [INFO] [stderr] 948 | | pw::Module::new( sections ) [INFO] [stderr] 949 | | } [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:711:17 [INFO] [stderr] | [INFO] [stderr] 711 | / match instruction { [INFO] [stderr] 712 | | &mut Instruction::Call( ref mut index ) => { [INFO] [stderr] 713 | | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 714 | | }, [INFO] [stderr] ... | [INFO] [stderr] 722 | | _ => {} [INFO] [stderr] 723 | | } [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] 711 | match *instruction { [INFO] [stderr] 712 | Instruction::Call( ref mut index ) => { [INFO] [stderr] 713 | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 714 | }, [INFO] [stderr] 715 | Instruction::CallIndirect( ref mut index, _ ) => { [INFO] [stderr] 716 | *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:871:34 [INFO] [stderr] | [INFO] [stderr] 871 | 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: useless use of `format!` [INFO] [stderr] --> src/build.rs:241:64 [INFO] [stderr] | [INFO] [stderr] 241 | 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wasm_context.rs:975:13 [INFO] [stderr] | [INFO] [stderr] 975 | / match function { [INFO] [stderr] 976 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 977 | | callback( instructions ); [INFO] [stderr] 978 | | }, [INFO] [stderr] 979 | | _ => {} [INFO] [stderr] 980 | | } [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] 975 | if let &mut FunctionKind::Definition { ref mut instructions, .. } = function { [INFO] [stderr] 976 | callback( instructions ); [INFO] [stderr] 977 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:975:13 [INFO] [stderr] | [INFO] [stderr] 975 | / match function { [INFO] [stderr] 976 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 977 | | callback( instructions ); [INFO] [stderr] 978 | | }, [INFO] [stderr] 979 | | _ => {} [INFO] [stderr] 980 | | } [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] 975 | match *function { [INFO] [stderr] 976 | FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build.rs:284:25 [INFO] [stderr] | [INFO] [stderr] 284 | 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: 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: single-character string constant used as pattern [INFO] [stderr] --> src/build.rs:491:34 [INFO] [stderr] | [INFO] [stderr] 491 | 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:619:42 [INFO] [stderr] | [INFO] [stderr] 619 | 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:620:53 [INFO] [stderr] | [INFO] [stderr] 620 | 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:620:47 [INFO] [stderr] | [INFO] [stderr] 620 | 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: 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: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/build.rs:724:12 [INFO] [stderr] | [INFO] [stderr] 724 | 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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_js_snippet.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / if let &FunctionKind::Import { ref import, .. } = function { [INFO] [stderr] 27 | | if import.module == "env" { [INFO] [stderr] 28 | | let name_hash = hash( &import.field ); [INFO] [stderr] 29 | | let path = target_dir.join( ".cargo-web" ).join( "snippets" ).join( &name_hash[ 0..2 ] ).join( format!( "{}.json", name_hash ) ); [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [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 | if let FunctionKind::Import { ref import, .. } = *function { [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:60:22 [INFO] [stderr] | [INFO] [stderr] 60 | 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: 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: this `if` has identical blocks [INFO] [stderr] --> src/test_chromium.rs:288:86 [INFO] [stderr] | [INFO] [stderr] 288 | } else if print_counter == 1 && output.trim().is_empty() { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 289 | | continue; [INFO] [stderr] 290 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/test_chromium.rs:286:87 [INFO] [stderr] | [INFO] [stderr] 286 | if print_counter == 0 && output.starts_with( "pre-main" ) { [INFO] [stderr] | _______________________________________________________________________________________^ [INFO] [stderr] 287 | | continue; [INFO] [stderr] 288 | | } 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: The function/method `wasm_js_snippet::process` doesn't need a mutable reference [INFO] [stderr] --> src/wasm.rs:66:58 [INFO] [stderr] | [INFO] [stderr] 66 | let snippets = wasm_js_snippet::process( target_dir, &mut ctx ); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [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] 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:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | / if let &FunctionKind::Import { type_index, ref import, .. } = function { [INFO] [stderr] 53 | | if import.module == "env" && import.field.starts_with( "__js_" ) { [INFO] [stderr] 54 | | shim_map.insert( function_index, type_index ); [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [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] 52 | 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:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / if let &FunctionKind::Definition { ref instructions, .. } = function { [INFO] [stderr] 61 | | for (index, instruction) in instructions.iter().enumerate() { [INFO] [stderr] 62 | | match instruction { [INFO] [stderr] 63 | | &Instruction::Call( function_index ) => { [INFO] [stderr] ... | [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 60 | 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:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | / match instruction { [INFO] [stderr] 63 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 64 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 65 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 79 | | _ => {} [INFO] [stderr] 80 | | } [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] 62 | if let &Instruction::Call( function_index ) = instruction { [INFO] [stderr] 63 | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 64 | match instructions[ index - 1 ] { [INFO] [stderr] 65 | Instruction::I32Const( offset ) => { [INFO] [stderr] 66 | if let Some( previous_ty ) = snippet_offset_to_type_index.get( &offset ).cloned() { [INFO] [stderr] 67 | 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:62:17 [INFO] [stderr] | [INFO] [stderr] 62 | / match instruction { [INFO] [stderr] 63 | | &Instruction::Call( function_index ) => { [INFO] [stderr] 64 | | if let Some( &type_index ) = shim_map.get( &function_index ) { [INFO] [stderr] 65 | | match instructions[ index - 1 ] { [INFO] [stderr] ... | [INFO] [stderr] 79 | | _ => {} [INFO] [stderr] 80 | | } [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 | match *instruction { [INFO] [stderr] 63 | Instruction::Call( function_index ) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/cmd_start.rs:132:44 [INFO] [stderr] | [INFO] [stderr] 132 | 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: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/wasm_inline_js.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | 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:101:26 [INFO] [stderr] | [INFO] [stderr] 101 | 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:152:75 [INFO] [stderr] | [INFO] [stderr] 152 | 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:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | / match instruction { [INFO] [stderr] 184 | | &Instruction::Call( function_index ) => shim_map.contains_key( &function_index ), [INFO] [stderr] 185 | | _ => false [INFO] [stderr] 186 | | } [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] 183 | match *instruction { [INFO] [stderr] 184 | 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:205:42 [INFO] [stderr] | [INFO] [stderr] 205 | 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:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | / match function { [INFO] [stderr] 15 | | &FunctionKind::Import { import: Import { ref module, ref field }, .. } if module == "env" && field == "__web_on_grow" => { [INFO] [stderr] 16 | | true [INFO] [stderr] 17 | | }, [INFO] [stderr] 18 | | _ => false [INFO] [stderr] 19 | | } [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] 14 | match *function { [INFO] [stderr] 15 | FunctionKind::Import { import: Import { ref module, ref field }, .. } if module == "env" && field == "__web_on_grow" => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_hook_grow.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | / match instruction { [INFO] [stderr] 40 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 41 | | _ => false [INFO] [stderr] 42 | | } [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] 39 | match *instruction { [INFO] [stderr] 40 | 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:54:33 [INFO] [stderr] | [INFO] [stderr] 54 | let should_insert = match &instruction { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 55 | | &Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 56 | | &_ => false [INFO] [stderr] 57 | | }; [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] 54 | let should_insert = match instruction { [INFO] [stderr] 55 | Instruction::GrowMemory( _ ) => true, [INFO] [stderr] 56 | _ => false [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/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: 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: 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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wasm_context.rs:12:33 [INFO] [stderr] | [INFO] [stderr] 12 | 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:35:1 [INFO] [stderr] | [INFO] [stderr] 35 | / impl Hash for FnTy { [INFO] [stderr] 36 | | fn hash< H: Hasher >( &self, state: &mut H ) { [INFO] [stderr] 37 | | for param in &self.params { [INFO] [stderr] 38 | | (*param as i32).hash( state ); [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [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:28:17 [INFO] [stderr] | [INFO] [stderr] 28 | #[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:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | 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:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match self { [INFO] [stderr] 105 | | &FunctionKind::Import { .. } => true, [INFO] [stderr] 106 | | _ => false [INFO] [stderr] 107 | | } [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] 104 | match *self { [INFO] [stderr] 105 | 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:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match self { [INFO] [stderr] 112 | | &FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 113 | | &FunctionKind::Definition { ref export, .. } => export, [INFO] [stderr] 114 | | } [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] 111 | match *self { [INFO] [stderr] 112 | FunctionKind::Import { ref export, .. } => export, [INFO] [stderr] 113 | 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:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | / match self { [INFO] [stderr] 119 | | &mut FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 120 | | &mut FunctionKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 121 | | } [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] 118 | match *self { [INFO] [stderr] 119 | FunctionKind::Import { ref mut export, .. } => export, [INFO] [stderr] 120 | 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:127:9 [INFO] [stderr] | [INFO] [stderr] 127 | / match self { [INFO] [stderr] 128 | | &mut FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 129 | | &mut FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] 130 | | } [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] 127 | match *self { [INFO] [stderr] 128 | FunctionKind::Import { ref mut name, .. } => name, [INFO] [stderr] 129 | FunctionKind::Definition { ref mut name, .. } => name [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/main.rs:395:19 [INFO] [stderr] | [INFO] [stderr] 395 | } else if let Some( _ ) = matches.subcommand_matches( "prepare-emscripten" ) { [INFO] [stderr] | ____________- ^^^^^^^^^ [INFO] [stderr] 396 | | cmd_prepare_emscripten::command_prepare_emscripten() [INFO] [stderr] 397 | | } else { [INFO] [stderr] 398 | | return; [INFO] [stderr] 399 | | }; [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / match self { [INFO] [stderr] 156 | | &TableKind::Import { .. } => true, [INFO] [stderr] 157 | | _ => false [INFO] [stderr] 158 | | } [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] 155 | match *self { [INFO] [stderr] 156 | 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:162:9 [INFO] [stderr] | [INFO] [stderr] 162 | / match self { [INFO] [stderr] 163 | | &TableKind::Import { ref export, .. } => export, [INFO] [stderr] 164 | | &TableKind::Definition { ref export, .. } => export, [INFO] [stderr] 165 | | } [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] 162 | match *self { [INFO] [stderr] 163 | TableKind::Import { ref export, .. } => export, [INFO] [stderr] 164 | 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:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / match self { [INFO] [stderr] 170 | | &mut TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 171 | | &mut TableKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 172 | | } [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] 169 | match *self { [INFO] [stderr] 170 | TableKind::Import { ref mut export, .. } => export, [INFO] [stderr] 171 | 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:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self { [INFO] [stderr] 192 | | &MemoryKind::Import { .. } => true, [INFO] [stderr] 193 | | _ => false [INFO] [stderr] 194 | | } [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] 191 | match *self { [INFO] [stderr] 192 | 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:198:9 [INFO] [stderr] | [INFO] [stderr] 198 | / match self { [INFO] [stderr] 199 | | &MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 200 | | &MemoryKind::Definition { ref export, .. } => export, [INFO] [stderr] 201 | | } [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] 198 | match *self { [INFO] [stderr] 199 | MemoryKind::Import { ref export, .. } => export, [INFO] [stderr] 200 | 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:205:9 [INFO] [stderr] | [INFO] [stderr] 205 | / match self { [INFO] [stderr] 206 | | &mut MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 207 | | &mut MemoryKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 205 | match *self { [INFO] [stderr] 206 | MemoryKind::Import { ref mut export, .. } => export, [INFO] [stderr] 207 | 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:234:9 [INFO] [stderr] | [INFO] [stderr] 234 | / match self { [INFO] [stderr] 235 | | &GlobalKind::Import { .. } => true, [INFO] [stderr] 236 | | _ => false [INFO] [stderr] 237 | | } [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] 234 | match *self { [INFO] [stderr] 235 | 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:241:9 [INFO] [stderr] | [INFO] [stderr] 241 | / match self { [INFO] [stderr] 242 | | &GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 243 | | &GlobalKind::Definition { ref export, .. } => export, [INFO] [stderr] 244 | | } [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] 241 | match *self { [INFO] [stderr] 242 | GlobalKind::Import { ref export, .. } => export, [INFO] [stderr] 243 | 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:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | / match self { [INFO] [stderr] 249 | | &mut GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 250 | | &mut GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] 251 | | } [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] 248 | match *self { [INFO] [stderr] 249 | GlobalKind::Import { ref mut export, .. } => export, [INFO] [stderr] 250 | GlobalKind::Definition { ref mut export, .. } => export, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/wasm_context.rs:421:5 [INFO] [stderr] | [INFO] [stderr] 421 | / pub fn from_module( mut module: pw::Module ) -> Self { [INFO] [stderr] 422 | | let mut ctx = Self::new(); [INFO] [stderr] 423 | | [INFO] [stderr] 424 | | let mut next_table_index = 0; [INFO] [stderr] ... | [INFO] [stderr] 700 | | ctx [INFO] [stderr] 701 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:452:25 [INFO] [stderr] | [INFO] [stderr] 452 | / match entry.external() { [INFO] [stderr] 453 | | &pw::External::Function( type_index ) => { [INFO] [stderr] 454 | | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 455 | | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] ... | [INFO] [stderr] 498 | | } [INFO] [stderr] 499 | | } [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] 452 | match *entry.external() { [INFO] [stderr] 453 | pw::External::Function( type_index ) => { [INFO] [stderr] 454 | assert!( ctx.types.get( &type_index ).is_some() ); [INFO] [stderr] 455 | ctx.functions.insert( ctx.next_function_index, FunctionKind::Import { [INFO] [stderr] 456 | export: Export::none(), [INFO] [stderr] 457 | 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:586:61 [INFO] [stderr] | [INFO] [stderr] 586 | if ctx.data.last().map( |last_data| { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 587 | | last_data.offset == entry.offset().as_ref().unwrap().code() && last_data.value.is_empty() [INFO] [stderr] 588 | | }).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:605:31 [INFO] [stderr] | [INFO] [stderr] 605 | 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:630:45 [INFO] [stderr] | [INFO] [stderr] 630 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 631 | | &mut FunctionKind::Definition { ref mut locals, .. } => { [INFO] [stderr] 632 | | let local = &mut locals[ local_index as usize ]; [INFO] [stderr] 633 | | assert!( local.name.is_none(), "duplicate local variable name" ); [INFO] [stderr] ... | [INFO] [stderr] 636 | | _ => panic!() [INFO] [stderr] 637 | | } [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] 630 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 631 | 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:669:17 [INFO] [stderr] | [INFO] [stderr] 669 | / match ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 670 | | &mut FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] 671 | | assert_eq!( *type_index, 0xFFFFFFFF, "function type was already set" ); [INFO] [stderr] 672 | | *type_index = entry.type_ref(); [INFO] [stderr] 673 | | }, [INFO] [stderr] 674 | | _ => panic!() [INFO] [stderr] 675 | | } [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] 669 | match *ctx.functions.get_mut( &function_index ).unwrap() { [INFO] [stderr] 670 | FunctionKind::Definition { ref mut type_index, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:683:17 [INFO] [stderr] | [INFO] [stderr] 683 | / match entry.internal() { [INFO] [stderr] 684 | | &pw::Internal::Function( function_index ) => { [INFO] [stderr] 685 | | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 686 | | }, [INFO] [stderr] ... | [INFO] [stderr] 695 | | } [INFO] [stderr] 696 | | } [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] 683 | match *entry.internal() { [INFO] [stderr] 684 | pw::Internal::Function( function_index ) => { [INFO] [stderr] 685 | ctx.functions.get_mut( &function_index ).unwrap().as_export_mut().names.push( name ); [INFO] [stderr] 686 | }, [INFO] [stderr] 687 | pw::Internal::Table( table_index ) => { [INFO] [stderr] 688 | 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:703:5 [INFO] [stderr] | [INFO] [stderr] 703 | / pub fn into_module( self ) -> pw::Module { [INFO] [stderr] 704 | | fn process_instructions( [INFO] [stderr] 705 | | function_index_map: &HashMap< FunctionIndex, FunctionIndex >, [INFO] [stderr] 706 | | type_index_map: &HashMap< TypeIndex, TypeIndex >, [INFO] [stderr] ... | [INFO] [stderr] 948 | | pw::Module::new( sections ) [INFO] [stderr] 949 | | } [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:711:17 [INFO] [stderr] | [INFO] [stderr] 711 | / match instruction { [INFO] [stderr] 712 | | &mut Instruction::Call( ref mut index ) => { [INFO] [stderr] 713 | | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 714 | | }, [INFO] [stderr] ... | [INFO] [stderr] 722 | | _ => {} [INFO] [stderr] 723 | | } [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] 711 | match *instruction { [INFO] [stderr] 712 | Instruction::Call( ref mut index ) => { [INFO] [stderr] 713 | *index = function_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] 714 | }, [INFO] [stderr] 715 | Instruction::CallIndirect( ref mut index, _ ) => { [INFO] [stderr] 716 | *index = type_index_map.get( &index ).cloned().unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: Could not compile `cargo-web`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [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:871:34 [INFO] [stderr] | [INFO] [stderr] 871 | 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:975:13 [INFO] [stderr] | [INFO] [stderr] 975 | / match function { [INFO] [stderr] 976 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 977 | | callback( instructions ); [INFO] [stderr] 978 | | }, [INFO] [stderr] 979 | | _ => {} [INFO] [stderr] 980 | | } [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] 975 | if let &mut FunctionKind::Definition { ref mut instructions, .. } = function { [INFO] [stderr] 976 | callback( instructions ); [INFO] [stderr] 977 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_context.rs:975:13 [INFO] [stderr] | [INFO] [stderr] 975 | / match function { [INFO] [stderr] 976 | | &mut FunctionKind::Definition { ref mut instructions, .. } => { [INFO] [stderr] 977 | | callback( instructions ); [INFO] [stderr] 978 | | }, [INFO] [stderr] 979 | | _ => {} [INFO] [stderr] 980 | | } [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] 975 | match *function { [INFO] [stderr] 976 | 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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/wasm_js_snippet.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | / if let &FunctionKind::Import { ref import, .. } = function { [INFO] [stderr] 27 | | if import.module == "env" { [INFO] [stderr] 28 | | let name_hash = hash( &import.field ); [INFO] [stderr] 29 | | let path = target_dir.join( ".cargo-web" ).join( "snippets" ).join( &name_hash[ 0..2 ] ).join( format!( "{}.json", name_hash ) ); [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [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 | if let FunctionKind::Import { ref import, .. } = *function { [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:60:22 [INFO] [stderr] | [INFO] [stderr] 60 | 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:288:86 [INFO] [stderr] | [INFO] [stderr] 288 | } else if print_counter == 1 && output.trim().is_empty() { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 289 | | continue; [INFO] [stderr] 290 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/test_chromium.rs:286:87 [INFO] [stderr] | [INFO] [stderr] 286 | if print_counter == 0 && output.starts_with( "pre-main" ) { [INFO] [stderr] | _______________________________________________________________________________________^ [INFO] [stderr] 287 | | continue; [INFO] [stderr] 288 | | } 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:132:44 [INFO] [stderr] | [INFO] [stderr] 132 | 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:395:19 [INFO] [stderr] | [INFO] [stderr] 395 | } else if let Some( _ ) = matches.subcommand_matches( "prepare-emscripten" ) { [INFO] [stderr] | ____________- ^^^^^^^^^ [INFO] [stderr] 396 | | cmd_prepare_emscripten::command_prepare_emscripten() [INFO] [stderr] 397 | | } else { [INFO] [stderr] 398 | | return; [INFO] [stderr] 399 | | }; [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" "2d7a34bb383a17cd16f02c4e3e5e593cd320654775ddd141883b4cb0541ddffa"` [INFO] running `"docker" "rm" "-f" "2d7a34bb383a17cd16f02c4e3e5e593cd320654775ddd141883b4cb0541ddffa"` [INFO] [stdout] 2d7a34bb383a17cd16f02c4e3e5e593cd320654775ddd141883b4cb0541ddffa