[INFO] crate l20n 0.1.2 is already in cache [INFO] extracting crate l20n 0.1.2 into work/ex/clippy-test-run/sources/stable/reg/l20n/0.1.2 [INFO] extracting crate l20n 0.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/l20n/0.1.2 [INFO] validating manifest of l20n-0.1.2 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 l20n-0.1.2 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 l20n-0.1.2 [INFO] finished frobbing l20n-0.1.2 [INFO] frobbed toml for l20n-0.1.2 written to work/ex/clippy-test-run/sources/stable/reg/l20n/0.1.2/Cargo.toml [INFO] started frobbing l20n-0.1.2 [INFO] finished frobbing l20n-0.1.2 [INFO] frobbed toml for l20n-0.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/l20n/0.1.2/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 l20n-0.1.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/l20n/0.1.2:/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] 68b5cf21ba734dd80c4cc0b7af7ef839c87a22cba39af3e095203662917807c4 [INFO] running `"docker" "start" "-a" "68b5cf21ba734dd80c4cc0b7af7ef839c87a22cba39af3e095203662917807c4"` [INFO] [stderr] Checking l20n v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/compiler.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | env: env, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [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/compiler.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/compiler.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [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/parser.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/compiler.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | env: env, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:28:24 [INFO] [stderr] | [INFO] [stderr] 28 | #![cfg_attr(test, deny(warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::redundant_field_names)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] error: redundant field names in struct initialization [INFO] [stderr] --> src/compiler.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/compiler.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `l20n`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | / match *value { [INFO] [stderr] 25 | | parser::Hash(..) => { [INFO] [stderr] 26 | | if indices.len() > 0 { [INFO] [stderr] 27 | | add_default_indices(value, indices.iter()); [INFO] [stderr] ... | [INFO] [stderr] 30 | | _ => {} [INFO] [stderr] 31 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 24 | if let parser::Hash(..) = *value { [INFO] [stderr] 25 | if indices.len() > 0 { [INFO] [stderr] 26 | add_default_indices(value, indices.iter()); [INFO] [stderr] 27 | } [INFO] [stderr] 28 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/compiler.rs:26:28 [INFO] [stderr] | [INFO] [stderr] 26 | if indices.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!indices.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:33:21 [INFO] [stderr] | [INFO] [stderr] 33 | / match *value { [INFO] [stderr] 34 | | parser::Hash(..) => { [INFO] [stderr] 35 | | if indices.len() > 0 { [INFO] [stderr] 36 | | add_default_indices(value, indices.iter()); [INFO] [stderr] ... | [INFO] [stderr] 39 | | _ => {} [INFO] [stderr] 40 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | if let parser::Hash(..) = *value { [INFO] [stderr] 34 | if indices.len() > 0 { [INFO] [stderr] 35 | add_default_indices(value, indices.iter()); [INFO] [stderr] 36 | } [INFO] [stderr] 37 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/compiler.rs:35:32 [INFO] [stderr] | [INFO] [stderr] 35 | if indices.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | / match *value { [INFO] [stderr] 55 | | parser::Hash(ref mut map, _, ref mut def_index) => { [INFO] [stderr] 56 | | match indices.next() { [INFO] [stderr] 57 | | Some(idx) => { [INFO] [stderr] ... | [INFO] [stderr] 66 | | _ => {} [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 54 | if let parser::Hash(ref mut map, _, ref mut def_index) = *value { [INFO] [stderr] 55 | match indices.next() { [INFO] [stderr] 56 | Some(idx) => { [INFO] [stderr] 57 | for (_k, v) in map.iter_mut() { [INFO] [stderr] 58 | add_default_indices(v, indices.clone()); [INFO] [stderr] 59 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | / match indices.next() { [INFO] [stderr] 57 | | Some(idx) => { [INFO] [stderr] 58 | | for (_k, v) in map.iter_mut() { [INFO] [stderr] 59 | | add_default_indices(v, indices.clone()); [INFO] [stderr] ... | [INFO] [stderr] 63 | | None => {} [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 56 | if let Some(idx) = indices.next() { [INFO] [stderr] 57 | for (_k, v) in map.iter_mut() { [INFO] [stderr] 58 | add_default_indices(v, indices.clone()); [INFO] [stderr] 59 | } [INFO] [stderr] 60 | *def_index = Some(Box::new(idx.clone())); [INFO] [stderr] 61 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | / match ctx.index { [INFO] [stderr] 192 | | Some(ref s) => match map.get(s) { [INFO] [stderr] 193 | | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 194 | | None => {} [INFO] [stderr] 195 | | }, [INFO] [stderr] 196 | | None => {} [INFO] [stderr] 197 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 191 | if let Some(ref s) = ctx.index { match map.get(s) { [INFO] [stderr] 192 | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 193 | None => {} [INFO] [stderr] 194 | } }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:192:36 [INFO] [stderr] | [INFO] [stderr] 192 | Some(ref s) => match map.get(s) { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 193 | | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 194 | | None => {} [INFO] [stderr] 195 | | }, [INFO] [stderr] | |_____________________^ help: try this: `if let Some(v) = map.get(s) { return Ok(Value(v.clone())) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:198:17 [INFO] [stderr] | [INFO] [stderr] 198 | / match *def_key { [INFO] [stderr] 199 | | Some(ref s) => match map.get(s) { [INFO] [stderr] 200 | | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 201 | | None => {} [INFO] [stderr] 202 | | }, [INFO] [stderr] 203 | | None => {} [INFO] [stderr] 204 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 198 | if let Some(ref s) = *def_key { match map.get(s) { [INFO] [stderr] 199 | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 200 | None => {} [INFO] [stderr] 201 | } }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:199:36 [INFO] [stderr] | [INFO] [stderr] 199 | Some(ref s) => match map.get(s) { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 200 | | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 201 | | None => {} [INFO] [stderr] 202 | | }, [INFO] [stderr] | |_____________________^ help: try this: `if let Some(v) = map.get(s) { return Ok(Value(v.clone())) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:205:17 [INFO] [stderr] | [INFO] [stderr] 205 | / match *def_index { [INFO] [stderr] 206 | | Some(ref e) => match e.resolve_data(ctx) { [INFO] [stderr] 207 | | Ok(data::Str(ref s)) => match map.get(s) { [INFO] [stderr] 208 | | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] ... | [INFO] [stderr] 214 | | None => {} [INFO] [stderr] 215 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 205 | if let Some(ref e) = *def_index { match e.resolve_data(ctx) { [INFO] [stderr] 206 | Ok(data::Str(ref s)) => match map.get(s) { [INFO] [stderr] 207 | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 208 | None => {} [INFO] [stderr] 209 | }, [INFO] [stderr] 210 | Ok(_) => return Err(WrongType), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:207:53 [INFO] [stderr] | [INFO] [stderr] 207 | Ok(data::Str(ref s)) => match map.get(s) { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 208 | | Some(v) => return Ok(Value(v.clone())), [INFO] [stderr] 209 | | None => {} [INFO] [stderr] 210 | | }, [INFO] [stderr] | |_____________________________^ help: try this: `if let Some(v) = map.get(s) { return Ok(Value(v.clone())) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/compiler.rs:268:17 [INFO] [stderr] | [INFO] [stderr] 268 | / match ctx.locals.and_then(|locals| locals.get(name)) { [INFO] [stderr] 269 | | Some(val) => return Ok(Data(val.clone())), [INFO] [stderr] 270 | | _ => {} [INFO] [stderr] 271 | | }; [INFO] [stderr] | |_________________^ help: try this: `if let Some(val) = ctx.locals.and_then(|locals| locals.get(name)) { return Ok(Data(val.clone())) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compiler.rs:303:52 [INFO] [stderr] | [INFO] [stderr] 303 | let name = match k { [INFO] [stderr] | ____________________________________________________^ [INFO] [stderr] 304 | | &parser::VarExpr(ref name) => name.clone(), [INFO] [stderr] 305 | | // not a VarExpr would be the parser going nuts [INFO] [stderr] 306 | | _ => unreachable!() [INFO] [stderr] 307 | | }; [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] 303 | let name = match *k { [INFO] [stderr] 304 | parser::VarExpr(ref name) => name.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `context::Locale` [INFO] [stderr] --> src/context.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | / pub fn new() -> Locale { [INFO] [stderr] 81 | | Locale { [INFO] [stderr] 82 | | resources: HashMap::new() [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 59 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/context.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | / match data.serialize(&mut enc) { [INFO] [stderr] 107 | | Err(e) => return Err(EncodeError(e)), [INFO] [stderr] 108 | | _ => {} [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = data.serialize(&mut enc) { return Err(EncodeError(e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/context.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | / match entry { [INFO] [stderr] 118 | | &parser::Entity(..) => { [INFO] [stderr] 119 | | map.insert(id.clone(), match entry.resolve_data(&ctx) { [INFO] [stderr] 120 | | Ok(d) => d, [INFO] [stderr] ... | [INFO] [stderr] 124 | | _ => () // dont localize comments or macros [INFO] [stderr] 125 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 117 | if let &parser::Entity(..) = entry { [INFO] [stderr] 118 | map.insert(id.clone(), match entry.resolve_data(&ctx) { [INFO] [stderr] 119 | Ok(d) => d, [INFO] [stderr] 120 | Err(e) => return Err(ResolveError(e)) [INFO] [stderr] 121 | }); [INFO] [stderr] 122 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/context.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | / match entry { [INFO] [stderr] 118 | | &parser::Entity(..) => { [INFO] [stderr] 119 | | map.insert(id.clone(), match entry.resolve_data(&ctx) { [INFO] [stderr] 120 | | Ok(d) => d, [INFO] [stderr] ... | [INFO] [stderr] 124 | | _ => () // dont localize comments or macros [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] 117 | match *entry { [INFO] [stderr] 118 | parser::Entity(..) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | / match self.ch { [INFO] [stderr] 158 | | Some(ch) => { [INFO] [stderr] 159 | | if ch == '\n' { [INFO] [stderr] 160 | | self.line += 1; [INFO] [stderr] ... | [INFO] [stderr] 166 | | None => { } [INFO] [stderr] 167 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 157 | if let Some(ch) = self.ch { [INFO] [stderr] 158 | if ch == '\n' { [INFO] [stderr] 159 | self.line += 1; [INFO] [stderr] 160 | self.col = 1; [INFO] [stderr] 161 | } else { [INFO] [stderr] 162 | self.col += 1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:292:13 [INFO] [stderr] | [INFO] [stderr] 292 | / match self.ch { [INFO] [stderr] 293 | | Some('>') => break, [INFO] [stderr] 294 | | _ => {} [INFO] [stderr] 295 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some('>') = self.ch { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:388:12 [INFO] [stderr] | [INFO] [stderr] 388 | if exprs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!exprs.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/parser.rs:389:16 [INFO] [stderr] | [INFO] [stderr] 389 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/parser.rs:541:35 [INFO] [stderr] | [INFO] [stderr] 541 | fn peek_bin_op(&mut self, op: &BinOp) -> usize { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `BinOp` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/parser.rs:565:30 [INFO] [stderr] | [INFO] [stderr] 565 | fn peek_un_op(&self, op: &UnOp) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `UnOp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser.rs:728:9 [INFO] [stderr] | [INFO] [stderr] 728 | / loop { [INFO] [stderr] 729 | | match self.ch { [INFO] [stderr] 730 | | Some(ch) => match ch { [INFO] [stderr] 731 | | '0'...'9' => { [INFO] [stderr] ... | [INFO] [stderr] 738 | | } [INFO] [stderr] 739 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(ch) = self.ch { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:741:12 [INFO] [stderr] | [INFO] [stderr] 741 | if num.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!num.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: build failed [INFO] running `"docker" "inspect" "68b5cf21ba734dd80c4cc0b7af7ef839c87a22cba39af3e095203662917807c4"` [INFO] running `"docker" "rm" "-f" "68b5cf21ba734dd80c4cc0b7af7ef839c87a22cba39af3e095203662917807c4"` [INFO] [stdout] 68b5cf21ba734dd80c4cc0b7af7ef839c87a22cba39af3e095203662917807c4