[INFO] crate owasm-utils 0.6.0 is already in cache [INFO] extracting crate owasm-utils 0.6.0 into work/ex/clippy-test-run/sources/stable/reg/owasm-utils/0.6.0 [INFO] extracting crate owasm-utils 0.6.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/owasm-utils/0.6.0 [INFO] validating manifest of owasm-utils-0.6.0 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 owasm-utils-0.6.0 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 owasm-utils-0.6.0 [INFO] finished frobbing owasm-utils-0.6.0 [INFO] frobbed toml for owasm-utils-0.6.0 written to work/ex/clippy-test-run/sources/stable/reg/owasm-utils/0.6.0/Cargo.toml [INFO] started frobbing owasm-utils-0.6.0 [INFO] finished frobbing owasm-utils-0.6.0 [INFO] frobbed toml for owasm-utils-0.6.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/owasm-utils/0.6.0/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 owasm-utils-0.6.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/owasm-utils/0.6.0:/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] 0be5f2d3085fe4c886af696fd20b6a0a6e8528afe8aa175383993c4947b4e35c [INFO] running `"docker" "start" "-a" "0be5f2d3085fe4c886af696fd20b6a0a6e8528afe8aa175383993c4947b4e35c"` [INFO] [stderr] Compiling wabt-sys v0.1.4 [INFO] [stderr] Checking parity-wasm v0.31.3 [INFO] [stderr] Checking owasm-utils v0.6.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/rules.rs:288:15 [INFO] [stderr] | [INFO] [stderr] 288 | Set { regular: regular, entries: entries, grow: 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `regular` [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/rules.rs:288:33 [INFO] [stderr] | [INFO] [stderr] 288 | Set { regular: regular, entries: entries, grow: 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `entries` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/gas.rs:232:6 [INFO] [stderr] | [INFO] [stderr] 232 | if rules.grow_cost() > 0 { [INFO] [stderr] | _____________________^ [INFO] [stderr] 233 | | if inject_grow_counter(func_body.code_mut(), total_func) > 0 { [INFO] [stderr] 234 | | need_grow_counter = true; [INFO] [stderr] 235 | | } [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 232 | if rules.grow_cost() > 0 && inject_grow_counter(func_body.code_mut(), total_func) > 0 { [INFO] [stderr] 233 | need_grow_counter = true; [INFO] [stderr] 234 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/rules.rs:292:15 [INFO] [stderr] | [INFO] [stderr] 292 | match self.entries.get(&InstructionType::op(instruction)).map(|x| *x) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.entries.get(&InstructionType::op(instruction)).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/build.rs:62:1 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn build( [INFO] [stderr] 63 | | mut module: elements::Module, [INFO] [stderr] 64 | | source_target: SourceTarget, [INFO] [stderr] 65 | | runtime_type_version: Option<([u8; 4], u32)>, [INFO] [stderr] ... | [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 52 [INFO] [stderr] --> src/optimizer.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn optimize( [INFO] [stderr] 19 | | module: &mut elements::Module, // Module to optimize [INFO] [stderr] 20 | | used_exports: Vec<&str>, // List of only exports that will be usable after optimization [INFO] [stderr] 21 | | ) -> Result<(), Error> { [INFO] [stderr] ... | [INFO] [stderr] 269 | | Ok(()) [INFO] [stderr] 270 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/optimizer.rs:29:6 [INFO] [stderr] | [INFO] [stderr] 29 | if used_exports.iter().find(|e| **e == entry.field()).is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|e| **e == entry.field()).is_some()` with `any(|e| **e == entry.field())` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:97:4 [INFO] [stderr] | [INFO] [stderr] 97 | match imports.entries()[index].external() { [INFO] [stderr] | _____________^ [INFO] [stderr] 98 | | &elements::External::Function(_) => { [INFO] [stderr] 99 | | if stay.contains(&Symbol::Import(old_index)) { [INFO] [stderr] 100 | | index += 1; [INFO] [stderr] ... | [INFO] [stderr] 120 | | } [INFO] [stderr] 121 | | } [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] 97 | match *imports.entries()[index].external() { [INFO] [stderr] 98 | elements::External::Function(_) => { [INFO] [stderr] 99 | if stay.contains(&Symbol::Import(old_index)) { [INFO] [stderr] 100 | index += 1; [INFO] [stderr] 101 | } else { [INFO] [stderr] 102 | remove = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | if eliminated_globals.len() > 0 || eliminated_funcs.len() > 0 || eliminated_types.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_globals.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/optimizer.rs:189:37 [INFO] [stderr] | [INFO] [stderr] 189 | if eliminated_globals.len() > 0 || eliminated_funcs.len() > 0 || eliminated_types.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_funcs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:189:67 [INFO] [stderr] | [INFO] [stderr] 189 | if eliminated_globals.len() > 0 || eliminated_funcs.len() > 0 || eliminated_types.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_types.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:197:4 [INFO] [stderr] | [INFO] [stderr] 197 | match section { [INFO] [stderr] | _____________^ [INFO] [stderr] 198 | | &mut elements::Section::Start(ref mut func_index) if eliminated_funcs.len() > 0 => { [INFO] [stderr] 199 | | let totalle = eliminated_funcs.iter().take_while(|i| (**i as u32) < *func_index).count(); [INFO] [stderr] 200 | | *func_index -= totalle as u32; [INFO] [stderr] ... | [INFO] [stderr] 264 | | _ => { } [INFO] [stderr] 265 | | } [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] 197 | match *section { [INFO] [stderr] 198 | elements::Section::Start(ref mut func_index) if eliminated_funcs.len() > 0 => { [INFO] [stderr] 199 | let totalle = eliminated_funcs.iter().take_while(|i| (**i as u32) < *func_index).count(); [INFO] [stderr] 200 | *func_index -= totalle as u32; [INFO] [stderr] 201 | }, [INFO] [stderr] 202 | elements::Section::Function(ref mut function_section) if eliminated_types.len() > 0 => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:198:58 [INFO] [stderr] | [INFO] [stderr] 198 | &mut elements::Section::Start(ref mut func_index) if eliminated_funcs.len() > 0 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_funcs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:202:67 [INFO] [stderr] | [INFO] [stderr] 202 | &mut elements::Section::Function(ref mut function_section) if eliminated_types.len() > 0 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_types.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:203:10 [INFO] [stderr] | [INFO] [stderr] 203 | for ref mut func_signature in function_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ------------------------------ help: try: `let func_signature = &mut function_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:208:63 [INFO] [stderr] | [INFO] [stderr] 208 | &mut elements::Section::Import(ref mut import_section) if eliminated_types.len() > 0 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_types.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:209:10 [INFO] [stderr] | [INFO] [stderr] 209 | for ref mut import_entry in import_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ---------------------------- help: try: `let import_entry = &mut import_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:210:7 [INFO] [stderr] | [INFO] [stderr] 210 | if let &mut elements::External::Function(ref mut type_ref) = import_entry.external_mut() { [INFO] [stderr] | _________________________^ [INFO] [stderr] 211 | | let totalle = eliminated_types.iter().take_while(|i| (**i as u32) < *type_ref).count(); [INFO] [stderr] 212 | | *type_ref -= totalle as u32; [INFO] [stderr] 213 | | } [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] 210 | if let elements::External::Function(ref mut type_ref) = *import_entry.external_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:216:59 [INFO] [stderr] | [INFO] [stderr] 216 | &mut elements::Section::Code(ref mut code_section) if eliminated_globals.len() > 0 || eliminated_funcs.len() > 0 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_globals.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:216:91 [INFO] [stderr] | [INFO] [stderr] 216 | &mut elements::Section::Code(ref mut code_section) if eliminated_globals.len() > 0 || eliminated_funcs.len() > 0 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_funcs.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:217:10 [INFO] [stderr] | [INFO] [stderr] 217 | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ------------------------- help: try: `let func_body = &mut code_section.bodies_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:218:10 [INFO] [stderr] | [INFO] [stderr] 218 | if eliminated_funcs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_funcs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:221:10 [INFO] [stderr] | [INFO] [stderr] 221 | if eliminated_globals.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_globals.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/optimizer.rs:224:10 [INFO] [stderr] | [INFO] [stderr] 224 | if eliminated_types.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!eliminated_types.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:230:10 [INFO] [stderr] | [INFO] [stderr] 230 | for ref mut export in export_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ---------------------------- help: try: `let export = &mut export_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:231:7 [INFO] [stderr] | [INFO] [stderr] 231 | match export.internal_mut() { [INFO] [stderr] | _________________________^ [INFO] [stderr] 232 | | &mut elements::Internal::Function(ref mut func_index) => { [INFO] [stderr] 233 | | let totalle = eliminated_funcs.iter().take_while(|i| (**i as u32) < *func_index).count(); [INFO] [stderr] 234 | | *func_index -= totalle as u32; [INFO] [stderr] ... | [INFO] [stderr] 240 | | _ => {} [INFO] [stderr] 241 | | } [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] 231 | match *export.internal_mut() { [INFO] [stderr] 232 | elements::Internal::Function(ref mut func_index) => { [INFO] [stderr] 233 | let totalle = eliminated_funcs.iter().take_while(|i| (**i as u32) < *func_index).count(); [INFO] [stderr] 234 | *func_index -= totalle as u32; [INFO] [stderr] 235 | }, [INFO] [stderr] 236 | elements::Internal::Global(ref mut global_index) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:245:10 [INFO] [stderr] | [INFO] [stderr] 245 | for ref mut global_entry in global_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ---------------------------- help: try: `let global_entry = &mut global_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:250:10 [INFO] [stderr] | [INFO] [stderr] 250 | for ref mut segment in data_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ -------------------------- help: try: `let segment = &mut data_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/optimizer.rs:255:10 [INFO] [stderr] | [INFO] [stderr] 255 | for ref mut segment in elements_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ------------------------------ help: try: `let segment = &mut elements_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:276:3 [INFO] [stderr] | [INFO] [stderr] 276 | if let &mut Call(ref mut call_index) = instruction { [INFO] [stderr] | _________^ [INFO] [stderr] 277 | | let totalle = eliminated_indices.iter().take_while(|i| (**i as u32) < *call_index).count(); [INFO] [stderr] 278 | | trace!("rewired call {} -> call {}", *call_index, *call_index - totalle as u32); [INFO] [stderr] 279 | | *call_index -= totalle as u32; [INFO] [stderr] 280 | | } [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] 276 | if let Call(ref mut call_index) = *instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:288:3 [INFO] [stderr] | [INFO] [stderr] 288 | match instruction { [INFO] [stderr] | _________^ [INFO] [stderr] 289 | | &mut GetGlobal(ref mut index) | &mut SetGlobal(ref mut index) => { [INFO] [stderr] 290 | | let totalle = eliminated_indices.iter().take_while(|i| (**i as u32) < *index).count(); [INFO] [stderr] 291 | | trace!("rewired global {} -> global {}", *index, *index - totalle as u32); [INFO] [stderr] ... | [INFO] [stderr] 294 | | _ => { }, [INFO] [stderr] 295 | | } [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] 288 | match *instruction { [INFO] [stderr] 289 | GetGlobal(ref mut index) | SetGlobal(ref mut index) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:303:3 [INFO] [stderr] | [INFO] [stderr] 303 | if let &mut CallIndirect(ref mut call_index, _) = instruction { [INFO] [stderr] | _________^ [INFO] [stderr] 304 | | let totalle = eliminated_indices.iter().take_while(|i| (**i as u32) < *call_index).count(); [INFO] [stderr] 305 | | trace!("rewired call_indrect {} -> call_indirect {}", *call_index, *call_index - totalle as u32); [INFO] [stderr] 306 | | *call_index -= totalle as u32; [INFO] [stderr] 307 | | } [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] 303 | if let CallIndirect(ref mut call_index, _) = *instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [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/optimizer.rs:311:1 [INFO] [stderr] | [INFO] [stderr] 311 | / pub fn import_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::ImportSection> { [INFO] [stderr] 312 | | for section in module.sections_mut() { [INFO] [stderr] 313 | | if let &mut elements::Section::Import(ref mut sect) = section { [INFO] [stderr] 314 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 317 | | None [INFO] [stderr] 318 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:313:3 [INFO] [stderr] | [INFO] [stderr] 313 | if let &mut elements::Section::Import(ref mut sect) = section { [INFO] [stderr] | _________^ [INFO] [stderr] 314 | | return Some(sect); [INFO] [stderr] 315 | | } [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] 313 | if let elements::Section::Import(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [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/optimizer.rs:320:1 [INFO] [stderr] | [INFO] [stderr] 320 | / pub fn global_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::GlobalSection> { [INFO] [stderr] 321 | | for section in module.sections_mut() { [INFO] [stderr] 322 | | if let &mut elements::Section::Global(ref mut sect) = section { [INFO] [stderr] 323 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 326 | | None [INFO] [stderr] 327 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:322:3 [INFO] [stderr] | [INFO] [stderr] 322 | if let &mut elements::Section::Global(ref mut sect) = section { [INFO] [stderr] | _________^ [INFO] [stderr] 323 | | return Some(sect); [INFO] [stderr] 324 | | } [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] 322 | if let elements::Section::Global(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [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/optimizer.rs:329:1 [INFO] [stderr] | [INFO] [stderr] 329 | / pub fn function_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::FunctionSection> { [INFO] [stderr] 330 | | for section in module.sections_mut() { [INFO] [stderr] 331 | | if let &mut elements::Section::Function(ref mut sect) = section { [INFO] [stderr] 332 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 335 | | None [INFO] [stderr] 336 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:331:3 [INFO] [stderr] | [INFO] [stderr] 331 | if let &mut elements::Section::Function(ref mut sect) = section { [INFO] [stderr] | _________^ [INFO] [stderr] 332 | | return Some(sect); [INFO] [stderr] 333 | | } [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] 331 | if let elements::Section::Function(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [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/optimizer.rs:338:1 [INFO] [stderr] | [INFO] [stderr] 338 | / pub fn code_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::CodeSection> { [INFO] [stderr] 339 | | for section in module.sections_mut() { [INFO] [stderr] 340 | | if let &mut elements::Section::Code(ref mut sect) = section { [INFO] [stderr] 341 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 344 | | None [INFO] [stderr] 345 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:340:3 [INFO] [stderr] | [INFO] [stderr] 340 | if let &mut elements::Section::Code(ref mut sect) = section { [INFO] [stderr] | _________^ [INFO] [stderr] 341 | | return Some(sect); [INFO] [stderr] 342 | | } [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] 340 | if let elements::Section::Code(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [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/optimizer.rs:347:1 [INFO] [stderr] | [INFO] [stderr] 347 | / pub fn export_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::ExportSection> { [INFO] [stderr] 348 | | for section in module.sections_mut() { [INFO] [stderr] 349 | | if let &mut elements::Section::Export(ref mut sect) = section { [INFO] [stderr] 350 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 353 | | None [INFO] [stderr] 354 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:349:3 [INFO] [stderr] | [INFO] [stderr] 349 | if let &mut elements::Section::Export(ref mut sect) = section { [INFO] [stderr] | _________^ [INFO] [stderr] 350 | | return Some(sect); [INFO] [stderr] 351 | | } [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] 349 | if let elements::Section::Export(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [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/optimizer.rs:356:1 [INFO] [stderr] | [INFO] [stderr] 356 | / pub fn type_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::TypeSection> { [INFO] [stderr] 357 | | for section in module.sections_mut() { [INFO] [stderr] 358 | | if let &mut elements::Section::Type(ref mut sect) = section { [INFO] [stderr] 359 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 362 | | None [INFO] [stderr] 363 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/optimizer.rs:358:3 [INFO] [stderr] | [INFO] [stderr] 358 | if let &mut elements::Section::Type(ref mut sect) = section { [INFO] [stderr] | _________^ [INFO] [stderr] 359 | | return Some(sect); [INFO] [stderr] 360 | | } [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] 358 | if let elements::Section::Type(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gas.rs:9:3 [INFO] [stderr] | [INFO] [stderr] 9 | if let &mut Call(ref mut call_index) = instruction { [INFO] [stderr] | _________^ [INFO] [stderr] 10 | | if *call_index >= inserted_index { *call_index += 1} [INFO] [stderr] 11 | | } [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] 9 | if let Call(ref mut call_index) = *instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gas.rs:224:3 [INFO] [stderr] | [INFO] [stderr] 224 | match section { [INFO] [stderr] | _________^ [INFO] [stderr] 225 | | &mut elements::Section::Code(ref mut code_section) => { [INFO] [stderr] 226 | | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] 227 | | update_call_index(func_body.code_mut(), gas_func); [INFO] [stderr] ... | [INFO] [stderr] 254 | | _ => { } [INFO] [stderr] 255 | | } [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] 224 | match *section { [INFO] [stderr] 225 | elements::Section::Code(ref mut code_section) => { [INFO] [stderr] 226 | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] 227 | update_call_index(func_body.code_mut(), gas_func); [INFO] [stderr] 228 | if let Err(_) = inject_counter(func_body.code_mut(), rules, gas_func) { [INFO] [stderr] 229 | error = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gas.rs:226:9 [INFO] [stderr] | [INFO] [stderr] 226 | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ------------------------- help: try: `let func_body = &mut code_section.bodies_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/gas.rs:228:13 [INFO] [stderr] | [INFO] [stderr] 228 | if let Err(_) = inject_counter(func_body.code_mut(), rules, gas_func) { [INFO] [stderr] | _____________________- ^^^^^^ [INFO] [stderr] 229 | | error = true; [INFO] [stderr] 230 | | break; [INFO] [stderr] 231 | | } [INFO] [stderr] | |_____________________- help: try this: `if inject_counter(func_body.code_mut(), rules, gas_func).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gas.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | for ref mut export in export_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ---------------------------- help: try: `let export = &mut export_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gas.rs:241:6 [INFO] [stderr] | [INFO] [stderr] 241 | if let &mut elements::Internal::Function(ref mut func_index) = export.internal_mut() { [INFO] [stderr] | _____________________^ [INFO] [stderr] 242 | | if *func_index >= gas_func { *func_index += 1} [INFO] [stderr] 243 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 241 | if let elements::Internal::Function(ref mut func_index) = *export.internal_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gas.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | for ref mut segment in elements_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ------------------------------ help: try: `let segment = &mut elements_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:22:4 [INFO] [stderr] | [INFO] [stderr] 22 | if let &elements::External::Function(_) = item.external() { [INFO] [stderr] | _____________^ [INFO] [stderr] 23 | | if functions == index { [INFO] [stderr] 24 | | return Symbol::Import(item_index as usize); [INFO] [stderr] 25 | | } [INFO] [stderr] 26 | | functions += 1; [INFO] [stderr] 27 | | } [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] 22 | if let elements::External::Function(_) = *item.external() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:38:4 [INFO] [stderr] | [INFO] [stderr] 38 | if let &elements::External::Global(_) = item.external() { [INFO] [stderr] | _____________^ [INFO] [stderr] 39 | | if globals == index { [INFO] [stderr] 40 | | return Symbol::Import(item_index as usize); [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | globals += 1; [INFO] [stderr] 43 | | } [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] 38 | if let elements::External::Global(_) = *item.external() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:54:3 [INFO] [stderr] | [INFO] [stderr] 54 | match instruction { [INFO] [stderr] | _________^ [INFO] [stderr] 55 | | &Call(idx) => { [INFO] [stderr] 56 | | dest.push(resolve_function(module, idx)); [INFO] [stderr] 57 | | }, [INFO] [stderr] ... | [INFO] [stderr] 64 | | _ => { }, [INFO] [stderr] 65 | | } [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] 54 | match *instruction { [INFO] [stderr] 55 | Call(idx) => { [INFO] [stderr] 56 | dest.push(resolve_function(module, idx)); [INFO] [stderr] 57 | }, [INFO] [stderr] 58 | CallIndirect(idx, _) => { [INFO] [stderr] 59 | dest.push(Symbol::Type(idx as usize)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | match entry.internal() { [INFO] [stderr] | _________________^ [INFO] [stderr] 87 | | &elements::Internal::Function(func_idx) => { [INFO] [stderr] 88 | | let symbol = resolve_function(module, func_idx); [INFO] [stderr] 89 | | if !stop.contains(&symbol) { [INFO] [stderr] ... | [INFO] [stderr] 101 | | _ => {} [INFO] [stderr] 102 | | } [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] 86 | match *entry.internal() { [INFO] [stderr] 87 | elements::Internal::Function(func_idx) => { [INFO] [stderr] 88 | let symbol = resolve_function(module, func_idx); [INFO] [stderr] 89 | if !stop.contains(&symbol) { [INFO] [stderr] 90 | fringe.push(symbol); [INFO] [stderr] 91 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | if let &elements::External::Function(type_idx) = entry.external() { [INFO] [stderr] | _________________^ [INFO] [stderr] 107 | | let type_symbol = Symbol::Type(type_idx as usize); [INFO] [stderr] 108 | | if !stop.contains(&type_symbol) { [INFO] [stderr] 109 | | fringe.push(type_symbol); [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | set.insert(type_symbol); [INFO] [stderr] 112 | | } [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] 106 | if let elements::External::Function(type_idx) = *entry.external() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ext.rs:14:3 [INFO] [stderr] | [INFO] [stderr] 14 | if let &mut Call(ref mut call_index) = instruction { [INFO] [stderr] | _________^ [INFO] [stderr] 15 | | if let Some(pos) = inserts.iter().position(|x| x.1 == *call_index) { [INFO] [stderr] 16 | | *call_index = (original_imports + pos) as u32; [INFO] [stderr] 17 | | } else if *call_index as usize > original_imports { [INFO] [stderr] 18 | | *call_index += inserts.len() as u32; [INFO] [stderr] 19 | | } [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 14 | if let Call(ref mut call_index) = *instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [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/ext.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn memory_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut elements::MemorySection> { [INFO] [stderr] 25 | | for section in module.sections_mut() { [INFO] [stderr] 26 | | if let &mut elements::Section::Memory(ref mut sect) = section { [INFO] [stderr] 27 | | return Some(sect); [INFO] [stderr] ... | [INFO] [stderr] 30 | | None [INFO] [stderr] 31 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ext.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | if let &mut elements::Section::Memory(ref mut sect) = section { [INFO] [stderr] | ________^ [INFO] [stderr] 27 | | return Some(sect); [INFO] [stderr] 28 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 26 | if let elements::Section::Memory(ref mut sect) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ext.rs:64:2 [INFO] [stderr] | [INFO] [stderr] 64 | import_section(&mut module).map(|is| { [INFO] [stderr] | _____^ [INFO] [stderr] | |_____| [INFO] [stderr] | || [INFO] [stderr] 65 | || for entry in is.entries_mut() { [INFO] [stderr] 66 | || if let elements::External::Function(_) = *entry.external() { [INFO] [stderr] 67 | || f(entry.field_mut()) [INFO] [stderr] 68 | || } [INFO] [stderr] 69 | || } [INFO] [stderr] 70 | || }); [INFO] [stderr] | ||______^- help: try this: `if let Some(is) = import_section(&mut module) { ... }` [INFO] [stderr] | |_______| [INFO] [stderr] | [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/ext.rs:72:2 [INFO] [stderr] | [INFO] [stderr] 72 | export_section(&mut module).map(|es| { [INFO] [stderr] | _____^ [INFO] [stderr] | |_____| [INFO] [stderr] | || [INFO] [stderr] 73 | || for entry in es.entries_mut() { [INFO] [stderr] 74 | || if let elements::Internal::Function(_) = *entry.internal() { [INFO] [stderr] 75 | || f(entry.field_mut()) [INFO] [stderr] 76 | || } [INFO] [stderr] 77 | || } [INFO] [stderr] 78 | || }); [INFO] [stderr] | ||______^- help: try this: `if let Some(es) = export_section(&mut module) { ... }` [INFO] [stderr] | |_______| [INFO] [stderr] | [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/ext.rs:98:3 [INFO] [stderr] | [INFO] [stderr] 98 | match section { [INFO] [stderr] | _________^ [INFO] [stderr] 99 | | &mut elements::Section::Data(ref mut data_section) => { [INFO] [stderr] 100 | | for ref mut data_segment in data_section.entries_mut() { [INFO] [stderr] 101 | | if data_segment.offset().code() == &[elements::Instruction::I32Const(4), elements::Instruction::End] { [INFO] [stderr] ... | [INFO] [stderr] 110 | | _ => continue [INFO] [stderr] 111 | | } [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] 98 | match *section { [INFO] [stderr] 99 | elements::Section::Data(ref mut data_section) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ext.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | for ref mut data_segment in data_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ -------------------------- help: try: `let data_segment = &mut data_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ext.rs:101:9 [INFO] [stderr] | [INFO] [stderr] 101 | if data_segment.offset().code() == &[elements::Instruction::I32Const(4), elements::Instruction::End] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----------------------------------------------------------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[elements::Instruction::I32Const(4), elements::Instruction::End]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ext.rs:125:15 [INFO] [stderr] | [INFO] [stderr] 125 | .filter(|e| if let &elements::External::Function(_) = e.external() { true } else { false }) [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] 125 | .filter(|e| if let elements::External::Function(_) = *e.external() { true } else { false }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ext.rs:139:4 [INFO] [stderr] | [INFO] [stderr] 139 | if let &elements::Internal::Function(func_idx) = export.1.internal() { [INFO] [stderr] | _____________^ [INFO] [stderr] 140 | | let type_ref = module [INFO] [stderr] 141 | | .function_section().expect("Functions section to exist") [INFO] [stderr] 142 | | .entries()[func_idx as usize - import_funcs_total] [INFO] [stderr] ... | [INFO] [stderr] 147 | | None [INFO] [stderr] 148 | | } [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] 139 | if let elements::Internal::Function(func_idx) = *export.1.internal() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ext.rs:171:3 [INFO] [stderr] | [INFO] [stderr] 171 | match section { [INFO] [stderr] | _________^ [INFO] [stderr] 172 | | &mut elements::Section::Code(ref mut code_section) => { [INFO] [stderr] 173 | | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] 174 | | update_call_index(func_body.code_mut(), import_funcs_total, &replaces); [INFO] [stderr] ... | [INFO] [stderr] 192 | | _ => { } [INFO] [stderr] 193 | | } [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] 171 | match *section { [INFO] [stderr] 172 | elements::Section::Code(ref mut code_section) => { [INFO] [stderr] 173 | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] 174 | update_call_index(func_body.code_mut(), import_funcs_total, &replaces); [INFO] [stderr] 175 | } [INFO] [stderr] 176 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ext.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ------------------------- help: try: `let func_body = &mut code_section.bodies_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ext.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | for ref mut export in export_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ---------------------------- help: try: `let export = &mut export_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ext.rs:179:6 [INFO] [stderr] | [INFO] [stderr] 179 | if let &mut elements::Internal::Function(ref mut func_index) = export.internal_mut() { [INFO] [stderr] | _____________________^ [INFO] [stderr] 180 | | if *func_index >= import_funcs_total as u32 { *func_index += replaces.len() as u32; } [INFO] [stderr] 181 | | } [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] 179 | if let elements::Internal::Function(ref mut func_index) = *export.internal_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ext.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | for ref mut segment in elements_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ------------------------------ help: try: `let segment = &mut elements_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pack.rs:58:37 [INFO] [stderr] | [INFO] [stderr] 58 | let function_index: usize = match found_entry.internal() { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 59 | | &Internal::Function(index) => index as usize, [INFO] [stderr] 60 | | _ => { return Err(Error::InvalidCreateMember(target.create_symbol)) }, [INFO] [stderr] 61 | | }; [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] 58 | let function_index: usize = match *found_entry.internal() { [INFO] [stderr] 59 | Internal::Function(index) => index as usize, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/pack.rs:117:29 [INFO] [stderr] | [INFO] [stderr] 117 | for ref mut func_body in code_section.bodies_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ------------------------- help: try: `let func_body = &mut code_section.bodies_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/pack.rs:122:29 [INFO] [stderr] | [INFO] [stderr] 122 | for ref mut export in export_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^ ---------------------------- help: try: `let export = &mut export_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pack.rs:123:29 [INFO] [stderr] | [INFO] [stderr] 123 | / if let &mut elements::Internal::Function(ref mut func_index) = export.internal_mut() { [INFO] [stderr] 124 | | if *func_index >= ret_func { *func_index += 1} [INFO] [stderr] 125 | | } [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] 123 | if let elements::Internal::Function(ref mut func_index) = *export.internal_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/pack.rs:129:29 [INFO] [stderr] | [INFO] [stderr] 129 | for ref mut segment in elements_section.entries_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ------------------------------ help: try: `let segment = &mut elements_section.entries_mut();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pack.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | / if let &mut Section::Data(ref mut data_section) = section { [INFO] [stderr] 164 | | let (index, offset) = if let Some(ref entry) = data_section.entries().iter().last() { [INFO] [stderr] 165 | | if let Instruction::I32Const(offst) = entry.offset().code()[0] { [INFO] [stderr] 166 | | let len = entry.value().len() as i32; [INFO] [stderr] ... | [INFO] [stderr] 181 | | code_data_address = offset; [INFO] [stderr] 182 | | } [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] 163 | if let Section::Data(ref mut data_section) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pack.rs:200:9 [INFO] [stderr] | [INFO] [stderr] 200 | / if let &mut Section::Export(ref mut export_section) = section { [INFO] [stderr] 201 | | for entry in export_section.entries_mut().iter_mut() { [INFO] [stderr] 202 | | if target.create_symbol == entry.field() { [INFO] [stderr] 203 | | // change `create_symbol` export name into default `call_symbol`. [INFO] [stderr] ... | [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 200 | if let Section::Export(ref mut export_section) = *section { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/stack_height/thunk.rs:114:24 [INFO] [stderr] | [INFO] [stderr] 114 | .with_return_type(thunk.signature.return_type().clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `thunk.signature.return_type()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/stack_height/mod.rs:335:14 [INFO] [stderr] | [INFO] [stderr] 335 | .splice(cursor..(cursor + 1), new_seq.iter().cloned()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `cursor..=cursor` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: failed to run custom build command for `wabt-sys v0.1.4` [INFO] [stderr] process didn't exit successfully: `/opt/crater/target/debug/build/wabt-sys-ffa4a0590913cd52/build-script-build` (exit code: 101) [INFO] [stderr] --- stdout [INFO] [stderr] running: "cmake" "/opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/wabt-sys-0.1.4/wabt" "-DBUILD_TESTS=OFF" "-DCMAKE_INSTALL_PREFIX=/opt/crater/target/debug/build/wabt-sys-f070a5cc7e7906ef/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Debug" [INFO] [stderr] -- The C compiler identification is GNU 6.3.0 [INFO] [stderr] -- The CXX compiler identification is GNU 6.3.0 [INFO] [stderr] -- Check for working C compiler: /usr/bin/cc [INFO] [stderr] -- Check for working C compiler: /usr/bin/cc -- works [INFO] [stderr] -- Detecting C compiler ABI info [INFO] [stderr] -- Detecting C compiler ABI info - done [INFO] [stderr] -- Detecting C compile features [INFO] [stderr] -- Detecting C compile features - done [INFO] [stderr] -- Check for working CXX compiler: /usr/bin/c++ [INFO] [stderr] -- Check for working CXX compiler: /usr/bin/c++ -- works [INFO] [stderr] -- Detecting CXX compiler ABI info [INFO] [stderr] -- Detecting CXX compiler ABI info - done [INFO] [stderr] -- Detecting CXX compile features [INFO] [stderr] -- Detecting CXX compile features - done [INFO] [stderr] -- Looking for alloca.h [INFO] [stderr] -- Looking for alloca.h - found [INFO] [stderr] -- Looking for unistd.h [INFO] [stderr] -- Looking for unistd.h - found [INFO] [stderr] -- Looking for snprintf [INFO] [stderr] -- Looking for snprintf - found [INFO] [stderr] -- Looking for sysconf [INFO] [stderr] -- Looking for sysconf - found [INFO] [stderr] -- Looking for strcasecmp [INFO] [stderr] -- Looking for strcasecmp - found [INFO] [stderr] -- Looking for sys/types.h [INFO] [stderr] -- Looking for sys/types.h - found [INFO] [stderr] -- Looking for stdint.h [INFO] [stderr] -- Looking for stdint.h - found [INFO] [stderr] -- Looking for stddef.h [INFO] [stderr] -- Looking for stddef.h - found [INFO] [stderr] -- Check size of ssize_t [INFO] [stderr] -- Check size of ssize_t - done [INFO] [stderr] -- Check size of size_t [INFO] [stderr] -- Check size of size_t - done [INFO] [stderr] -- Using prebuilt re2c lexer [INFO] [stderr] -- Looking for pthread.h [INFO] [stderr] -- Looking for pthread.h - found [INFO] [stderr] -- Looking for pthread_create [INFO] [stderr] -- Looking for pthread_create - not found [INFO] [stderr] -- Looking for pthread_create in pthreads [INFO] [stderr] -- Looking for pthread_create in pthreads - not found [INFO] [stderr] -- Looking for pthread_create in pthread [INFO] [stderr] -- Looking for pthread_create in pthread - found [INFO] [stderr] -- Found Threads: TRUE [INFO] [stderr] -- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.13", minimum required is "2.7") [INFO] [stderr] -- Configuring done [INFO] [stderr] -- Generating done [INFO] [stderr] -- Build files have been written to: /opt/crater/target/debug/build/wabt-sys-f070a5cc7e7906ef/out/build [INFO] [stderr] running: "cmake" "--build" "." "--target" "install" "--config" "Debug" "--" [INFO] [stderr] Scanning dependencies of target libwabt [INFO] [stderr] [ 1%] Building CXX object CMakeFiles/libwabt.dir/src/error-handler.cc.o [INFO] [stderr] [ 3%] Building CXX object CMakeFiles/libwabt.dir/src/token.cc.o [INFO] [stderr] [ 4%] Building CXX object CMakeFiles/libwabt.dir/src/opcode.cc.o [INFO] [stderr] [ 6%] Building CXX object CMakeFiles/libwabt.dir/src/string-view.cc.o [INFO] [stderr] [ 7%] Building CXX object CMakeFiles/libwabt.dir/src/filenames.cc.o [INFO] [stderr] [ 9%] Building CXX object CMakeFiles/libwabt.dir/src/ir.cc.o [INFO] [stderr] [ 10%] Building CXX object CMakeFiles/libwabt.dir/src/expr-visitor.cc.o [INFO] [stderr] [ 12%] Building CXX object CMakeFiles/libwabt.dir/src/hash-util.cc.o [INFO] [stderr] [ 13%] Building CXX object CMakeFiles/libwabt.dir/src/lexer-source.cc.o [INFO] [stderr] [ 15%] Building CXX object CMakeFiles/libwabt.dir/src/lexer-source-line-finder.cc.o [INFO] [stderr] [ 16%] Building CXX object CMakeFiles/libwabt.dir/src/wast-parser-lexer-shared.cc.o [INFO] [stderr] [ 18%] Building CXX object CMakeFiles/libwabt.dir/src/prebuilt/wast-lexer-gen.cc.o [INFO] [stderr] [ 20%] Building CXX object CMakeFiles/libwabt.dir/src/wast-parser.cc.o [INFO] [stderr] [ 21%] Building CXX object CMakeFiles/libwabt.dir/src/type-checker.cc.o [INFO] [stderr] [ 23%] Building CXX object CMakeFiles/libwabt.dir/src/validator.cc.o [INFO] [stderr] [ 24%] Building CXX object CMakeFiles/libwabt.dir/src/binary-reader.cc.o [INFO] [stderr] [ 26%] Building CXX object CMakeFiles/libwabt.dir/src/binary-reader-logging.cc.o [INFO] [stderr] [ 27%] Building CXX object CMakeFiles/libwabt.dir/src/binary-writer.cc.o [INFO] [stderr] [ 29%] Building CXX object CMakeFiles/libwabt.dir/src/binary-writer-spec.cc.o [INFO] [stderr] [ 30%] Building CXX object CMakeFiles/libwabt.dir/src/binary-reader-ir.cc.o [INFO] [stderr] [ 32%] Building CXX object CMakeFiles/libwabt.dir/src/binding-hash.cc.o [INFO] [stderr] [ 33%] Building CXX object CMakeFiles/libwabt.dir/src/wat-writer.cc.o [INFO] [stderr] [ 35%] Building CXX object CMakeFiles/libwabt.dir/src/interp.cc.o [INFO] [stderr] [ 36%] Building CXX object CMakeFiles/libwabt.dir/src/binary-reader-interp.cc.o [INFO] [stderr] [ 38%] Building CXX object CMakeFiles/libwabt.dir/src/apply-names.cc.o [INFO] [stderr] [ 40%] Building CXX object CMakeFiles/libwabt.dir/src/generate-names.cc.o [INFO] [stderr] [ 41%] Building CXX object CMakeFiles/libwabt.dir/src/resolve-names.cc.o [INFO] [stderr] [ 43%] Building CXX object CMakeFiles/libwabt.dir/src/binary.cc.o [INFO] [stderr] [ 44%] Building CXX object CMakeFiles/libwabt.dir/src/color.cc.o [INFO] [stderr] [ 46%] Building CXX object CMakeFiles/libwabt.dir/src/common.cc.o [INFO] [stderr] [ 47%] Building CXX object CMakeFiles/libwabt.dir/src/config.cc.o [INFO] [stderr] [ 49%] Building CXX object CMakeFiles/libwabt.dir/src/feature.cc.o [INFO] [stderr] [ 50%] Building CXX object CMakeFiles/libwabt.dir/src/leb128.cc.o [INFO] [stderr] [ 52%] Building CXX object CMakeFiles/libwabt.dir/src/literal.cc.o [INFO] [stderr] [ 53%] Building CXX object CMakeFiles/libwabt.dir/src/option-parser.cc.o [INFO] [stderr] [ 55%] Building CXX object CMakeFiles/libwabt.dir/src/tracing.cc.o [INFO] [stderr] [ 56%] Building CXX object CMakeFiles/libwabt.dir/src/stream.cc.o [INFO] [stderr] [ 58%] Building CXX object CMakeFiles/libwabt.dir/src/utf8.cc.o [INFO] [stderr] [ 60%] Linking CXX static library libwabt.a [INFO] [stderr] [ 60%] Built target libwabt [INFO] [stderr] Scanning dependencies of target wasm2wat [INFO] [stderr] Scanning dependencies of target wasm2c [INFO] [stderr] Scanning dependencies of target wasm-validate [INFO] [stderr] Scanning dependencies of target wat2wasm [INFO] [stderr] Scanning dependencies of target wat-desugar [INFO] [stderr] Scanning dependencies of target wast2json [INFO] [stderr] Scanning dependencies of target wasm-link [INFO] [stderr] Scanning dependencies of target wasm-interp [INFO] [stderr] [ 61%] Building CXX object CMakeFiles/wasm2wat.dir/src/tools/wasm2wat.cc.o [INFO] [stderr] [ 63%] Building CXX object CMakeFiles/wasm-validate.dir/src/tools/wasm-validate.cc.o [INFO] [stderr] [ 64%] Building CXX object CMakeFiles/wasm-link.dir/src/tools/wasm-link.cc.o [INFO] [stderr] [ 66%] Building CXX object CMakeFiles/wat2wasm.dir/src/tools/wat2wasm.cc.o [INFO] [stderr] [ 67%] Building CXX object CMakeFiles/wasm2c.dir/src/tools/wasm2c.cc.o [INFO] [stderr] [ 69%] Building CXX object CMakeFiles/wat-desugar.dir/src/tools/wat-desugar.cc.o [INFO] [stderr] [ 70%] Building CXX object CMakeFiles/wast2json.dir/src/tools/wast2json.cc.o [INFO] [stderr] [ 72%] Building CXX object CMakeFiles/wasm-interp.dir/src/tools/wasm-interp.cc.o [INFO] [stderr] [ 73%] Linking CXX executable wasm2wat [INFO] [stderr] [ 75%] Building CXX object CMakeFiles/wasm-link.dir/src/binary-reader-linker.cc.o [INFO] [stderr] [ 76%] Building CXX object CMakeFiles/wasm2c.dir/src/c-writer.cc.o [INFO] [stderr] [ 78%] Linking CXX executable wat-desugar [INFO] [stderr] [ 80%] Linking CXX executable wat2wasm [INFO] [stderr] [ 81%] Linking CXX executable wasm-validate [INFO] [stderr] [ 83%] Linking CXX executable wast2json [INFO] [stderr] [ 84%] Linking CXX executable wasm-interp [INFO] [stderr] [ 84%] Built target wasm2wat [INFO] [stderr] Scanning dependencies of target wasm-objdump [INFO] [stderr] [ 86%] Building CXX object CMakeFiles/wasm-objdump.dir/src/tools/wasm-objdump.cc.o [INFO] [stderr] [ 86%] Built target wasm-interp [INFO] [stderr] [ 86%] Built target wasm-validate [INFO] [stderr] Scanning dependencies of target wasm-opcodecnt [INFO] [stderr] [ 87%] Building CXX object CMakeFiles/wasm-opcodecnt.dir/src/tools/wasm-opcodecnt.cc.o [INFO] [stderr] Scanning dependencies of target spectest-interp [INFO] [stderr] [ 87%] Built target wast2json [INFO] [stderr] Scanning dependencies of target wasm2wat-copy-to-bin [INFO] [stderr] [ 89%] Building CXX object CMakeFiles/spectest-interp.dir/src/tools/spectest-interp.cc.o [INFO] [stderr] [ 90%] Linking CXX executable wasm-link [INFO] [stderr] CMakeFiles/wasm2wat-copy-to-bin.dir/build.make:57: recipe for target 'CMakeFiles/wasm2wat-copy-to-bin' failed [INFO] [stderr] CMakeFiles/Makefile2:183: recipe for target 'CMakeFiles/wasm2wat-copy-to-bin.dir/all' failed [INFO] [stderr] [ 90%] Built target wat2wasm [INFO] [stderr] [ 92%] Building CXX object CMakeFiles/wasm-objdump.dir/src/binary-reader-objdump.cc.o [INFO] [stderr] [ 93%] Building CXX object CMakeFiles/wasm-opcodecnt.dir/src/binary-reader-opcnt.cc.o [INFO] [stderr] [ 93%] Built target wat-desugar [INFO] [stderr] [ 93%] Built target wasm-link [INFO] [stderr] [ 95%] Linking CXX executable wasm-objdump [INFO] [stderr] [ 95%] Built target wasm-objdump [INFO] [stderr] [ 96%] Linking CXX executable wasm2c [INFO] [stderr] [ 98%] Linking CXX executable wasm-opcodecnt [INFO] [stderr] [ 98%] Built target wasm2c [INFO] [stderr] [ 98%] Built target wasm-opcodecnt [INFO] [stderr] [100%] Linking CXX executable spectest-interp [INFO] [stderr] [100%] Built target spectest-interp [INFO] [stderr] Makefile:127: recipe for target 'all' failed [INFO] [stderr] [INFO] [stderr] --- stderr [INFO] [stderr] Error creating directory "/opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/wabt-sys-0.1.4/wabt/bin". [INFO] [stderr] make[2]: *** [CMakeFiles/wasm2wat-copy-to-bin] Error 1 [INFO] [stderr] make[1]: *** [CMakeFiles/wasm2wat-copy-to-bin.dir/all] Error 2 [INFO] [stderr] make[1]: *** Waiting for unfinished jobs.... [INFO] [stderr] make: *** [all] Error 2 [INFO] [stderr] thread 'main' panicked at ' [INFO] [stderr] command did not execute successfully, got: exit code: 2 [INFO] [stderr] [INFO] [stderr] build script failed, must exit now', /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.35/src/lib.rs:778:5 [INFO] [stderr] stack backtrace: [INFO] [stderr] 0: 0x56038da2ce13 - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h00d1e05a61bd440b [INFO] [stderr] at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 [INFO] [stderr] 1: 0x56038da27558 - std::sys_common::backtrace::_print::hc0d53aca8da62f75 [INFO] [stderr] at src/libstd/sys_common/backtrace.rs:71 [INFO] [stderr] 2: 0x56038da2bda2 - std::panicking::default_hook::{{closure}}::h46d30bcc4bfff149 [INFO] [stderr] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stderr] at src/libstd/panicking.rs:211 [INFO] [stderr] 3: 0x56038da2bb0d - std::panicking::default_hook::h017696c2a8b7b16f [INFO] [stderr] at src/libstd/panicking.rs:227 [INFO] [stderr] 4: 0x56038da2c4b0 - std::panicking::rust_panic_with_hook::h8cbdfe43764887be [INFO] [stderr] at src/libstd/panicking.rs:491 [INFO] [stderr] 5: 0x56038da2c031 - std::panicking::continue_panic_fmt::h3d3c5a833c00a5e1 [INFO] [stderr] at src/libstd/panicking.rs:398 [INFO] [stderr] 6: 0x56038da2bf7e - std::panicking::begin_panic_fmt::h11fdc4cc73917110 [INFO] [stderr] at src/libstd/panicking.rs:353 [INFO] [stderr] 7: 0x56038d9969bf - cmake::fail::h12cf93cdd856aae1 [INFO] [stderr] at /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.35/src/lib.rs:778 [INFO] [stderr] 8: 0x56038d9962a7 - cmake::run::h9c62d60f2797402a [INFO] [stderr] at /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.35/src/lib.rs:759 [INFO] [stderr] 9: 0x56038d9927bc - cmake::Config::build::hf76a3f71c38b4a64 [INFO] [stderr] at /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.35/src/lib.rs:671 [INFO] [stderr] 10: 0x56038d98cc3c - build_script_build::main::h0905d9afba94a4e4 [INFO] [stderr] at /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/wabt-sys-0.1.4/build.rs:7 [INFO] [stderr] 11: 0x56038d98ec0f - std::rt::lang_start::{{closure}}::h2b79476afc906fab [INFO] [stderr] at /rustc/9fda7c2237db910e41d6a712e9a2139b352e558b/src/libstd/rt.rs:74 [INFO] [stderr] 12: 0x56038da2beb2 - std::panicking::try::do_call::h69790245ac2d03fe [INFO] [stderr] at src/libstd/rt.rs:59 [INFO] [stderr] at src/libstd/panicking.rs:310 [INFO] [stderr] 13: 0x56038da40aa9 - __rust_maybe_catch_panic [INFO] [stderr] at src/libpanic_unwind/lib.rs:102 [INFO] [stderr] 14: 0x56038da2c883 - std::rt::lang_start_internal::h540c897fe52ba9c5 [INFO] [stderr] at src/libstd/panicking.rs:289 [INFO] [stderr] at src/libstd/panic.rs:398 [INFO] [stderr] at src/libstd/rt.rs:58 [INFO] [stderr] 15: 0x56038d98ebe8 - std::rt::lang_start::h28ad21478661768e [INFO] [stderr] at /rustc/9fda7c2237db910e41d6a712e9a2139b352e558b/src/libstd/rt.rs:74 [INFO] [stderr] 16: 0x56038d98d599 - main [INFO] [stderr] 17: 0x7fcb607ac2e0 - __libc_start_main [INFO] [stderr] 18: 0x56038d98c959 - _start [INFO] [stderr] 19: 0x0 - [INFO] [stderr] [INFO] running `"docker" "inspect" "0be5f2d3085fe4c886af696fd20b6a0a6e8528afe8aa175383993c4947b4e35c"` [INFO] running `"docker" "rm" "-f" "0be5f2d3085fe4c886af696fd20b6a0a6e8528afe8aa175383993c4947b4e35c"` [INFO] [stdout] 0be5f2d3085fe4c886af696fd20b6a0a6e8528afe8aa175383993c4947b4e35c