[INFO] crate sqlparser 0.1.8 is already in cache [INFO] extracting crate sqlparser 0.1.8 into work/ex/clippy-test-run/sources/stable/reg/sqlparser/0.1.8 [INFO] extracting crate sqlparser 0.1.8 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/sqlparser/0.1.8 [INFO] validating manifest of sqlparser-0.1.8 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 sqlparser-0.1.8 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 sqlparser-0.1.8 [INFO] finished frobbing sqlparser-0.1.8 [INFO] frobbed toml for sqlparser-0.1.8 written to work/ex/clippy-test-run/sources/stable/reg/sqlparser/0.1.8/Cargo.toml [INFO] started frobbing sqlparser-0.1.8 [INFO] finished frobbing sqlparser-0.1.8 [INFO] frobbed toml for sqlparser-0.1.8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/sqlparser/0.1.8/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 sqlparser-0.1.8 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/sqlparser/0.1.8:/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] 56d35139d9471b3908b6fdc31dbb3dc366495d1a13a9bd330a08a5882c7d7d96 [INFO] running `"docker" "start" "-a" "56d35139d9471b3908b6fdc31dbb3dc366495d1a13a9bd330a08a5882c7d7d96"` [INFO] [stderr] Checking uuid v0.7.2 [INFO] [stderr] Checking sqlparser v0.1.8 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sqlparser.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | tokens: tokens, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `tokens` [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/sqlparser.rs:504:41 [INFO] [stderr] | [INFO] [stderr] 504 | data_type: data_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data_type` [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/sqlparser.rs:515:41 [INFO] [stderr] | [INFO] [stderr] 515 | data_type: data_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data_type` [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/sqlparser.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | tokens: tokens, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `tokens` [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/sqlparser.rs:504:41 [INFO] [stderr] | [INFO] [stderr] 504 | data_type: data_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data_type` [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/sqlparser.rs:515:41 [INFO] [stderr] | [INFO] [stderr] 515 | data_type: data_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `data_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sqltokenizer.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | return self.dialect.keywords().contains(&s); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.dialect.keywords().contains(&s)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/sqltokenizer.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | return self.dialect.keywords().contains(&s); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.dialect.keywords().contains(&s)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/sqlast/mod.rs:220:20 [INFO] [stderr] | [INFO] [stderr] 220 | if columns.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!columns.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/sqlast/mod.rs:223:20 [INFO] [stderr] | [INFO] [stderr] 223 | if values.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!values.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/sqlast/mod.rs:245:20 [INFO] [stderr] | [INFO] [stderr] 245 | if columns.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!columns.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/sqlast/mod.rs:220:20 [INFO] [stderr] | [INFO] [stderr] 220 | if columns.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!columns.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/sqlast/mod.rs:256:20 [INFO] [stderr] | [INFO] [stderr] 256 | if values.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!values.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/sqlast/mod.rs:223:20 [INFO] [stderr] | [INFO] [stderr] 223 | if values.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!values.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/sqlast/mod.rs:275:20 [INFO] [stderr] | [INFO] [stderr] 275 | if assignments.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!assignments.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: useless use of `format!` [INFO] [stderr] --> src/sqlast/mod.rs:276:27 [INFO] [stderr] | [INFO] [stderr] 276 | s += &format!( [INFO] [stderr] | ___________________________^ [INFO] [stderr] 277 | | "{}", [INFO] [stderr] 278 | | assignments [INFO] [stderr] 279 | | .iter() [INFO] [stderr] ... | [INFO] [stderr] 282 | | .join(", ") [INFO] [stderr] 283 | | ); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] help: consider using .to_string() [INFO] [stderr] | [INFO] [stderr] 2 | $ crate :: fmt :: format ( assignments [INFO] [stderr] 3 | .iter() [INFO] [stderr] 4 | .map(|ass| ass.to_string()) [INFO] [stderr] 5 | .collect::>() [INFO] [stderr] 6 | .join(", ").to_string() ) ) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/sqlast/mod.rs:245:20 [INFO] [stderr] | [INFO] [stderr] 245 | if columns.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!columns.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/sqlast/mod.rs:256:20 [INFO] [stderr] | [INFO] [stderr] 256 | if values.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!values.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/sqlast/mod.rs:275:20 [INFO] [stderr] | [INFO] [stderr] 275 | if assignments.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!assignments.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: useless use of `format!` [INFO] [stderr] --> src/sqlast/mod.rs:276:27 [INFO] [stderr] | [INFO] [stderr] 276 | s += &format!( [INFO] [stderr] | ___________________________^ [INFO] [stderr] 277 | | "{}", [INFO] [stderr] 278 | | assignments [INFO] [stderr] 279 | | .iter() [INFO] [stderr] ... | [INFO] [stderr] 282 | | .join(", ") [INFO] [stderr] 283 | | ); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] help: consider using .to_string() [INFO] [stderr] | [INFO] [stderr] 2 | $ crate :: fmt :: format ( assignments [INFO] [stderr] 3 | .iter() [INFO] [stderr] 4 | .map(|ass| ass.to_string()) [INFO] [stderr] 5 | .collect::>() [INFO] [stderr] 6 | .join(", ").to_string() ) ) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/sqlparser.rs:129:64 [INFO] [stderr] | [INFO] [stderr] 129 | return parser_err!(format!( [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 130 | | "Error parsing compound identifier" [INFO] [stderr] 131 | | )) [INFO] [stderr] | |_____________________________________________^ help: consider using .to_string(): `"Error parsing compound identifier".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/sqlparser.rs:160:44 [INFO] [stderr] | [INFO] [stderr] 160 | return parser_err!(format!("expected token RParen")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"expected token RParen".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/sqlparser.rs:169:33 [INFO] [stderr] | [INFO] [stderr] 169 | None => parser_err!(format!("Prefix parser expected a keyword but hit EOF")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Prefix parser expected a keyword but hit EOF".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/sqlparser.rs:129:64 [INFO] [stderr] | [INFO] [stderr] 129 | return parser_err!(format!( [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 130 | | "Error parsing compound identifier" [INFO] [stderr] 131 | | )) [INFO] [stderr] | |_____________________________________________^ help: consider using .to_string(): `"Error parsing compound identifier".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/sqlparser.rs:160:44 [INFO] [stderr] | [INFO] [stderr] 160 | return parser_err!(format!("expected token RParen")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"expected token RParen".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/sqlparser.rs:169:33 [INFO] [stderr] | [INFO] [stderr] 169 | None => parser_err!(format!("Prefix parser expected a keyword but hit EOF")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Prefix parser expected a keyword but hit EOF".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sqlparser.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match tok { [INFO] [stderr] 287 | | &Token::Eq => Ok(SQLOperator::Eq), [INFO] [stderr] 288 | | &Token::Neq => Ok(SQLOperator::NotEq), [INFO] [stderr] 289 | | &Token::Lt => Ok(SQLOperator::Lt), [INFO] [stderr] ... | [INFO] [stderr] 300 | | _ => parser_err!(format!("Unsupported SQL operator {:?}", tok)), [INFO] [stderr] 301 | | } [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] 286 | match *tok { [INFO] [stderr] 287 | Token::Eq => Ok(SQLOperator::Eq), [INFO] [stderr] 288 | Token::Neq => Ok(SQLOperator::NotEq), [INFO] [stderr] 289 | Token::Lt => Ok(SQLOperator::Lt), [INFO] [stderr] 290 | Token::LtEq => Ok(SQLOperator::LtEq), [INFO] [stderr] 291 | Token::Gt => Ok(SQLOperator::Gt), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sqlparser.rs:317:9 [INFO] [stderr] | [INFO] [stderr] 317 | / match tok { [INFO] [stderr] 318 | | &Token::Keyword(ref k) if k == "OR" => Ok(5), [INFO] [stderr] 319 | | &Token::Keyword(ref k) if k == "AND" => Ok(10), [INFO] [stderr] 320 | | &Token::Keyword(ref k) if k == "IS" => Ok(15), [INFO] [stderr] ... | [INFO] [stderr] 327 | | _ => Ok(0), [INFO] [stderr] 328 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 317 | match *tok { [INFO] [stderr] 318 | Token::Keyword(ref k) if k == "OR" => Ok(5), [INFO] [stderr] 319 | Token::Keyword(ref k) if k == "AND" => Ok(10), [INFO] [stderr] 320 | Token::Keyword(ref k) if k == "IS" => Ok(15), [INFO] [stderr] 321 | Token::Eq | Token::Lt | Token::LtEq | Token::Neq | Token::Gt | Token::GtEq => { [INFO] [stderr] 322 | Ok(20) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sqlparser.rs:354:21 [INFO] [stderr] | [INFO] [stderr] 354 | index = index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sqlparser.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sqlparser.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match tok { [INFO] [stderr] 287 | | &Token::Eq => Ok(SQLOperator::Eq), [INFO] [stderr] 288 | | &Token::Neq => Ok(SQLOperator::NotEq), [INFO] [stderr] 289 | | &Token::Lt => Ok(SQLOperator::Lt), [INFO] [stderr] ... | [INFO] [stderr] 300 | | _ => parser_err!(format!("Unsupported SQL operator {:?}", tok)), [INFO] [stderr] 301 | | } [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] 286 | match *tok { [INFO] [stderr] 287 | Token::Eq => Ok(SQLOperator::Eq), [INFO] [stderr] 288 | Token::Neq => Ok(SQLOperator::NotEq), [INFO] [stderr] 289 | Token::Lt => Ok(SQLOperator::Lt), [INFO] [stderr] 290 | Token::LtEq => Ok(SQLOperator::LtEq), [INFO] [stderr] 291 | Token::Gt => Ok(SQLOperator::Gt), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sqlparser.rs:419:13 [INFO] [stderr] | [INFO] [stderr] 419 | self.index = self.index - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sqlparser.rs:317:9 [INFO] [stderr] | [INFO] [stderr] 317 | / match tok { [INFO] [stderr] 318 | | &Token::Keyword(ref k) if k == "OR" => Ok(5), [INFO] [stderr] 319 | | &Token::Keyword(ref k) if k == "AND" => Ok(10), [INFO] [stderr] 320 | | &Token::Keyword(ref k) if k == "IS" => Ok(15), [INFO] [stderr] ... | [INFO] [stderr] 327 | | _ => Ok(0), [INFO] [stderr] 328 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 317 | match *tok { [INFO] [stderr] 318 | Token::Keyword(ref k) if k == "OR" => Ok(5), [INFO] [stderr] 319 | Token::Keyword(ref k) if k == "AND" => Ok(10), [INFO] [stderr] 320 | Token::Keyword(ref k) if k == "IS" => Ok(15), [INFO] [stderr] 321 | Token::Eq | Token::Lt | Token::LtEq | Token::Neq | Token::Gt | Token::GtEq => { [INFO] [stderr] 322 | Ok(20) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sqlparser.rs:354:21 [INFO] [stderr] | [INFO] [stderr] 354 | index = index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sqlparser.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/sqlparser.rs:419:13 [INFO] [stderr] | [INFO] [stderr] 419 | self.index = self.index - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:494:36 [INFO] [stderr] | [INFO] [stderr] 494 | } else { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 495 | | true [INFO] [stderr] 496 | | }; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:492:66 [INFO] [stderr] | [INFO] [stderr] 492 | } else if self.parse_keyword("NULL") { [INFO] [stderr] | __________________________________________________________________^ [INFO] [stderr] 493 | | true [INFO] [stderr] 494 | | } else { [INFO] [stderr] | |_____________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression will always return true [INFO] [stderr] --> src/sqlparser.rs:492:36 [INFO] [stderr] | [INFO] [stderr] 492 | } else if self.parse_keyword("NULL") { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 493 | | true [INFO] [stderr] 494 | | } else { [INFO] [stderr] 495 | | true [INFO] [stderr] 496 | | }; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:494:36 [INFO] [stderr] | [INFO] [stderr] 494 | } else { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 495 | | true [INFO] [stderr] 496 | | }; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:492:66 [INFO] [stderr] | [INFO] [stderr] 492 | } else if self.parse_keyword("NULL") { [INFO] [stderr] | __________________________________________________________________^ [INFO] [stderr] 493 | | true [INFO] [stderr] 494 | | } else { [INFO] [stderr] | |_____________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression will always return true [INFO] [stderr] --> src/sqlparser.rs:492:36 [INFO] [stderr] | [INFO] [stderr] 492 | } else if self.parse_keyword("NULL") { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 493 | | true [INFO] [stderr] 494 | | } else { [INFO] [stderr] 495 | | true [INFO] [stderr] 496 | | }; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/sqlparser.rs:701:56 [INFO] [stderr] | [INFO] [stderr] 701 | Token::Number(ref n) if n.contains(".") => match n.parse::() { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/sqlparser.rs:701:56 [INFO] [stderr] | [INFO] [stderr] 701 | Token::Number(ref n) if n.contains(".") => match n.parse::() { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/sqlparser.rs:797:56 [INFO] [stderr] | [INFO] [stderr] 797 | let offset = FixedOffset::east(tz as i32 * 3600); [INFO] [stderr] | ^^^^^^^^^ help: try: `i32::from(tz)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:863:28 [INFO] [stderr] | [INFO] [stderr] 863 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 864 | | Ok(SQLType::Double) [INFO] [stderr] 865 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:861:56 [INFO] [stderr] | [INFO] [stderr] 861 | if self.parse_keyword("PRECISION") { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 862 | | Ok(SQLType::Double) [INFO] [stderr] 863 | | } else { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:890:61 [INFO] [stderr] | [INFO] [stderr] 890 | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 891 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 892 | | Ok(SQLType::Timestamp) [INFO] [stderr] 893 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 898 | | } [INFO] [stderr] 899 | | } else { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:881:51 [INFO] [stderr] | [INFO] [stderr] 881 | if self.parse_keyword("WITH") { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 882 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 883 | | Ok(SQLType::Timestamp) [INFO] [stderr] 884 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 889 | | } [INFO] [stderr] 890 | | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:913:61 [INFO] [stderr] | [INFO] [stderr] 913 | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 914 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 915 | | Ok(SQLType::Time) [INFO] [stderr] 916 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 921 | | } [INFO] [stderr] 922 | | } else { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:904:51 [INFO] [stderr] | [INFO] [stderr] 904 | if self.parse_keyword("WITH") { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 905 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 906 | | Ok(SQLType::Time) [INFO] [stderr] 907 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 912 | | } [INFO] [stderr] 913 | | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/sqlparser.rs:797:56 [INFO] [stderr] | [INFO] [stderr] 797 | let offset = FixedOffset::east(tz as i32 * 3600); [INFO] [stderr] | ^^^^^^^^^ help: try: `i32::from(tz)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:863:28 [INFO] [stderr] | [INFO] [stderr] 863 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 864 | | Ok(SQLType::Double) [INFO] [stderr] 865 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:861:56 [INFO] [stderr] | [INFO] [stderr] 861 | if self.parse_keyword("PRECISION") { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 862 | | Ok(SQLType::Double) [INFO] [stderr] 863 | | } else { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:890:61 [INFO] [stderr] | [INFO] [stderr] 890 | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 891 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 892 | | Ok(SQLType::Timestamp) [INFO] [stderr] 893 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 898 | | } [INFO] [stderr] 899 | | } else { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:881:51 [INFO] [stderr] | [INFO] [stderr] 881 | if self.parse_keyword("WITH") { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 882 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 883 | | Ok(SQLType::Timestamp) [INFO] [stderr] 884 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 889 | | } [INFO] [stderr] 890 | | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/sqlparser.rs:913:61 [INFO] [stderr] | [INFO] [stderr] 913 | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 914 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 915 | | Ok(SQLType::Time) [INFO] [stderr] 916 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 921 | | } [INFO] [stderr] 922 | | } else { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/sqlparser.rs:904:51 [INFO] [stderr] | [INFO] [stderr] 904 | if self.parse_keyword("WITH") { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 905 | | if self.parse_keywords(vec!["TIME", "ZONE"]) { [INFO] [stderr] 906 | | Ok(SQLType::Time) [INFO] [stderr] 907 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 912 | | } [INFO] [stderr] 913 | | } else if self.parse_keyword("WITHOUT") { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `sqlparser`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `sqlparser`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "56d35139d9471b3908b6fdc31dbb3dc366495d1a13a9bd330a08a5882c7d7d96"` [INFO] running `"docker" "rm" "-f" "56d35139d9471b3908b6fdc31dbb3dc366495d1a13a9bd330a08a5882c7d7d96"` [INFO] [stdout] 56d35139d9471b3908b6fdc31dbb3dc366495d1a13a9bd330a08a5882c7d7d96