[INFO] updating cached repository JerTH/Violet [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/JerTH/Violet [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/JerTH/Violet" "work/ex/clippy-test-run/sources/stable/gh/JerTH/Violet"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/JerTH/Violet'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/JerTH/Violet" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/JerTH/Violet"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/JerTH/Violet'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6fa3b0f6f763f272c3c7cf8c8419e07bb17103b7 [INFO] sha for GitHub repo JerTH/Violet: 6fa3b0f6f763f272c3c7cf8c8419e07bb17103b7 [INFO] validating manifest of JerTH/Violet 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 JerTH/Violet 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 JerTH/Violet [INFO] finished frobbing JerTH/Violet [INFO] frobbed toml for JerTH/Violet written to work/ex/clippy-test-run/sources/stable/gh/JerTH/Violet/Cargo.toml [INFO] started frobbing JerTH/Violet [INFO] finished frobbing JerTH/Violet [INFO] frobbed toml for JerTH/Violet written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/JerTH/Violet/Cargo.toml [INFO] crate JerTH/Violet has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting JerTH/Violet against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/JerTH/Violet:/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] efeb8bc836845dcc0b35ded881ab809676b96280db1a59d2b95a47250f00707e [INFO] running `"docker" "start" "-a" "efeb8bc836845dcc0b35ded881ab809676b96280db1a59d2b95a47250f00707e"` [INFO] [stderr] Checking violet v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lexer.rs:248:4 [INFO] [stderr] | [INFO] [stderr] 248 | token_type: token_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `token_type` [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/lexer.rs:249:4 [INFO] [stderr] | [INFO] [stderr] 249 | source_position: source_position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `source_position` [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:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | 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/lexer.rs:248:4 [INFO] [stderr] | [INFO] [stderr] 248 | token_type: token_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `token_type` [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/lexer.rs:249:4 [INFO] [stderr] | [INFO] [stderr] 249 | source_position: source_position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `source_position` [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:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | 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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lexing_rules.rs:68:7 [INFO] [stderr] | [INFO] [stderr] 68 | else { [INFO] [stderr] | __________^ [INFO] [stderr] 69 | | if _parse_buffer_as::(state, &mut integer_literal) { [INFO] [stderr] 70 | | _match_and_push_token(state, VtTokenType::IntLiteral(integer_literal)) [INFO] [stderr] 71 | | } [INFO] [stderr] ... | [INFO] [stderr] 74 | | } [INFO] [stderr] 75 | | } [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] 68 | else if _parse_buffer_as::(state, &mut integer_literal) { [INFO] [stderr] 69 | _match_and_push_token(state, VtTokenType::IntLiteral(integer_literal)) [INFO] [stderr] 70 | } [INFO] [stderr] 71 | else { [INFO] [stderr] 72 | _mismatch_and_rollback(state) [INFO] [stderr] 73 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lexing_rules.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 89 | | if _match_when(|c| is_char(c, '='), state) [INFO] [stderr] 90 | | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] 91 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 88 | } else if _match_when(|c| is_char(c, '='), state) [INFO] [stderr] 89 | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] 90 | } else { [INFO] [stderr] 91 | if _match_when(is_symbol_char, state) { [INFO] [stderr] 92 | } else { [INFO] [stderr] 93 | return _mismatch_and_rollback(state) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lexing_rules.rs:91:16 [INFO] [stderr] | [INFO] [stderr] 91 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 92 | | if _match_when(is_symbol_char, state) { [INFO] [stderr] 93 | | } else { [INFO] [stderr] 94 | | return _mismatch_and_rollback(state) [INFO] [stderr] 95 | | } [INFO] [stderr] 96 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 91 | } else if _match_when(is_symbol_char, state) { [INFO] [stderr] 92 | } else { [INFO] [stderr] 93 | return _mismatch_and_rollback(state) [INFO] [stderr] 94 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:70:3 [INFO] [stderr] | [INFO] [stderr] 70 | return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [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/lexer.rs:72:3 [INFO] [stderr] | [INFO] [stderr] 72 | return false [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [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/lexer.rs:584:2 [INFO] [stderr] | [INFO] [stderr] 584 | return Err(VtLexError::IterationLimit) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(VtLexError::IterationLimit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lexing_rules.rs:68:7 [INFO] [stderr] | [INFO] [stderr] 68 | else { [INFO] [stderr] | __________^ [INFO] [stderr] 69 | | if _parse_buffer_as::(state, &mut integer_literal) { [INFO] [stderr] 70 | | _match_and_push_token(state, VtTokenType::IntLiteral(integer_literal)) [INFO] [stderr] 71 | | } [INFO] [stderr] ... | [INFO] [stderr] 74 | | } [INFO] [stderr] 75 | | } [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] 68 | else if _parse_buffer_as::(state, &mut integer_literal) { [INFO] [stderr] 69 | _match_and_push_token(state, VtTokenType::IntLiteral(integer_literal)) [INFO] [stderr] 70 | } [INFO] [stderr] 71 | else { [INFO] [stderr] 72 | _mismatch_and_rollback(state) [INFO] [stderr] 73 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lexing_rules.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 89 | | if _match_when(|c| is_char(c, '='), state) [INFO] [stderr] 90 | | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] 91 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 96 | | } [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 88 | } else if _match_when(|c| is_char(c, '='), state) [INFO] [stderr] 89 | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] 90 | } else { [INFO] [stderr] 91 | if _match_when(is_symbol_char, state) { [INFO] [stderr] 92 | } else { [INFO] [stderr] 93 | return _mismatch_and_rollback(state) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lexing_rules.rs:91:16 [INFO] [stderr] | [INFO] [stderr] 91 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 92 | | if _match_when(is_symbol_char, state) { [INFO] [stderr] 93 | | } else { [INFO] [stderr] 94 | | return _mismatch_and_rollback(state) [INFO] [stderr] 95 | | } [INFO] [stderr] 96 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 91 | } else if _match_when(is_symbol_char, state) { [INFO] [stderr] 92 | } else { [INFO] [stderr] 93 | return _mismatch_and_rollback(state) [INFO] [stderr] 94 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:70:3 [INFO] [stderr] | [INFO] [stderr] 70 | return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [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/lexer.rs:72:3 [INFO] [stderr] | [INFO] [stderr] 72 | return false [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [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/lexer.rs:584:2 [INFO] [stderr] | [INFO] [stderr] 584 | return Err(VtLexError::IterationLimit) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(VtLexError::IterationLimit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: field is never used: `ast` [INFO] [stderr] --> src/parser.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | ast: VtAst, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `op_stack` [INFO] [stderr] --> src/parser.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | op_stack: VecDeque, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_expr` [INFO] [stderr] --> src/parser.rs:216:1 [INFO] [stderr] | [INFO] [stderr] 216 | fn parse_expr(state: &mut VtParser) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/lexing_rules.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 49 | && optionally( || { match_into_buffer_while(is_digit, state) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] error: this boolean expression contains a logic bug [INFO] [stderr] --> src/lexing_rules.rs:85:8 [INFO] [stderr] | [INFO] [stderr] 85 | if _match_when(|c| is_char(c, '.'), state) [INFO] [stderr] | ________^ [INFO] [stderr] 86 | | && (_match_when(|c| is_char(c, '.'), state) || true) [INFO] [stderr] 87 | | && (_match_when(|c| is_char(c, '.'), state) || true) { [INFO] [stderr] | |________________________________________________________^ help: it would look like the following: `_match_when(|c| is_char(c, '.'), state)` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::logic_bug)] on by default [INFO] [stderr] help: this expression can be optimized out by applying boolean operations to the outer expression [INFO] [stderr] --> src/lexing_rules.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | && (_match_when(|c| is_char(c, '.'), state) || true) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug [INFO] [stderr] [INFO] [stderr] error: this boolean expression contains a logic bug [INFO] [stderr] --> src/lexing_rules.rs:89:12 [INFO] [stderr] | [INFO] [stderr] 89 | if _match_when(|c| is_char(c, '='), state) [INFO] [stderr] | ____________^ [INFO] [stderr] 90 | | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] | |____________________________________________________________^ help: it would look like the following: `_match_when(|c| is_char(c, '='), state)` [INFO] [stderr] | [INFO] [stderr] help: this expression can be optimized out by applying boolean operations to the outer expression [INFO] [stderr] --> src/lexing_rules.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/lexing_rules.rs:147:22 [INFO] [stderr] | [INFO] [stderr] 147 | if _match_while(|c| { [INFO] [stderr] | _________________________^ [INFO] [stderr] 148 | | is_alpha(c) || [INFO] [stderr] 149 | | is_char(c, '_') [INFO] [stderr] 150 | | }, state) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexing_rules.rs:152:56 [INFO] [stderr] | [INFO] [stderr] 152 | _match_and_push_token(state, VtTokenType::Identifier(String::from(string_buffer))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `string_buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lexer.rs:69:2 [INFO] [stderr] | [INFO] [stderr] 69 | if SYMBOL_CHARS.contains(&symbol) { [INFO] [stderr] | _____^ [INFO] [stderr] 70 | | return true [INFO] [stderr] 71 | | } else { [INFO] [stderr] 72 | | return false [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `return SYMBOL_CHARS.contains(&symbol)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:539:26 [INFO] [stderr] | [INFO] [stderr] 539 | pub fn _match_rule(rule: &VtMatchingRule, state: &mut VtLexer) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `VtMatchingRule` [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] error: this boolean expression contains a logic bug [INFO] [stderr] --> src/lexer.rs:716:2 [INFO] [stderr] | [INFO] [stderr] 716 | (func() || true) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: it would look like the following: `true` [INFO] [stderr] | [INFO] [stderr] help: this expression can be optimized out by applying boolean operations to the outer expression [INFO] [stderr] --> src/lexer.rs:716:3 [INFO] [stderr] | [INFO] [stderr] 716 | (func() || true) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const parser::VtAstNode`) to a reference type (`&parser::VtAstNode`) [INFO] [stderr] --> src/parser.rs:155:18 [INFO] [stderr] | [INFO] [stderr] 155 | unsafe { ::std::mem::transmute(self.ptr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.ptr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const parser::VtAstNode`) to a reference type (`&mut parser::VtAstNode`) [INFO] [stderr] --> src/parser.rs:161:17 [INFO] [stderr] | [INFO] [stderr] 161 | unsafe {::std::mem::transmute(self.ptr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/lib.rs:95:2 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn new() -> VtErrorBuilder [INFO] [stderr] | _____^ [INFO] [stderr] 96 | | { [INFO] [stderr] 97 | | VtErrorBuilder [INFO] [stderr] 98 | | { [INFO] [stderr] ... | [INFO] [stderr] 102 | | } [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `violet`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: field is never used: `ast` [INFO] [stderr] --> src/parser.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | ast: VtAst, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `op_stack` [INFO] [stderr] --> src/parser.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | op_stack: VecDeque, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_expr` [INFO] [stderr] --> src/parser.rs:216:1 [INFO] [stderr] | [INFO] [stderr] 216 | fn parse_expr(state: &mut VtParser) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/lexing_rules.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 49 | && optionally( || { match_into_buffer_while(is_digit, state) }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] error: this boolean expression contains a logic bug [INFO] [stderr] --> src/lexing_rules.rs:85:8 [INFO] [stderr] | [INFO] [stderr] 85 | if _match_when(|c| is_char(c, '.'), state) [INFO] [stderr] | ________^ [INFO] [stderr] 86 | | && (_match_when(|c| is_char(c, '.'), state) || true) [INFO] [stderr] 87 | | && (_match_when(|c| is_char(c, '.'), state) || true) { [INFO] [stderr] | |________________________________________________________^ help: it would look like the following: `_match_when(|c| is_char(c, '.'), state)` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::logic_bug)] on by default [INFO] [stderr] help: this expression can be optimized out by applying boolean operations to the outer expression [INFO] [stderr] --> src/lexing_rules.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | && (_match_when(|c| is_char(c, '.'), state) || true) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug [INFO] [stderr] [INFO] [stderr] error: this boolean expression contains a logic bug [INFO] [stderr] --> src/lexing_rules.rs:89:12 [INFO] [stderr] | [INFO] [stderr] 89 | if _match_when(|c| is_char(c, '='), state) [INFO] [stderr] | ____________^ [INFO] [stderr] 90 | | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] | |____________________________________________________________^ help: it would look like the following: `_match_when(|c| is_char(c, '='), state)` [INFO] [stderr] | [INFO] [stderr] help: this expression can be optimized out by applying boolean operations to the outer expression [INFO] [stderr] --> src/lexing_rules.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | && (_match_when(|c| is_char(c, '='), state) || true) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/lexing_rules.rs:147:22 [INFO] [stderr] | [INFO] [stderr] 147 | if _match_while(|c| { [INFO] [stderr] | _________________________^ [INFO] [stderr] 148 | | is_alpha(c) || [INFO] [stderr] 149 | | is_char(c, '_') [INFO] [stderr] 150 | | }, state) [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexing_rules.rs:152:56 [INFO] [stderr] | [INFO] [stderr] 152 | _match_and_push_token(state, VtTokenType::Identifier(String::from(string_buffer))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `string_buffer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/lexer.rs:69:2 [INFO] [stderr] | [INFO] [stderr] 69 | if SYMBOL_CHARS.contains(&symbol) { [INFO] [stderr] | _____^ [INFO] [stderr] 70 | | return true [INFO] [stderr] 71 | | } else { [INFO] [stderr] 72 | | return false [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `return SYMBOL_CHARS.contains(&symbol)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexer.rs:539:26 [INFO] [stderr] | [INFO] [stderr] 539 | pub fn _match_rule(rule: &VtMatchingRule, state: &mut VtLexer) -> bool [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `VtMatchingRule` [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] error: this boolean expression contains a logic bug [INFO] [stderr] --> src/lexer.rs:716:2 [INFO] [stderr] | [INFO] [stderr] 716 | (func() || true) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: it would look like the following: `true` [INFO] [stderr] | [INFO] [stderr] help: this expression can be optimized out by applying boolean operations to the outer expression [INFO] [stderr] --> src/lexer.rs:716:3 [INFO] [stderr] | [INFO] [stderr] 716 | (func() || true) [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const parser::VtAstNode`) to a reference type (`&parser::VtAstNode`) [INFO] [stderr] --> src/parser.rs:155:18 [INFO] [stderr] | [INFO] [stderr] 155 | unsafe { ::std::mem::transmute(self.ptr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.ptr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*const parser::VtAstNode`) to a reference type (`&mut parser::VtAstNode`) [INFO] [stderr] --> src/parser.rs:161:17 [INFO] [stderr] | [INFO] [stderr] 161 | unsafe {::std::mem::transmute(self.ptr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *self.ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/tests/lexer_tests.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | / fn lex_loop_source() { [INFO] [stderr] 81 | | let tokens = _tokenize_with_core_rules( [INFO] [stderr] 82 | | "fn main() { [INFO] [stderr] 83 | | let x = 0; [INFO] [stderr] ... | [INFO] [stderr] 113 | | assert_eq!(tokens[24].token_type, VtTokenType::EndOfFile); [INFO] [stderr] 114 | | } [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: methods called `new` usually return `Self` [INFO] [stderr] --> src/lib.rs:95:2 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn new() -> VtErrorBuilder [INFO] [stderr] | _____^ [INFO] [stderr] 96 | | { [INFO] [stderr] 97 | | VtErrorBuilder [INFO] [stderr] 98 | | { [INFO] [stderr] ... | [INFO] [stderr] 102 | | } [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `violet`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "efeb8bc836845dcc0b35ded881ab809676b96280db1a59d2b95a47250f00707e"` [INFO] running `"docker" "rm" "-f" "efeb8bc836845dcc0b35ded881ab809676b96280db1a59d2b95a47250f00707e"` [INFO] [stdout] efeb8bc836845dcc0b35ded881ab809676b96280db1a59d2b95a47250f00707e