[INFO] updating cached repository jaburns/smb3k [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jaburns/smb3k [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jaburns/smb3k" "work/ex/clippy-test-run/sources/stable/gh/jaburns/smb3k"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jaburns/smb3k'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jaburns/smb3k" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaburns/smb3k"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaburns/smb3k'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2c94b651226ba7c449bd5b2f27596b01743b28ff [INFO] sha for GitHub repo jaburns/smb3k: 2c94b651226ba7c449bd5b2f27596b01743b28ff [INFO] validating manifest of jaburns/smb3k 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 jaburns/smb3k 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 jaburns/smb3k [INFO] finished frobbing jaburns/smb3k [INFO] frobbed toml for jaburns/smb3k written to work/ex/clippy-test-run/sources/stable/gh/jaburns/smb3k/Cargo.toml [INFO] started frobbing jaburns/smb3k [INFO] finished frobbing jaburns/smb3k [INFO] frobbed toml for jaburns/smb3k written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaburns/smb3k/Cargo.toml [INFO] crate jaburns/smb3k 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 jaburns/smb3k 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-5/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/jaburns/smb3k:/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] 88188d62851544ea2e09ae94943f4dece6c5e0714be278eb9678020c4ee577fa [INFO] running `"docker" "start" "-a" "88188d62851544ea2e09ae94943f4dece6c5e0714be278eb9678020c4ee577fa"` [INFO] [stderr] Checking smb3k v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/parser.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/parser.rs:172:19 [INFO] [stderr] | [INFO] [stderr] 172 | let integer = one_of(b"123456789") - one_of(b"0123456789").repeat(0..) | sym(b'0'); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(one_of(b"123456789") - one_of(b"0123456789").repeat(0..)) | sym(b'0')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/parser.rs:172:19 [INFO] [stderr] | [INFO] [stderr] 172 | let integer = one_of(b"123456789") - one_of(b"0123456789").repeat(0..) | sym(b'0'); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(one_of(b"123456789") - one_of(b"0123456789").repeat(0..)) | sym(b'0')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [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/js_writer.rs:74:22 [INFO] [stderr] | [INFO] [stderr] 74 | fn join_lines(lines: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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 should use the `starts_with` method [INFO] [stderr] --> src/js_writer.rs:92:8 [INFO] [stderr] | [INFO] [stderr] 92 | if ret.chars().next().unwrap() == '.' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `ret.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | async_funcs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/js_writer.rs:172:16 [INFO] [stderr] | [INFO] [stderr] 172 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: you should use the `starts_with` method [INFO] [stderr] --> src/js_writer.rs:220:16 [INFO] [stderr] | [INFO] [stderr] 220 | if step.chars().next().unwrap() == '-' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `step.starts_with('-')` [INFO] [stderr] | [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:303:11 [INFO] [stderr] | [INFO] [stderr] 303 | body: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[StatementLine]` [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/js_writer.rs:305:18 [INFO] [stderr] | [INFO] [stderr] 305 | async_funcs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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/js_writer.rs:332:13 [INFO] [stderr] | [INFO] [stderr] 332 | params: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[FunctionParam]` [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/js_writer.rs:333:11 [INFO] [stderr] | [INFO] [stderr] 333 | body: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[StatementLine]` [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/js_writer.rs:336:18 [INFO] [stderr] | [INFO] [stderr] 336 | async_funcs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/js_writer.rs:346:8 [INFO] [stderr] | [INFO] [stderr] 346 | if params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!params.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:381:73 [INFO] [stderr] | [INFO] [stderr] 381 | fn write_module(module: &Module, type_lookup: &TypeLookup, async_funcs: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/js_writer.rs:469:24 [INFO] [stderr] | [INFO] [stderr] 469 | && params.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `params.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:541:27 [INFO] [stderr] | [INFO] [stderr] 541 | fn collect_types(program: &Vec) -> TypeLookup { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Module]` [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/js_writer.rs:555:33 [INFO] [stderr] | [INFO] [stderr] 555 | fn collect_async_funcs(program: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Module]` [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/js_writer.rs:74:22 [INFO] [stderr] | [INFO] [stderr] 74 | fn join_lines(lines: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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/js_writer.rs:579:31 [INFO] [stderr] | [INFO] [stderr] 579 | pub fn write_program(program: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Module]` [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 should use the `starts_with` method [INFO] [stderr] --> src/js_writer.rs:92:8 [INFO] [stderr] | [INFO] [stderr] 92 | if ret.chars().next().unwrap() == '.' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `ret.starts_with('.')` [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:16:16 [INFO] [stderr] | [INFO] [stderr] 16 | if x.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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::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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | async_funcs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/parser.rs:86:21 [INFO] [stderr] | [INFO] [stderr] 86 | match line.find("'") { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:92:28 [INFO] [stderr] | [INFO] [stderr] 92 | fn is_module_class(blocks: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[TopLevelBlock]` [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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/parser.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / blocks [INFO] [stderr] 94 | | .iter() [INFO] [stderr] 95 | | .find(|ref x| match x { [INFO] [stderr] 96 | | TopLevelBlock::ClassMarker => true, [INFO] [stderr] 97 | | _ => false, [INFO] [stderr] 98 | | }) [INFO] [stderr] 99 | | .is_some() [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [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/parser.rs:102:29 [INFO] [stderr] | [INFO] [stderr] 102 | fn find_module_name(blocks: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[TopLevelBlock]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match item { [INFO] [stderr] 105 | | &TopLevelBlock::Attribute { [INFO] [stderr] 106 | | ref name, [INFO] [stderr] 107 | | ref value, [INFO] [stderr] ... | [INFO] [stderr] 113 | | _ => {} [INFO] [stderr] 114 | | }; [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] 104 | if let &TopLevelBlock::Attribute { [INFO] [stderr] 105 | ref name, [INFO] [stderr] 106 | ref value, [INFO] [stderr] 107 | } = item { [INFO] [stderr] 108 | if name == "VB_Name" { [INFO] [stderr] 109 | return value.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match item { [INFO] [stderr] 105 | | &TopLevelBlock::Attribute { [INFO] [stderr] 106 | | ref name, [INFO] [stderr] 107 | | ref value, [INFO] [stderr] ... | [INFO] [stderr] 113 | | _ => {} [INFO] [stderr] 114 | | }; [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] 104 | match *item { [INFO] [stderr] 105 | TopLevelBlock::Attribute { [INFO] [stderr] 106 | ref name, [INFO] [stderr] 107 | ref value, [INFO] [stderr] 108 | } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/js_writer.rs:172:16 [INFO] [stderr] | [INFO] [stderr] 172 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: you should use the `starts_with` method [INFO] [stderr] --> src/js_writer.rs:220:16 [INFO] [stderr] | [INFO] [stderr] 220 | if step.chars().next().unwrap() == '-' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `step.starts_with('-')` [INFO] [stderr] | [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:303:11 [INFO] [stderr] | [INFO] [stderr] 303 | body: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[StatementLine]` [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/js_writer.rs:305:18 [INFO] [stderr] | [INFO] [stderr] 305 | async_funcs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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/js_writer.rs:332:13 [INFO] [stderr] | [INFO] [stderr] 332 | params: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[FunctionParam]` [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/js_writer.rs:333:11 [INFO] [stderr] | [INFO] [stderr] 333 | body: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[StatementLine]` [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/js_writer.rs:336:18 [INFO] [stderr] | [INFO] [stderr] 336 | async_funcs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/js_writer.rs:346:8 [INFO] [stderr] | [INFO] [stderr] 346 | if params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!params.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:381:73 [INFO] [stderr] | [INFO] [stderr] 381 | fn write_module(module: &Module, type_lookup: &TypeLookup, async_funcs: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/parser.rs:341:26 [INFO] [stderr] | [INFO] [stderr] 341 | return_type: r.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `r.unwrap_or_default()` [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] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parser.rs:393:46 [INFO] [stderr] | [INFO] [stderr] 393 | (seq(b"Dim") * space() * var_decl()).map(|v| StatementLine::Dim(v)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `StatementLine::Dim` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:421:28 [INFO] [stderr] | [INFO] [stderr] 421 | fn join(with: &str, lines: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: length comparison to zero [INFO] [stderr] --> src/js_writer.rs:469:24 [INFO] [stderr] | [INFO] [stderr] 469 | && params.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `params.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:541:27 [INFO] [stderr] | [INFO] [stderr] 541 | fn collect_types(program: &Vec) -> TypeLookup { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Module]` [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/js_writer.rs:555:33 [INFO] [stderr] | [INFO] [stderr] 555 | fn collect_async_funcs(program: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Module]` [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 boolean expression can be simplified [INFO] [stderr] --> src/parser.rs:503:21 [INFO] [stderr] | [INFO] [stderr] 503 | is_end: end && true, [INFO] [stderr] | ^^^^^^^^^^^ help: try: `end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/parser.rs:568:24 [INFO] [stderr] | [INFO] [stderr] 568 | if x.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `x.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/js_writer.rs:579:31 [INFO] [stderr] | [INFO] [stderr] 579 | pub fn write_program(program: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Module]` [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: redundant closure found [INFO] [stderr] --> src/parser.rs:596:28 [INFO] [stderr] | [INFO] [stderr] 596 | rest_of_the_line().map(|x| StatementLine::Unknown(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `StatementLine::Unknown` [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: length comparison to zero [INFO] [stderr] --> src/parser.rs:16:16 [INFO] [stderr] | [INFO] [stderr] 16 | if x.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.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: single-character string constant used as pattern [INFO] [stderr] --> src/parser.rs:86:21 [INFO] [stderr] | [INFO] [stderr] 86 | match line.find("'") { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:92:28 [INFO] [stderr] | [INFO] [stderr] 92 | fn is_module_class(blocks: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[TopLevelBlock]` [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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/parser.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / blocks [INFO] [stderr] 94 | | .iter() [INFO] [stderr] 95 | | .find(|ref x| match x { [INFO] [stderr] 96 | | TopLevelBlock::ClassMarker => true, [INFO] [stderr] 97 | | _ => false, [INFO] [stderr] 98 | | }) [INFO] [stderr] 99 | | .is_some() [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [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/parser.rs:102:29 [INFO] [stderr] | [INFO] [stderr] 102 | fn find_module_name(blocks: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[TopLevelBlock]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match item { [INFO] [stderr] 105 | | &TopLevelBlock::Attribute { [INFO] [stderr] 106 | | ref name, [INFO] [stderr] 107 | | ref value, [INFO] [stderr] ... | [INFO] [stderr] 113 | | _ => {} [INFO] [stderr] 114 | | }; [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] 104 | if let &TopLevelBlock::Attribute { [INFO] [stderr] 105 | ref name, [INFO] [stderr] 106 | ref value, [INFO] [stderr] 107 | } = item { [INFO] [stderr] 108 | if name == "VB_Name" { [INFO] [stderr] 109 | return value.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match item { [INFO] [stderr] 105 | | &TopLevelBlock::Attribute { [INFO] [stderr] 106 | | ref name, [INFO] [stderr] 107 | | ref value, [INFO] [stderr] ... | [INFO] [stderr] 113 | | _ => {} [INFO] [stderr] 114 | | }; [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] 104 | match *item { [INFO] [stderr] 105 | TopLevelBlock::Attribute { [INFO] [stderr] 106 | ref name, [INFO] [stderr] 107 | ref value, [INFO] [stderr] 108 | } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/parser.rs:341:26 [INFO] [stderr] | [INFO] [stderr] 341 | return_type: r.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `r.unwrap_or_default()` [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] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parser.rs:393:46 [INFO] [stderr] | [INFO] [stderr] 393 | (seq(b"Dim") * space() * var_decl()).map(|v| StatementLine::Dim(v)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `StatementLine::Dim` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:421:28 [INFO] [stderr] | [INFO] [stderr] 421 | fn join(with: &str, lines: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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 boolean expression can be simplified [INFO] [stderr] --> src/parser.rs:503:21 [INFO] [stderr] | [INFO] [stderr] 503 | is_end: end && true, [INFO] [stderr] | ^^^^^^^^^^^ help: try: `end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/parser.rs:568:24 [INFO] [stderr] | [INFO] [stderr] 568 | if x.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `x.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/parser.rs:596:28 [INFO] [stderr] | [INFO] [stderr] 596 | rest_of_the_line().map(|x| StatementLine::Unknown(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `StatementLine::Unknown` [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] Finished dev [unoptimized + debuginfo] target(s) in 1.36s [INFO] running `"docker" "inspect" "88188d62851544ea2e09ae94943f4dece6c5e0714be278eb9678020c4ee577fa"` [INFO] running `"docker" "rm" "-f" "88188d62851544ea2e09ae94943f4dece6c5e0714be278eb9678020c4ee577fa"` [INFO] [stdout] 88188d62851544ea2e09ae94943f4dece6c5e0714be278eb9678020c4ee577fa