[INFO] crate wasm-bindgen-webidl 0.2.23 is already in cache [INFO] extracting crate wasm-bindgen-webidl 0.2.23 into work/ex/clippy-test-run/sources/stable/reg/wasm-bindgen-webidl/0.2.23 [INFO] extracting crate wasm-bindgen-webidl 0.2.23 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wasm-bindgen-webidl/0.2.23 [INFO] validating manifest of wasm-bindgen-webidl-0.2.23 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 wasm-bindgen-webidl-0.2.23 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 wasm-bindgen-webidl-0.2.23 [INFO] finished frobbing wasm-bindgen-webidl-0.2.23 [INFO] frobbed toml for wasm-bindgen-webidl-0.2.23 written to work/ex/clippy-test-run/sources/stable/reg/wasm-bindgen-webidl/0.2.23/Cargo.toml [INFO] started frobbing wasm-bindgen-webidl-0.2.23 [INFO] finished frobbing wasm-bindgen-webidl-0.2.23 [INFO] frobbed toml for wasm-bindgen-webidl-0.2.23 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wasm-bindgen-webidl/0.2.23/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting wasm-bindgen-webidl-0.2.23 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/wasm-bindgen-webidl/0.2.23:/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] b6735e1d894b6782589c4c9e4b66e0fdabfd8db6f9cdd6882d9f64597a479da6 [INFO] running `"docker" "start" "-a" "b6735e1d894b6782589c4c9e4b66e0fdabfd8db6f9cdd6882d9f64597a479da6"` [INFO] [stderr] Compiling memchr v2.1.3 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.29 [INFO] [stderr] Checking heck v0.3.1 [INFO] [stderr] Checking backtrace-sys v0.1.28 [INFO] [stderr] Compiling syn v0.15.26 [INFO] [stderr] Checking backtrace v0.3.13 [INFO] [stderr] Checking nom v4.1.1 [INFO] [stderr] Checking weedle v0.8.0 [INFO] [stderr] Checking wasm-bindgen-backend v0.2.29 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Compiling failure_derive v0.1.5 [INFO] [stderr] Checking failure v0.1.5 [INFO] [stderr] Checking wasm-bindgen-webidl v0.2.23 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | Error { inner: inner } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/lib.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | submodules: submodules, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `submodules` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | Error { inner: inner } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [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/lib.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | submodules: submodules, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `submodules` [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: this if statement can be collapsed [INFO] [stderr] --> src/first_pass.rs:757:9 [INFO] [stderr] | [INFO] [stderr] 757 | / if self.interfaces.contains_key(superclass) { [INFO] [stderr] 758 | | if set.insert(superclass) { [INFO] [stderr] 759 | | list.push(camel_case_ident(superclass)); [INFO] [stderr] 760 | | self.fill_superclasses(superclass, set, list); [INFO] [stderr] 761 | | } [INFO] [stderr] 762 | | } [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] 757 | if self.interfaces.contains_key(superclass) && set.insert(superclass) { [INFO] [stderr] 758 | list.push(camel_case_ident(superclass)); [INFO] [stderr] 759 | self.fill_superclasses(superclass, set, list); [INFO] [stderr] 760 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/util.rs:628:9 [INFO] [stderr] | [INFO] [stderr] 628 | return ret; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `ret` [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: this if statement can be collapsed [INFO] [stderr] --> src/util.rs:531:21 [INFO] [stderr] | [INFO] [stderr] 531 | / if other.orig.args.get(i).map(|s| s.name) == Some(arg_name) { [INFO] [stderr] 532 | | if !ptr::eq(signature, other) { [INFO] [stderr] 533 | | any_same_name = true; [INFO] [stderr] 534 | | } [INFO] [stderr] 535 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [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] 531 | if other.orig.args.get(i).map(|s| s.name) == Some(arg_name) && !ptr::eq(signature, other) { [INFO] [stderr] 532 | any_same_name = true; [INFO] [stderr] 533 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:346:9 [INFO] [stderr] | [INFO] [stderr] 346 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:413:9 [INFO] [stderr] | [INFO] [stderr] 413 | return ret; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `ret` [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: this if statement can be collapsed [INFO] [stderr] --> src/first_pass.rs:757:9 [INFO] [stderr] | [INFO] [stderr] 757 | / if self.interfaces.contains_key(superclass) { [INFO] [stderr] 758 | | if set.insert(superclass) { [INFO] [stderr] 759 | | list.push(camel_case_ident(superclass)); [INFO] [stderr] 760 | | self.fill_superclasses(superclass, set, list); [INFO] [stderr] 761 | | } [INFO] [stderr] 762 | | } [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] 757 | if self.interfaces.contains_key(superclass) && set.insert(superclass) { [INFO] [stderr] 758 | list.push(camel_case_ident(superclass)); [INFO] [stderr] 759 | self.fill_superclasses(superclass, set, list); [INFO] [stderr] 760 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/util.rs:628:9 [INFO] [stderr] | [INFO] [stderr] 628 | return ret; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `ret` [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: this if statement can be collapsed [INFO] [stderr] --> src/util.rs:531:21 [INFO] [stderr] | [INFO] [stderr] 531 | / if other.orig.args.get(i).map(|s| s.name) == Some(arg_name) { [INFO] [stderr] 532 | | if !ptr::eq(signature, other) { [INFO] [stderr] 533 | | any_same_name = true; [INFO] [stderr] 534 | | } [INFO] [stderr] 535 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [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] 531 | if other.orig.args.get(i).map(|s| s.name) == Some(arg_name) && !ptr::eq(signature, other) { [INFO] [stderr] 532 | any_same_name = true; [INFO] [stderr] 533 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:346:9 [INFO] [stderr] | [INFO] [stderr] 346 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:413:9 [INFO] [stderr] | [INFO] [stderr] 413 | return ret; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `ret` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/first_pass.rs:223:1 [INFO] [stderr] | [INFO] [stderr] 223 | / fn first_pass_operation<'src>( [INFO] [stderr] 224 | | record: &mut FirstPassRecord<'src>, [INFO] [stderr] 225 | | first_pass_operation_type: FirstPassOperationType, [INFO] [stderr] 226 | | self_name: &'src str, [INFO] [stderr] ... | [INFO] [stderr] 293 | | } [INFO] [stderr] 294 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/first_pass.rs:249:18 [INFO] [stderr] | [INFO] [stderr] 249 | .expect(&format!("not found {} interface", self_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("not found {} interface", self_name))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/first_pass.rs:256:18 [INFO] [stderr] | [INFO] [stderr] 256 | .expect(&format!("not found {} mixin", self_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("not found {} mixin", self_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/first_pass.rs:263:18 [INFO] [stderr] | [INFO] [stderr] 263 | .expect(&format!("not found {} namespace", self_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("not found {} namespace", self_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/first_pass.rs:592:62 [INFO] [stderr] | [INFO] [stderr] 592 | &[OperationId::Operation(self.identifier.map(|s| s.0.clone()))], [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 592 | &[OperationId::Operation(self.identifier.map(|s| &(*s.0).clone()))], [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 592 | &[OperationId::Operation(self.identifier.map(|s| &str::clone(s.0)))], [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/first_pass.rs:697:62 [INFO] [stderr] | [INFO] [stderr] 697 | &[OperationId::Operation(self.identifier.map(|s| s.0.clone()))], [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 697 | &[OperationId::Operation(self.identifier.map(|s| &(*s.0).clone()))], [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 697 | &[OperationId::Operation(self.identifier.map(|s| &str::clone(s.0)))], [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/first_pass.rs:223:1 [INFO] [stderr] | [INFO] [stderr] 223 | / fn first_pass_operation<'src>( [INFO] [stderr] 224 | | record: &mut FirstPassRecord<'src>, [INFO] [stderr] 225 | | first_pass_operation_type: FirstPassOperationType, [INFO] [stderr] 226 | | self_name: &'src str, [INFO] [stderr] ... | [INFO] [stderr] 293 | | } [INFO] [stderr] 294 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/first_pass.rs:249:18 [INFO] [stderr] | [INFO] [stderr] 249 | .expect(&format!("not found {} interface", self_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("not found {} interface", self_name))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/first_pass.rs:256:18 [INFO] [stderr] | [INFO] [stderr] 256 | .expect(&format!("not found {} mixin", self_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("not found {} mixin", self_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/first_pass.rs:263:18 [INFO] [stderr] | [INFO] [stderr] 263 | .expect(&format!("not found {} namespace", self_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("not found {} namespace", self_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/first_pass.rs:592:62 [INFO] [stderr] | [INFO] [stderr] 592 | &[OperationId::Operation(self.identifier.map(|s| s.0.clone()))], [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 592 | &[OperationId::Operation(self.identifier.map(|s| &(*s.0).clone()))], [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 592 | &[OperationId::Operation(self.identifier.map(|s| &str::clone(s.0)))], [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the `idl_type @ _` pattern can be written as just `idl_type` [INFO] [stderr] --> src/idl_type.rs:661:13 [INFO] [stderr] | [INFO] [stderr] 661 | idl_type @ _ => vec![idl_type.clone()], [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/util.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | format!("[MDN Documentation]({})", link).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `format!("[MDN Documentation]({})", link)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/first_pass.rs:697:62 [INFO] [stderr] | [INFO] [stderr] 697 | &[OperationId::Operation(self.identifier.map(|s| s.0.clone()))], [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 697 | &[OperationId::Operation(self.identifier.map(|s| &(*s.0).clone()))], [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 697 | &[OperationId::Operation(self.identifier.map(|s| &str::clone(s.0)))], [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/util.rs:98:65 [INFO] [stderr] | [INFO] [stderr] 98 | let (negative, text) = if orig_text.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/util.rs:222:5 [INFO] [stderr] | [INFO] [stderr] 222 | / pub fn create_one_function<'a>( [INFO] [stderr] 223 | | &self, [INFO] [stderr] 224 | | js_name: &str, [INFO] [stderr] 225 | | rust_name: &str, [INFO] [stderr] ... | [INFO] [stderr] 326 | | }) [INFO] [stderr] 327 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/util.rs:242:29 [INFO] [stderr] | [INFO] [stderr] 242 | let mut arguments = if let &backend::ast::ImportFunctionKind::Method { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 243 | | ref ty, [INFO] [stderr] 244 | | kind: [INFO] [stderr] 245 | | backend::ast::MethodKind::Operation(backend::ast::Operation { [INFO] [stderr] ... | [INFO] [stderr] 258 | | Vec::with_capacity(idl_arguments.size_hint().0) [INFO] [stderr] 259 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 242 | let mut arguments = if let backend::ast::ImportFunctionKind::Method { [INFO] [stderr] 243 | ref ty, [INFO] [stderr] 244 | kind: [INFO] [stderr] 245 | backend::ast::MethodKind::Operation(backend::ast::Operation { [INFO] [stderr] 246 | is_static: false, .. [INFO] [stderr] 247 | }), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `ret @ _` pattern can be written as just `ret` [INFO] [stderr] --> src/util.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | ret @ _ => match ret.to_syn_type(TypePosition::Return) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/util.rs:407:5 [INFO] [stderr] | [INFO] [stderr] 407 | / pub fn create_imports( [INFO] [stderr] 408 | | &self, [INFO] [stderr] 409 | | container_attrs: Option<&ExtendedAttributeList<'src>>, [INFO] [stderr] 410 | | kind: backend::ast::ImportFunctionKind, [INFO] [stderr] ... | [INFO] [stderr] 628 | | return ret; [INFO] [stderr] 629 | | } [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: unused label `'outer` [INFO] [stderr] --> src/util.rs:423:9 [INFO] [stderr] | [INFO] [stderr] 423 | / 'outer: for signature in data.signatures.iter() { [INFO] [stderr] 424 | | let mut idl_args = Vec::with_capacity(signature.args.len()); [INFO] [stderr] 425 | | for (i, arg) in signature.args.iter().enumerate() { [INFO] [stderr] 426 | | if arg.optional { [INFO] [stderr] ... | [INFO] [stderr] 438 | | signatures.push((signature, idl_args)); [INFO] [stderr] 439 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_label)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_label [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/util.rs:617:65 [INFO] [stderr] | [INFO] [stderr] 617 | .map(|(name, idl_type)| (&name[..], idl_type.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 617 | .map(|(name, idl_type)| (&name[..], &(*idl_type).clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 617 | .map(|(name, idl_type)| (&name[..], &idl_type::IdlType<'_>::clone(idl_type))), [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/lib.rs:362:44 [INFO] [stderr] | [INFO] [stderr] 362 | syn::Type::Reference(ref i) => match &*i.elem { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 363 | | syn::Type::Slice(_) => return None, [INFO] [stderr] 364 | | _ => (), [INFO] [stderr] 365 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let syn::Type::Slice(_) = &*i.elem { return None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:373:33 [INFO] [stderr] | [INFO] [stderr] 373 | / match &*i.elem { [INFO] [stderr] 374 | | syn::Type::Slice(_) => return None, [INFO] [stderr] 375 | | _ => (), [INFO] [stderr] 376 | | } [INFO] [stderr] | |_________________________________^ help: try this: `if let syn::Type::Slice(_) = &*i.elem { return None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:506:9 [INFO] [stderr] | [INFO] [stderr] 506 | / match name { [INFO] [stderr] 507 | | "AudioContext" => { [INFO] [stderr] 508 | | import_type [INFO] [stderr] 509 | | .vendor_prefixes [INFO] [stderr] ... | [INFO] [stderr] 512 | | _ => {} [INFO] [stderr] 513 | | } [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] 506 | if let "AudioContext" = name { [INFO] [stderr] 507 | import_type [INFO] [stderr] 508 | .vendor_prefixes [INFO] [stderr] 509 | .push(Ident::new("webkit", Span::call_site())); [INFO] [stderr] 510 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `idl_type @ _` pattern can be written as just `idl_type` [INFO] [stderr] --> src/idl_type.rs:661:13 [INFO] [stderr] | [INFO] [stderr] 661 | idl_type @ _ => vec![idl_type.clone()], [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/lib.rs:577:5 [INFO] [stderr] | [INFO] [stderr] 577 | / fn member_attribute( [INFO] [stderr] 578 | | &self, [INFO] [stderr] 579 | | program: &mut backend::ast::Program, [INFO] [stderr] 580 | | self_name: &'src str, [INFO] [stderr] ... | [INFO] [stderr] 627 | | } [INFO] [stderr] 628 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] error: for loop over `self.create_getter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/lib.rs:598:36 [INFO] [stderr] | [INFO] [stderr] 598 | for mut import_function in self.create_getter( [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 599 | | identifier, [INFO] [stderr] 600 | | &type_.type_, [INFO] [stderr] 601 | | self_name, [INFO] [stderr] ... | [INFO] [stderr] 604 | | container_attrs, [INFO] [stderr] 605 | | ) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for mut import_function in self.create_getter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` with `if let Some(mut import_function) = self.create_getter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` [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] error: for loop over `self.create_setter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/lib.rs:613:40 [INFO] [stderr] | [INFO] [stderr] 613 | for mut import_function in self.create_setter( [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 614 | | identifier, [INFO] [stderr] 615 | | &type_.type_, [INFO] [stderr] 616 | | self_name, [INFO] [stderr] ... | [INFO] [stderr] 619 | | container_attrs, [INFO] [stderr] 620 | | ) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for mut import_function in self.create_setter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` with `if let Some(mut import_function) = self.create_setter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` [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/lib.rs:673:49 [INFO] [stderr] | [INFO] [stderr] 673 | OperationId::IndexingGetter => Some(format!("The indexing getter\n\n")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"The indexing getter\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:674:49 [INFO] [stderr] | [INFO] [stderr] 674 | OperationId::IndexingSetter => Some(format!("The indexing setter\n\n")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"The indexing setter\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:675:50 [INFO] [stderr] | [INFO] [stderr] 675 | OperationId::IndexingDeleter => Some(format!("The indexing deleter\n\n")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"The indexing deleter\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/util.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | format!("[MDN Documentation]({})", link).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `format!("[MDN Documentation]({})", link)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/util.rs:98:65 [INFO] [stderr] | [INFO] [stderr] 98 | let (negative, text) = if orig_text.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:714:12 [INFO] [stderr] | [INFO] [stderr] 714 | if required.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `required.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] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/util.rs:222:5 [INFO] [stderr] | [INFO] [stderr] 222 | / pub fn create_one_function<'a>( [INFO] [stderr] 223 | | &self, [INFO] [stderr] 224 | | js_name: &str, [INFO] [stderr] 225 | | rust_name: &str, [INFO] [stderr] ... | [INFO] [stderr] 326 | | }) [INFO] [stderr] 327 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/util.rs:242:29 [INFO] [stderr] | [INFO] [stderr] 242 | let mut arguments = if let &backend::ast::ImportFunctionKind::Method { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 243 | | ref ty, [INFO] [stderr] 244 | | kind: [INFO] [stderr] 245 | | backend::ast::MethodKind::Operation(backend::ast::Operation { [INFO] [stderr] ... | [INFO] [stderr] 258 | | Vec::with_capacity(idl_arguments.size_hint().0) [INFO] [stderr] 259 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 242 | let mut arguments = if let backend::ast::ImportFunctionKind::Method { [INFO] [stderr] 243 | ref ty, [INFO] [stderr] 244 | kind: [INFO] [stderr] 245 | backend::ast::MethodKind::Operation(backend::ast::Operation { [INFO] [stderr] 246 | is_static: false, .. [INFO] [stderr] 247 | }), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `ret @ _` pattern can be written as just `ret` [INFO] [stderr] --> src/util.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | ret @ _ => match ret.to_syn_type(TypePosition::Return) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/util.rs:407:5 [INFO] [stderr] | [INFO] [stderr] 407 | / pub fn create_imports( [INFO] [stderr] 408 | | &self, [INFO] [stderr] 409 | | container_attrs: Option<&ExtendedAttributeList<'src>>, [INFO] [stderr] 410 | | kind: backend::ast::ImportFunctionKind, [INFO] [stderr] ... | [INFO] [stderr] 628 | | return ret; [INFO] [stderr] 629 | | } [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: unused label `'outer` [INFO] [stderr] --> src/util.rs:423:9 [INFO] [stderr] | [INFO] [stderr] 423 | / 'outer: for signature in data.signatures.iter() { [INFO] [stderr] 424 | | let mut idl_args = Vec::with_capacity(signature.args.len()); [INFO] [stderr] 425 | | for (i, arg) in signature.args.iter().enumerate() { [INFO] [stderr] 426 | | if arg.optional { [INFO] [stderr] ... | [INFO] [stderr] 438 | | signatures.push((signature, idl_args)); [INFO] [stderr] 439 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_label)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_label [INFO] [stderr] [INFO] [stderr] error: Could not compile `wasm-bindgen-webidl`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/util.rs:617:65 [INFO] [stderr] | [INFO] [stderr] 617 | .map(|(name, idl_type)| (&name[..], idl_type.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 617 | .map(|(name, idl_type)| (&name[..], &(*idl_type).clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 617 | .map(|(name, idl_type)| (&name[..], &idl_type::IdlType<'_>::clone(idl_type))), [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/lib.rs:362:44 [INFO] [stderr] | [INFO] [stderr] 362 | syn::Type::Reference(ref i) => match &*i.elem { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 363 | | syn::Type::Slice(_) => return None, [INFO] [stderr] 364 | | _ => (), [INFO] [stderr] 365 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let syn::Type::Slice(_) = &*i.elem { return None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:373:33 [INFO] [stderr] | [INFO] [stderr] 373 | / match &*i.elem { [INFO] [stderr] 374 | | syn::Type::Slice(_) => return None, [INFO] [stderr] 375 | | _ => (), [INFO] [stderr] 376 | | } [INFO] [stderr] | |_________________________________^ help: try this: `if let syn::Type::Slice(_) = &*i.elem { return None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:506:9 [INFO] [stderr] | [INFO] [stderr] 506 | / match name { [INFO] [stderr] 507 | | "AudioContext" => { [INFO] [stderr] 508 | | import_type [INFO] [stderr] 509 | | .vendor_prefixes [INFO] [stderr] ... | [INFO] [stderr] 512 | | _ => {} [INFO] [stderr] 513 | | } [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] 506 | if let "AudioContext" = name { [INFO] [stderr] 507 | import_type [INFO] [stderr] 508 | .vendor_prefixes [INFO] [stderr] 509 | .push(Ident::new("webkit", Span::call_site())); [INFO] [stderr] 510 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/lib.rs:577:5 [INFO] [stderr] | [INFO] [stderr] 577 | / fn member_attribute( [INFO] [stderr] 578 | | &self, [INFO] [stderr] 579 | | program: &mut backend::ast::Program, [INFO] [stderr] 580 | | self_name: &'src str, [INFO] [stderr] ... | [INFO] [stderr] 627 | | } [INFO] [stderr] 628 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] error: for loop over `self.create_getter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/lib.rs:598:36 [INFO] [stderr] | [INFO] [stderr] 598 | for mut import_function in self.create_getter( [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 599 | | identifier, [INFO] [stderr] 600 | | &type_.type_, [INFO] [stderr] 601 | | self_name, [INFO] [stderr] ... | [INFO] [stderr] 604 | | container_attrs, [INFO] [stderr] 605 | | ) { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_option)] on by default [INFO] [stderr] = help: consider replacing `for mut import_function in self.create_getter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` with `if let Some(mut import_function) = self.create_getter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` [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] error: for loop over `self.create_setter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )`, which is an `Option`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/lib.rs:613:40 [INFO] [stderr] | [INFO] [stderr] 613 | for mut import_function in self.create_setter( [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 614 | | identifier, [INFO] [stderr] 615 | | &type_.type_, [INFO] [stderr] 616 | | self_name, [INFO] [stderr] ... | [INFO] [stderr] 619 | | container_attrs, [INFO] [stderr] 620 | | ) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: consider replacing `for mut import_function in self.create_setter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` with `if let Some(mut import_function) = self.create_setter( [INFO] [stderr] identifier, [INFO] [stderr] &type_.type_, [INFO] [stderr] self_name, [INFO] [stderr] is_static, [INFO] [stderr] attrs, [INFO] [stderr] container_attrs, [INFO] [stderr] )` [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/lib.rs:673:49 [INFO] [stderr] | [INFO] [stderr] 673 | OperationId::IndexingGetter => Some(format!("The indexing getter\n\n")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"The indexing getter\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:674:49 [INFO] [stderr] | [INFO] [stderr] 674 | OperationId::IndexingSetter => Some(format!("The indexing setter\n\n")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"The indexing setter\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:675:50 [INFO] [stderr] | [INFO] [stderr] 675 | OperationId::IndexingDeleter => Some(format!("The indexing deleter\n\n")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"The indexing deleter\n\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:714:12 [INFO] [stderr] | [INFO] [stderr] 714 | if required.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `required.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: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `wasm-bindgen-webidl`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b6735e1d894b6782589c4c9e4b66e0fdabfd8db6f9cdd6882d9f64597a479da6"` [INFO] running `"docker" "rm" "-f" "b6735e1d894b6782589c4c9e4b66e0fdabfd8db6f9cdd6882d9f64597a479da6"` [INFO] [stdout] b6735e1d894b6782589c4c9e4b66e0fdabfd8db6f9cdd6882d9f64597a479da6