[INFO] crate spirv-utils 0.2.1 is already in cache [INFO] extracting crate spirv-utils 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/spirv-utils/0.2.1 [INFO] extracting crate spirv-utils 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/spirv-utils/0.2.1 [INFO] validating manifest of spirv-utils-0.2.1 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 spirv-utils-0.2.1 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 spirv-utils-0.2.1 [INFO] finished frobbing spirv-utils-0.2.1 [INFO] frobbed toml for spirv-utils-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/spirv-utils/0.2.1/Cargo.toml [INFO] started frobbing spirv-utils-0.2.1 [INFO] finished frobbing spirv-utils-0.2.1 [INFO] frobbed toml for spirv-utils-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/spirv-utils/0.2.1/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 spirv-utils-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/spirv-utils/0.2.1:/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] fec74ec82f9bf85d04214ce9650ba3715c8c4aa88734e0eaaa016ad194b29232 [INFO] running `"docker" "start" "-a" "fec74ec82f9bf85d04214ce9650ba3715c8c4aa88734e0eaaa016ad194b29232"` [INFO] [stderr] Compiling lalrpop-util v0.11.0 [INFO] [stderr] Compiling spirv-utils v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: unused imports: `BufRead`, `BufReader` [INFO] [stderr] --> build.rs:14:23 [INFO] [stderr] | [INFO] [stderr] 14 | use std::io::{Result, BufRead, BufReader, Read, Write}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `lalrpop_util::ParseError` [INFO] [stderr] --> build.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use lalrpop_util::ParseError; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> util/codegen.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | self.file.flush(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> util/codegen.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | self.write_indent(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> util/codegen.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | self.write_indent(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> build.rs:65:5 [INFO] [stderr] | [INFO] [stderr] 65 | input.read_to_string(&mut buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/read.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | need_swap: need_swap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `need_swap` [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/parse/read.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | reader: reader [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [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/parse/read.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | generator_id: generator_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generator_id` [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/parse/read.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | id_bound: id_bound [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `id_bound` [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/parse/read.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | params: params [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `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/lib.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | instructions: instructions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `instructions` [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/lib.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | def_map: def_map, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `def_map` [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/lib.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | use_map: use_map [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `use_map` [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/lib.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | indices: indices [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `indices` [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/parse/read.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | need_swap: need_swap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `need_swap` [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/parse/read.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | reader: reader [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [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/parse/read.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | generator_id: generator_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generator_id` [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/parse/read.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | id_bound: id_bound [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `id_bound` [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/parse/read.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | params: params [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `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/lib.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | instructions: instructions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `instructions` [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/lib.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | def_map: def_map, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `def_map` [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/lib.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | use_map: use_map [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `use_map` [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/lib.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | indices: indices [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `indices` [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: long literal lacking separators [INFO] [stderr] --> src/parse/read.rs:14:28 [INFO] [stderr] | [INFO] [stderr] 14 | const MAGIC_NUMBER : u32 = 0x07230203; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0723_0203` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parse/read.rs:14:28 [INFO] [stderr] | [INFO] [stderr] 14 | const MAGIC_NUMBER : u32 = 0x07230203; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x0723_0203` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remaining_words` [INFO] [stderr] --> src/parse/parser.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | fn remaining_words(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remaining_words` [INFO] [stderr] --> src/parse/parser.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | fn remaining_words(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2149:26 [INFO] [stderr] | [INFO] [stderr] 2149 | ids.push(id.into()); [INFO] [stderr] | ^^^^^^^^^ help: consider removing `.into()`: `id` [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: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2173:26 [INFO] [stderr] | [INFO] [stderr] 2173 | ids.push(target.into()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into()`: `target` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2190:51 [INFO] [stderr] | [INFO] [stderr] 2190 | ids.extend(targets.iter().map(|i| Id::from(*i))); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `Id::from()`: `*i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2211:52 [INFO] [stderr] | [INFO] [stderr] 2211 | ids.extend(operands.iter().map(|i| Id::from(*i))); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `Id::from()`: `*i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2221:53 [INFO] [stderr] | [INFO] [stderr] 2221 | ids.extend(interface.iter().map(|i| Id::from(*i))); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `Id::from()`: `*i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2149:26 [INFO] [stderr] | [INFO] [stderr] 2149 | ids.push(id.into()); [INFO] [stderr] | ^^^^^^^^^ help: consider removing `.into()`: `id` [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: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2173:26 [INFO] [stderr] | [INFO] [stderr] 2173 | ids.push(target.into()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into()`: `target` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2190:51 [INFO] [stderr] | [INFO] [stderr] 2190 | ids.extend(targets.iter().map(|i| Id::from(*i))); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `Id::from()`: `*i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2211:52 [INFO] [stderr] | [INFO] [stderr] 2211 | ids.extend(operands.iter().map(|i| Id::from(*i))); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `Id::from()`: `*i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/insts.rs:2221:53 [INFO] [stderr] | [INFO] [stderr] 2221 | ids.extend(interface.iter().map(|i| Id::from(*i))); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `Id::from()`: `*i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/instruction.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | / match self { [INFO] [stderr] 58 | | &ExecutionMode::Invocations(_) => desc::ExecutionMode::Invocations, [INFO] [stderr] 59 | | &ExecutionMode::SpacingEqual => desc::ExecutionMode::SpacingEqual, [INFO] [stderr] 60 | | &ExecutionMode::SpacingFractionalEven => desc::ExecutionMode::SpacingFractionalEven, [INFO] [stderr] ... | [INFO] [stderr] 88 | | &ExecutionMode::ContractionOff => desc::ExecutionMode::ContractionOff [INFO] [stderr] 89 | | } [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] 57 | match *self { [INFO] [stderr] 58 | ExecutionMode::Invocations(_) => desc::ExecutionMode::Invocations, [INFO] [stderr] 59 | ExecutionMode::SpacingEqual => desc::ExecutionMode::SpacingEqual, [INFO] [stderr] 60 | ExecutionMode::SpacingFractionalEven => desc::ExecutionMode::SpacingFractionalEven, [INFO] [stderr] 61 | ExecutionMode::SpacingFractionalOdd => desc::ExecutionMode::SpacingFractionalOdd, [INFO] [stderr] 62 | ExecutionMode::VertexOrderCw => desc::ExecutionMode::VertexOrderCw, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/instruction.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self { [INFO] [stderr] 143 | | &Decoration::RelaxedPrecision => desc::Decoration::RelaxedPrecision, [INFO] [stderr] 144 | | &Decoration::SpecId(_) => desc::Decoration::SpecId, [INFO] [stderr] 145 | | &Decoration::Block => desc::Decoration::Block, [INFO] [stderr] ... | [INFO] [stderr] 185 | | &Decoration::Alignment(_) => desc::Decoration::Alignment, [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | match *self { [INFO] [stderr] 143 | Decoration::RelaxedPrecision => desc::Decoration::RelaxedPrecision, [INFO] [stderr] 144 | Decoration::SpecId(_) => desc::Decoration::SpecId, [INFO] [stderr] 145 | Decoration::Block => desc::Decoration::Block, [INFO] [stderr] 146 | Decoration::BufferBlock => desc::Decoration::BufferBlock, [INFO] [stderr] 147 | Decoration::RowMajor => desc::Decoration::RowMajor, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `instruction::ImageOperands` [INFO] [stderr] --> src/instruction.rs:205:5 [INFO] [stderr] | [INFO] [stderr] 205 | / pub fn new() -> ImageOperands { [INFO] [stderr] 206 | | ImageOperands { [INFO] [stderr] 207 | | set: desc::ImageOperands::empty(), [INFO] [stderr] 208 | | values: Vec::new() [INFO] [stderr] 209 | | } [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 203 | impl Default for instruction::ImageOperands { [INFO] [stderr] 204 | fn default() -> Self { [INFO] [stderr] 205 | Self::new() [INFO] [stderr] 206 | } [INFO] [stderr] 207 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/instruction.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | / match self { [INFO] [stderr] 58 | | &ExecutionMode::Invocations(_) => desc::ExecutionMode::Invocations, [INFO] [stderr] 59 | | &ExecutionMode::SpacingEqual => desc::ExecutionMode::SpacingEqual, [INFO] [stderr] 60 | | &ExecutionMode::SpacingFractionalEven => desc::ExecutionMode::SpacingFractionalEven, [INFO] [stderr] ... | [INFO] [stderr] 88 | | &ExecutionMode::ContractionOff => desc::ExecutionMode::ContractionOff [INFO] [stderr] 89 | | } [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] 57 | match *self { [INFO] [stderr] 58 | ExecutionMode::Invocations(_) => desc::ExecutionMode::Invocations, [INFO] [stderr] 59 | ExecutionMode::SpacingEqual => desc::ExecutionMode::SpacingEqual, [INFO] [stderr] 60 | ExecutionMode::SpacingFractionalEven => desc::ExecutionMode::SpacingFractionalEven, [INFO] [stderr] 61 | ExecutionMode::SpacingFractionalOdd => desc::ExecutionMode::SpacingFractionalOdd, [INFO] [stderr] 62 | ExecutionMode::VertexOrderCw => desc::ExecutionMode::VertexOrderCw, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/instruction.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self { [INFO] [stderr] 143 | | &Decoration::RelaxedPrecision => desc::Decoration::RelaxedPrecision, [INFO] [stderr] 144 | | &Decoration::SpecId(_) => desc::Decoration::SpecId, [INFO] [stderr] 145 | | &Decoration::Block => desc::Decoration::Block, [INFO] [stderr] ... | [INFO] [stderr] 185 | | &Decoration::Alignment(_) => desc::Decoration::Alignment, [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 142 | match *self { [INFO] [stderr] 143 | Decoration::RelaxedPrecision => desc::Decoration::RelaxedPrecision, [INFO] [stderr] 144 | Decoration::SpecId(_) => desc::Decoration::SpecId, [INFO] [stderr] 145 | Decoration::Block => desc::Decoration::Block, [INFO] [stderr] 146 | Decoration::BufferBlock => desc::Decoration::BufferBlock, [INFO] [stderr] 147 | Decoration::RowMajor => desc::Decoration::RowMajor, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `instruction::ImageOperands` [INFO] [stderr] --> src/instruction.rs:205:5 [INFO] [stderr] | [INFO] [stderr] 205 | / pub fn new() -> ImageOperands { [INFO] [stderr] 206 | | ImageOperands { [INFO] [stderr] 207 | | set: desc::ImageOperands::empty(), [INFO] [stderr] 208 | | values: Vec::new() [INFO] [stderr] 209 | | } [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 203 | impl Default for instruction::ImageOperands { [INFO] [stderr] 204 | fn default() -> Self { [INFO] [stderr] 205 | Self::new() [INFO] [stderr] 206 | } [INFO] [stderr] 207 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/inst_parser.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | / let mut file = ValueId(0); [INFO] [stderr] 28 | | if p.has_words() { [INFO] [stderr] 29 | | file = try!(p.parse::()); [INFO] [stderr] 30 | | [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 27 | let file = if p.has_words() { match $ expr { [INFO] [stderr] 28 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 29 | :: Err ( err ) => { [INFO] [stderr] 30 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 31 | $ crate :: convert :: From :: from ( err ) ) } } } else { ValueId(0) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/inst_parser.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | / let mut file = ValueId(0); [INFO] [stderr] 28 | | if p.has_words() { [INFO] [stderr] 29 | | file = try!(p.parse::()); [INFO] [stderr] 30 | | [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 27 | let file = if p.has_words() { match $ expr { [INFO] [stderr] 28 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 29 | :: Err ( err ) => { [INFO] [stderr] 30 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 31 | $ crate :: convert :: From :: from ( err ) ) } } } else { ValueId(0) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/inst_parser.rs:478:13 [INFO] [stderr] | [INFO] [stderr] 478 | / let mut init = ValueId(0); [INFO] [stderr] 479 | | if p.has_words() { [INFO] [stderr] 480 | | init = try!(p.parse::()); [INFO] [stderr] 481 | | [INFO] [stderr] 482 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 478 | let init = if p.has_words() { match $ expr { [INFO] [stderr] 479 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 480 | :: Err ( err ) => { [INFO] [stderr] 481 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 482 | $ crate :: convert :: From :: from ( err ) ) } } } else { ValueId(0) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> /opt/crater/target/debug/build/spirv-utils-8e070668990df623/out/inst_parser.rs:478:13 [INFO] [stderr] | [INFO] [stderr] 478 | / let mut init = ValueId(0); [INFO] [stderr] 479 | | if p.has_words() { [INFO] [stderr] 480 | | init = try!(p.parse::()); [INFO] [stderr] 481 | | [INFO] [stderr] 482 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 478 | let init = if p.has_words() { match $ expr { [INFO] [stderr] 479 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 480 | :: Err ( err ) => { [INFO] [stderr] 481 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 482 | $ crate :: convert :: From :: from ( err ) ) } } } else { ValueId(0) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse/parser.rs:24:12 [INFO] [stderr] | [INFO] [stderr] 24 | if self.params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.params.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: length comparison to zero [INFO] [stderr] --> src/parse/parser.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | self.params.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: bit mask could be simplified with a call to `trailing_zeros` [INFO] [stderr] --> src/parse/parser.rs:84:20 [INFO] [stderr] | [INFO] [stderr] 84 | if (w & 0xFF) == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `w.trailing_zeros() >= 8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::verbose_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/parser.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | w = w >> 8; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `w >>= 8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse/parser.rs:24:12 [INFO] [stderr] | [INFO] [stderr] 24 | if self.params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.params.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: length comparison to zero [INFO] [stderr] --> src/parse/parser.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | self.params.len() > 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: bit mask could be simplified with a call to `trailing_zeros` [INFO] [stderr] --> src/parse/parser.rs:84:20 [INFO] [stderr] | [INFO] [stderr] 84 | if (w & 0xFF) == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `w.trailing_zeros() >= 8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::verbose_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#verbose_bit_mask [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/parser.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | w = w >> 8; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `w >>= 8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/parse/read.rs:27:37 [INFO] [stderr] | [INFO] [stderr] 27 | let buf : &mut [u8;4] = std::mem::transmute(&mut word); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(&mut word as *mut u32 as *mut [u8; 4])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/parse/read.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | try!(reader.read(buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/parse/read.rs:27:37 [INFO] [stderr] | [INFO] [stderr] 27 | let buf : &mut [u8;4] = std::mem::transmute(&mut word); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(&mut word as *mut u32 as *mut [u8; 4])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/parse/read.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | try!(reader.read(buf)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/parse/read.rs:54:37 [INFO] [stderr] | [INFO] [stderr] 54 | let buf : &mut [u8;4] = std::mem::transmute(&mut word); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(&mut word as *mut u32 as *mut [u8; 4])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/parse/read.rs:54:37 [INFO] [stderr] | [INFO] [stderr] 54 | let buf : &mut [u8;4] = std::mem::transmute(&mut word); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(&mut word as *mut u32 as *mut [u8; 4])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | / pub fn instructions<'a>(&'a self) -> &'a [Instruction] { [INFO] [stderr] 87 | | &self.instructions[..] [INFO] [stderr] 88 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / pub fn use_indices<'a, I: Into>(&'a self, id: I) -> Option<&'a [usize]> { [INFO] [stderr] 111 | | let idx = id.into().0 as usize; [INFO] [stderr] 112 | | if idx == 0 { return None; } [INFO] [stderr] 113 | | [INFO] [stderr] ... | [INFO] [stderr] 116 | | }) [INFO] [stderr] 117 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / pub fn def<'a, I: Into>(&'a self, id: I) -> Option<&'a Instruction> { [INFO] [stderr] 123 | | self.def_index(id).map(|idx| { [INFO] [stderr] 124 | | &self.instructions[idx] [INFO] [stderr] 125 | | }) [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | / pub fn uses<'a, I: Into>(&'a self, id: I) -> Uses<'a> { [INFO] [stderr] 132 | | let indices = self.use_indices(id).unwrap_or(&[]); [INFO] [stderr] 133 | | [INFO] [stderr] 134 | | Uses { [INFO] [stderr] ... | [INFO] [stderr] 137 | | } [INFO] [stderr] 138 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:150:12 [INFO] [stderr] | [INFO] [stderr] 150 | if self.indices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.indices.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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | / pub fn instructions<'a>(&'a self) -> &'a [Instruction] { [INFO] [stderr] 87 | | &self.instructions[..] [INFO] [stderr] 88 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / pub fn use_indices<'a, I: Into>(&'a self, id: I) -> Option<&'a [usize]> { [INFO] [stderr] 111 | | let idx = id.into().0 as usize; [INFO] [stderr] 112 | | if idx == 0 { return None; } [INFO] [stderr] 113 | | [INFO] [stderr] ... | [INFO] [stderr] 116 | | }) [INFO] [stderr] 117 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / pub fn def<'a, I: Into>(&'a self, id: I) -> Option<&'a Instruction> { [INFO] [stderr] 123 | | self.def_index(id).map(|idx| { [INFO] [stderr] 124 | | &self.instructions[idx] [INFO] [stderr] 125 | | }) [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | / pub fn uses<'a, I: Into>(&'a self, id: I) -> Uses<'a> { [INFO] [stderr] 132 | | let indices = self.use_indices(id).unwrap_or(&[]); [INFO] [stderr] 133 | | [INFO] [stderr] 134 | | Uses { [INFO] [stderr] ... | [INFO] [stderr] 137 | | } [INFO] [stderr] 138 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:150:12 [INFO] [stderr] | [INFO] [stderr] 150 | if self.indices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.indices.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `spirv-utils`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: Could not compile `spirv-utils`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "fec74ec82f9bf85d04214ce9650ba3715c8c4aa88734e0eaaa016ad194b29232"` [INFO] running `"docker" "rm" "-f" "fec74ec82f9bf85d04214ce9650ba3715c8c4aa88734e0eaaa016ad194b29232"` [INFO] [stdout] fec74ec82f9bf85d04214ce9650ba3715c8c4aa88734e0eaaa016ad194b29232