[INFO] updating cached repository jrmuizel/wr-binding [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jrmuizel/wr-binding [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jrmuizel/wr-binding" "work/ex/clippy-test-run/sources/stable/gh/jrmuizel/wr-binding"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jrmuizel/wr-binding'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jrmuizel/wr-binding" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jrmuizel/wr-binding"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jrmuizel/wr-binding'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 7c3c4c2f31124ef642de65124d3936ba5ad3180e [INFO] sha for GitHub repo jrmuizel/wr-binding: 7c3c4c2f31124ef642de65124d3936ba5ad3180e [INFO] validating manifest of jrmuizel/wr-binding 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 jrmuizel/wr-binding 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 jrmuizel/wr-binding [INFO] finished frobbing jrmuizel/wr-binding [INFO] frobbed toml for jrmuizel/wr-binding written to work/ex/clippy-test-run/sources/stable/gh/jrmuizel/wr-binding/Cargo.toml [INFO] started frobbing jrmuizel/wr-binding [INFO] finished frobbing jrmuizel/wr-binding [INFO] frobbed toml for jrmuizel/wr-binding written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jrmuizel/wr-binding/Cargo.toml [INFO] crate jrmuizel/wr-binding 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 jrmuizel/wr-binding against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jrmuizel/wr-binding:/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 -Dclippy::into_iter_on_array" "-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] 38bca219adf67662d5e30357cb27fac33d723422a9ca07ec9b8a7a0fc6cf3248 [INFO] running `"docker" "start" "-a" "38bca219adf67662d5e30357cb27fac33d723422a9ca07ec9b8a7a0fc6cf3248"` [INFO] [stderr] Checking quote v0.3.14 [INFO] [stderr] Checking synom v0.11.2 [INFO] [stderr] Checking syn v0.11.8 [INFO] [stderr] Checking wr-binding v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:186:9 [INFO] [stderr] | [INFO] [stderr] 186 | deps: deps, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `deps` [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/main.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | c_code: c_code, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `c_code` [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/main.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | ty_params: ty_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ty_params` [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/main.rs:257:13 [INFO] [stderr] | [INFO] [stderr] 257 | deps: deps, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `deps` [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/main.rs:302:21 [INFO] [stderr] | [INFO] [stderr] 302 | ty_params: ty_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ty_params` [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/main.rs:186:9 [INFO] [stderr] | [INFO] [stderr] 186 | deps: deps, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `deps` [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/main.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | c_code: c_code, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `c_code` [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/main.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | ty_params: ty_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ty_params` [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/main.rs:257:13 [INFO] [stderr] | [INFO] [stderr] 257 | deps: deps, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `deps` [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/main.rs:302:21 [INFO] [stderr] | [INFO] [stderr] 302 | ty_params: ty_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ty_params` [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/main.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | / return attrs [INFO] [stderr] 69 | | .iter() [INFO] [stderr] 70 | | .any(|ref attr| attr.style == AttrStyle::Outer && attr.value == target); [INFO] [stderr] | |_______________________________________________________________________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 68 | attrs [INFO] [stderr] 69 | .iter() [INFO] [stderr] 70 | .any(|ref attr| attr.style == AttrStyle::Outer && attr.value == target) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:309:9 [INFO] [stderr] | [INFO] [stderr] 309 | / return TypeAlias::Typedef(TypedefAlias { [INFO] [stderr] 310 | | aliased: ConvertedItem::new(converted_type.format_with_ident(&Ident::from(ident)), [INFO] [stderr] 311 | | vec![], [INFO] [stderr] 312 | | converted_type.deps), [INFO] [stderr] 313 | | }); [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] 309 | TypeAlias::Typedef(TypedefAlias { [INFO] [stderr] 310 | aliased: ConvertedItem::new(converted_type.format_with_ident(&Ident::from(ident)), [INFO] [stderr] 311 | vec![], [INFO] [stderr] 312 | converted_type.deps), [INFO] [stderr] 313 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | / return attrs [INFO] [stderr] 69 | | .iter() [INFO] [stderr] 70 | | .any(|ref attr| attr.style == AttrStyle::Outer && attr.value == target); [INFO] [stderr] | |_______________________________________________________________________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 68 | attrs [INFO] [stderr] 69 | .iter() [INFO] [stderr] 70 | .any(|ref attr| attr.style == AttrStyle::Outer && attr.value == target) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:309:9 [INFO] [stderr] | [INFO] [stderr] 309 | / return TypeAlias::Typedef(TypedefAlias { [INFO] [stderr] 310 | | aliased: ConvertedItem::new(converted_type.format_with_ident(&Ident::from(ident)), [INFO] [stderr] 311 | | vec![], [INFO] [stderr] 312 | | converted_type.deps), [INFO] [stderr] 313 | | }); [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] 309 | TypeAlias::Typedef(TypedefAlias { [INFO] [stderr] 310 | aliased: ConvertedItem::new(converted_type.format_with_ident(&Ident::from(ident)), [INFO] [stderr] 311 | vec![], [INFO] [stderr] 312 | converted_type.deps), [INFO] [stderr] 313 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust_lib.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | / if let &Some(ref inline_items) = inline_items { [INFO] [stderr] 59 | | items_callback(String::from(crate_name), [INFO] [stderr] 60 | | &inline_items); [INFO] [stderr] 61 | | continue; [INFO] [stderr] 62 | | } [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] 58 | if let Some(ref inline_items) = *inline_items { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/rust_lib.rs:76:21 [INFO] [stderr] | [INFO] [stderr] 76 | writeln!(io::stderr(), "warning, can't find a mod's file").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/rust_lib.rs:86:21 [INFO] [stderr] | [INFO] [stderr] 86 | writeln!(io::stderr(), "warning, can't find an extern crate {}", next_crate_name.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [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/main.rs:67:43 [INFO] [stderr] | [INFO] [stderr] 67 | fn has_attribute(target: MetaItem, attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:73:25 [INFO] [stderr] | [INFO] [stderr] 73 | fn has_no_mangle(attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:77:24 [INFO] [stderr] | [INFO] [stderr] 77 | fn wr_func_body(attrs: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:93:21 [INFO] [stderr] | [INFO] [stderr] 93 | fn is_repr_c(attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:98:23 [INFO] [stderr] | [INFO] [stderr] 98 | fn is_repr_u32(attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | / match ty { [INFO] [stderr] 150 | | &Ty::Path(_, ref p) => map_path(p), [INFO] [stderr] 151 | | &Ty::Ptr(ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] 152 | | &Ty::Rptr(_, ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] ... | [INFO] [stderr] 155 | | _ => ConvertedType::from(format!("unknown {:?}", ty)), [INFO] [stderr] 156 | | } [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] 149 | match *ty { [INFO] [stderr] 150 | Ty::Path(_, ref p) => map_path(p), [INFO] [stderr] 151 | Ty::Ptr(ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] 152 | Ty::Rptr(_, ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] 153 | Ty::Array(ref p, ConstExpr::Lit(Lit::Int(sz, _))) => map_ty(&p).append_postfix(&format!("[{}]", sz)), [INFO] [stderr] 154 | Ty::BareFn(ref b) => map_fn(b), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / match ret { [INFO] [stderr] 161 | | &FunctionRetTy::Default => ConvertedType::from("void".to_string()), [INFO] [stderr] 162 | | &FunctionRetTy::Ty(ref ty) => map_ty(ty), [INFO] [stderr] 163 | | } [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] 160 | match *ret { [INFO] [stderr] 161 | FunctionRetTy::Default => ConvertedType::from("void".to_string()), [INFO] [stderr] 162 | FunctionRetTy::Ty(ref ty) => map_ty(ty), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:191:5 [INFO] [stderr] | [INFO] [stderr] 191 | / match f { [INFO] [stderr] 192 | | &FnArg::Captured(Pat::Ident(_, ref ident, _), ref ty) => { [INFO] [stderr] 193 | | let mut converted = map_ty(ty); [INFO] [stderr] 194 | | dep_set.append(&mut converted.deps); [INFO] [stderr] ... | [INFO] [stderr] 197 | | _ => "unknown".to_string(), [INFO] [stderr] 198 | | } [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 *f { [INFO] [stderr] 192 | FnArg::Captured(Pat::Ident(_, ref ident, _), ref ty) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/main.rs:221:21 [INFO] [stderr] | [INFO] [stderr] 221 | let new_value = match &v.discriminant { [INFO] [stderr] | _____________________^ [INFO] [stderr] 222 | | &None => accum.1 + 1, [INFO] [stderr] 223 | | &Some(ConstExpr::Lit(Lit::Int(ref specified_value, _))) => *specified_value as i32, [INFO] [stderr] 224 | | &Some(_) => { [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | }; [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] 221 | let new_value = match v.discriminant { [INFO] [stderr] 222 | None => accum.1 + 1, [INFO] [stderr] 223 | Some(ConstExpr::Lit(Lit::Int(ref specified_value, _))) => *specified_value as i32, [INFO] [stderr] 224 | Some(_) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | writeln!(io::stderr(), "warning, unsupported enum discriminant").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / if let &Ty::Path(_, ref p) = ty { [INFO] [stderr] 287 | | let l = p.segments[0].ident.to_string(); [INFO] [stderr] 288 | | [INFO] [stderr] 289 | | if !is_primitive(&l) { [INFO] [stderr] ... | [INFO] [stderr] 304 | | } [INFO] [stderr] 305 | | } [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] 286 | if let Ty::Path(_, ref p) = *ty { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:317:9 [INFO] [stderr] | [INFO] [stderr] 317 | / match self { [INFO] [stderr] 318 | | &TypeAlias::Struct(ref a) => { [INFO] [stderr] 319 | | let mut deps = BTreeSet::new(); [INFO] [stderr] 320 | | [INFO] [stderr] ... | [INFO] [stderr] 334 | | &TypeAlias::Typedef(ref a) => a.aliased.deps.clone(), [INFO] [stderr] 335 | | } [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] 317 | match *self { [INFO] [stderr] 318 | TypeAlias::Struct(ref a) => { [INFO] [stderr] 319 | let mut deps = BTreeSet::new(); [INFO] [stderr] 320 | [INFO] [stderr] 321 | // A type alias depends on its type parameters [INFO] [stderr] 322 | // and anything it's aliased type depends on [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/main.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | results_ref.ds.get(dep).map(|converted| collect_deps(dst, results_ref, &converted.deps)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(converted) = results_ref.ds.get(dep) { collect_deps(dst, results_ref, &converted.deps) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/main.rs:367:9 [INFO] [stderr] | [INFO] [stderr] 367 | results_ref.type_map.get(dep).map(|alias| collect_deps(dst, results_ref, &alias.deps(results_ref))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(alias) = results_ref.type_map.get(dep) { collect_deps(dst, results_ref, &alias.deps(results_ref)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rust_lib.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | / if let &Some(ref inline_items) = inline_items { [INFO] [stderr] 59 | | items_callback(String::from(crate_name), [INFO] [stderr] 60 | | &inline_items); [INFO] [stderr] 61 | | continue; [INFO] [stderr] 62 | | } [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] 58 | if let Some(ref inline_items) = *inline_items { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/rust_lib.rs:76:21 [INFO] [stderr] | [INFO] [stderr] 76 | writeln!(io::stderr(), "warning, can't find a mod's file").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/rust_lib.rs:86:21 [INFO] [stderr] | [INFO] [stderr] 86 | writeln!(io::stderr(), "warning, can't find an extern crate {}", next_crate_name.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:393:21 [INFO] [stderr] | [INFO] [stderr] 393 | writeln!(io::stderr(), "processing function {}::{}", mod_name, &item.ident).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:413:21 [INFO] [stderr] | [INFO] [stderr] 413 | writeln!(io::stderr(), "processing struct {}::{}", mod_name, &item.ident).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:415:25 [INFO] [stderr] | [INFO] [stderr] 415 | / if let &VariantData::Struct(ref fields) = variant { [INFO] [stderr] 416 | | let mut deps = BTreeSet::new(); [INFO] [stderr] 417 | | let mut c_code = String::new(); [INFO] [stderr] 418 | | let ty_params = generics.ty_params [INFO] [stderr] ... | [INFO] [stderr] 438 | | ConvertedItem::new(c_code, ty_params, deps)); [INFO] [stderr] 439 | | } [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] 415 | if let VariantData::Struct(ref fields) = *variant { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:443:21 [INFO] [stderr] | [INFO] [stderr] 443 | writeln!(io::stderr(), "processing enum {}::{}", mod_name, &item.ident).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [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/main.rs:67:43 [INFO] [stderr] | [INFO] [stderr] 67 | fn has_attribute(target: MetaItem, attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:498:13 [INFO] [stderr] | [INFO] [stderr] 498 | / match alias { [INFO] [stderr] 499 | | &TypeAlias::Struct(ref alias) => { [INFO] [stderr] 500 | | // Create a specialized version of the struct or enum [INFO] [stderr] 501 | | // with type parameters resolved and a new name [INFO] [stderr] ... | [INFO] [stderr] 516 | | } [INFO] [stderr] 517 | | } [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] 498 | match *alias { [INFO] [stderr] 499 | TypeAlias::Struct(ref alias) => { [INFO] [stderr] 500 | // Create a specialized version of the struct or enum [INFO] [stderr] 501 | // with type parameters resolved and a new name [INFO] [stderr] 502 | if let Some(aliased) = results_ref.ds.get(&alias.aliased_ident) { [INFO] [stderr] 503 | let replaced_name = aliased.c_code.replace(&alias.aliased_ident, [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/main.rs:73:25 [INFO] [stderr] | [INFO] [stderr] 73 | fn has_no_mangle(attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:77:24 [INFO] [stderr] | [INFO] [stderr] 77 | fn wr_func_body(attrs: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:93:21 [INFO] [stderr] | [INFO] [stderr] 93 | fn is_repr_c(attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:98:23 [INFO] [stderr] | [INFO] [stderr] 98 | fn is_repr_u32(attrs: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | / match ty { [INFO] [stderr] 150 | | &Ty::Path(_, ref p) => map_path(p), [INFO] [stderr] 151 | | &Ty::Ptr(ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] 152 | | &Ty::Rptr(_, ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] ... | [INFO] [stderr] 155 | | _ => ConvertedType::from(format!("unknown {:?}", ty)), [INFO] [stderr] 156 | | } [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] 149 | match *ty { [INFO] [stderr] 150 | Ty::Path(_, ref p) => map_path(p), [INFO] [stderr] 151 | Ty::Ptr(ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] 152 | Ty::Rptr(_, ref mut_ty) => map_mut_ty(mut_ty).append_prefix("*"), [INFO] [stderr] 153 | Ty::Array(ref p, ConstExpr::Lit(Lit::Int(sz, _))) => map_ty(&p).append_postfix(&format!("[{}]", sz)), [INFO] [stderr] 154 | Ty::BareFn(ref b) => map_fn(b), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / match ret { [INFO] [stderr] 161 | | &FunctionRetTy::Default => ConvertedType::from("void".to_string()), [INFO] [stderr] 162 | | &FunctionRetTy::Ty(ref ty) => map_ty(ty), [INFO] [stderr] 163 | | } [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] 160 | match *ret { [INFO] [stderr] 161 | FunctionRetTy::Default => ConvertedType::from("void".to_string()), [INFO] [stderr] 162 | FunctionRetTy::Ty(ref ty) => map_ty(ty), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:191:5 [INFO] [stderr] | [INFO] [stderr] 191 | / match f { [INFO] [stderr] 192 | | &FnArg::Captured(Pat::Ident(_, ref ident, _), ref ty) => { [INFO] [stderr] 193 | | let mut converted = map_ty(ty); [INFO] [stderr] 194 | | dep_set.append(&mut converted.deps); [INFO] [stderr] ... | [INFO] [stderr] 197 | | _ => "unknown".to_string(), [INFO] [stderr] 198 | | } [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 *f { [INFO] [stderr] 192 | FnArg::Captured(Pat::Ident(_, ref ident, _), ref ty) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/main.rs:221:21 [INFO] [stderr] | [INFO] [stderr] 221 | let new_value = match &v.discriminant { [INFO] [stderr] | _____________________^ [INFO] [stderr] 222 | | &None => accum.1 + 1, [INFO] [stderr] 223 | | &Some(ConstExpr::Lit(Lit::Int(ref specified_value, _))) => *specified_value as i32, [INFO] [stderr] 224 | | &Some(_) => { [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | }; [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] 221 | let new_value = match v.discriminant { [INFO] [stderr] 222 | None => accum.1 + 1, [INFO] [stderr] 223 | Some(ConstExpr::Lit(Lit::Int(ref specified_value, _))) => *specified_value as i32, [INFO] [stderr] 224 | Some(_) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:226:13 [INFO] [stderr] | [INFO] [stderr] 226 | writeln!(io::stderr(), "warning, unsupported enum discriminant").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / if let &Ty::Path(_, ref p) = ty { [INFO] [stderr] 287 | | let l = p.segments[0].ident.to_string(); [INFO] [stderr] 288 | | [INFO] [stderr] 289 | | if !is_primitive(&l) { [INFO] [stderr] ... | [INFO] [stderr] 304 | | } [INFO] [stderr] 305 | | } [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] 286 | if let Ty::Path(_, ref p) = *ty { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:317:9 [INFO] [stderr] | [INFO] [stderr] 317 | / match self { [INFO] [stderr] 318 | | &TypeAlias::Struct(ref a) => { [INFO] [stderr] 319 | | let mut deps = BTreeSet::new(); [INFO] [stderr] 320 | | [INFO] [stderr] ... | [INFO] [stderr] 334 | | &TypeAlias::Typedef(ref a) => a.aliased.deps.clone(), [INFO] [stderr] 335 | | } [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] 317 | match *self { [INFO] [stderr] 318 | TypeAlias::Struct(ref a) => { [INFO] [stderr] 319 | let mut deps = BTreeSet::new(); [INFO] [stderr] 320 | [INFO] [stderr] 321 | // A type alias depends on its type parameters [INFO] [stderr] 322 | // and anything it's aliased type depends on [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/main.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | results_ref.ds.get(dep).map(|converted| collect_deps(dst, results_ref, &converted.deps)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(converted) = results_ref.ds.get(dep) { collect_deps(dst, results_ref, &converted.deps) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/main.rs:367:9 [INFO] [stderr] | [INFO] [stderr] 367 | results_ref.type_map.get(dep).map(|alias| collect_deps(dst, results_ref, &alias.deps(results_ref))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(alias) = results_ref.type_map.get(dep) { collect_deps(dst, results_ref, &alias.deps(results_ref)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:393:21 [INFO] [stderr] | [INFO] [stderr] 393 | writeln!(io::stderr(), "processing function {}::{}", mod_name, &item.ident).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:413:21 [INFO] [stderr] | [INFO] [stderr] 413 | writeln!(io::stderr(), "processing struct {}::{}", mod_name, &item.ident).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:415:25 [INFO] [stderr] | [INFO] [stderr] 415 | / if let &VariantData::Struct(ref fields) = variant { [INFO] [stderr] 416 | | let mut deps = BTreeSet::new(); [INFO] [stderr] 417 | | let mut c_code = String::new(); [INFO] [stderr] 418 | | let ty_params = generics.ty_params [INFO] [stderr] ... | [INFO] [stderr] 438 | | ConvertedItem::new(c_code, ty_params, deps)); [INFO] [stderr] 439 | | } [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] 415 | if let VariantData::Struct(ref fields) = *variant { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/main.rs:443:21 [INFO] [stderr] | [INFO] [stderr] 443 | writeln!(io::stderr(), "processing enum {}::{}", mod_name, &item.ident).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:498:13 [INFO] [stderr] | [INFO] [stderr] 498 | / match alias { [INFO] [stderr] 499 | | &TypeAlias::Struct(ref alias) => { [INFO] [stderr] 500 | | // Create a specialized version of the struct or enum [INFO] [stderr] 501 | | // with type parameters resolved and a new name [INFO] [stderr] ... | [INFO] [stderr] 516 | | } [INFO] [stderr] 517 | | } [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] 498 | match *alias { [INFO] [stderr] 499 | TypeAlias::Struct(ref alias) => { [INFO] [stderr] 500 | // Create a specialized version of the struct or enum [INFO] [stderr] 501 | // with type parameters resolved and a new name [INFO] [stderr] 502 | if let Some(aliased) = results_ref.ds.get(&alias.aliased_ident) { [INFO] [stderr] 503 | let replaced_name = aliased.c_code.replace(&alias.aliased_ident, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.83s [INFO] running `"docker" "inspect" "38bca219adf67662d5e30357cb27fac33d723422a9ca07ec9b8a7a0fc6cf3248"` [INFO] running `"docker" "rm" "-f" "38bca219adf67662d5e30357cb27fac33d723422a9ca07ec9b8a7a0fc6cf3248"` [INFO] [stdout] 38bca219adf67662d5e30357cb27fac33d723422a9ca07ec9b8a7a0fc6cf3248