[INFO] fetching crate jsompiler_lexer 0.2.2... [INFO] linting jsompiler_lexer-0.2.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate jsompiler_lexer 0.2.2 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate jsompiler_lexer 0.2.2 [INFO] finished tweaking crates.io crate jsompiler_lexer 0.2.2 [INFO] tweaked toml for crates.io crate jsompiler_lexer 0.2.2 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate jsompiler_lexer 0.2.2 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate jsompiler_lexer 0.2.2 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded jsompiler_common v0.1.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6335597836bd421b59693260b4f2d5b318c7a6c8fb55e7e2389dce163461311b [INFO] running `Command { std: "docker" "start" "-a" "6335597836bd421b59693260b4f2d5b318c7a6c8fb55e7e2389dce163461311b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6335597836bd421b59693260b4f2d5b318c7a6c8fb55e7e2389dce163461311b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6335597836bd421b59693260b4f2d5b318c7a6c8fb55e7e2389dce163461311b", kill_on_drop: false }` [INFO] [stdout] 6335597836bd421b59693260b4f2d5b318c7a6c8fb55e7e2389dce163461311b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dd58c4d633a90c27792c5164190de82d926a36bdd3a3e880d9faff9b7a88cff0 [INFO] running `Command { std: "docker" "start" "-a" "dd58c4d633a90c27792c5164190de82d926a36bdd3a3e880d9faff9b7a88cff0", kill_on_drop: false }` [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking jsompiler_common v0.1.0 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking jsompiler_lexer v0.2.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/comment.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | return self.lex_operator_punctuation('/'); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 70 - return self.lex_operator_punctuation('/'); [INFO] [stdout] 70 + self.lex_operator_punctuation('/') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/identifier.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | if self.tokens.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tokens.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EOF` contains a capitalized acronym [INFO] [stdout] --> src/jsx/symbol.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | EOF, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Eof` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/jsx/mod.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | / return Err(Error { [INFO] [stdout] 105 | | error_kind: ErrorKind::LexerError, [INFO] [stdout] 106 | | message: format!("Unexpected character: {}", self.get_current_char()).to_string(), [INFO] [stdout] 107 | | line_number: self.line_number, [INFO] [stdout] 108 | | pos: start, [INFO] [stdout] 109 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 104 ~ Err(Error { [INFO] [stdout] 105 + error_kind: ErrorKind::LexerError, [INFO] [stdout] 106 + message: format!("Unexpected character: {}", self.get_current_char()).to_string(), [INFO] [stdout] 107 + line_number: self.line_number, [INFO] [stdout] 108 + pos: start, [INFO] [stdout] 109 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/jsx/mod.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | return Ok(longest_match); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 111 - return Ok(longest_match); [INFO] [stdout] 111 + Ok(longest_match) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/number.rs:66:62 [INFO] [stdout] | [INFO] [stdout] 66 | if is_octal && !lexeme_slice.starts_with('.') && lexeme_slice.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!lexeme_slice.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/number.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | if !lexeme_f64.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `lexeme_f64.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/number.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | / return Ok(Some(lexeme( [INFO] [stdout] 143 | | lexeme_slice, [INFO] [stdout] 144 | | Token::Literal(LiteralToken::Number(symbol::NumberLiteral::Value( [INFO] [stdout] 145 | | lexeme_u64 as f64, [INFO] [stdout] 146 | | ))), [INFO] [stdout] 147 | | ))); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 142 ~ Ok(Some(lexeme( [INFO] [stdout] 143 + lexeme_slice, [INFO] [stdout] 144 + Token::Literal(LiteralToken::Number(symbol::NumberLiteral::Value( [INFO] [stdout] 145 + lexeme_u64 as f64, [INFO] [stdout] 146 + ))), [INFO] [stdout] 147 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/number.rs:200:16 [INFO] [stdout] | [INFO] [stdout] 200 | if !token_num.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `token_num.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/number.rs:235:12 [INFO] [stdout] | [INFO] [stdout] 235 | if !token_num.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `token_num.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should use the `ends_with` method [INFO] [stdout] --> src/number.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | if token_string.chars().last() == Some('e') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `token_string.ends_with('e')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_last_cmp [INFO] [stdout] = note: `#[warn(clippy::chars_last_cmp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should use the `ends_with` method [INFO] [stdout] --> src/number.rs:229:12 [INFO] [stdout] | [INFO] [stdout] 229 | if omitted.chars().last() == Some('n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `omitted.ends_with('n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_last_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/number.rs:263:49 [INFO] [stdout] | [INFO] [stdout] 263 | fn omit_underscores_from_numbers(number_string: &String, is_decimal: bool) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 263 - fn omit_underscores_from_numbers(number_string: &String, is_decimal: bool) -> Option { [INFO] [stdout] 263 + fn omit_underscores_from_numbers(number_string: &str, is_decimal: bool) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | / if let Some(lexeme) = self.tokens.last() { [INFO] [stdout] 13 | | if lexeme.text.contains(".") { [INFO] [stdout] 14 | | return Err(Error { [INFO] [stdout] 15 | | pos: self.current, [INFO] [stdout] ... | [INFO] [stdout] 21 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 12 ~ if let Some(lexeme) = self.tokens.last() [INFO] [stdout] 13 ~ && lexeme.text.contains(".") { [INFO] [stdout] 14 | return Err(Error { [INFO] [stdout] ... [INFO] [stdout] 19 | }); [INFO] [stdout] 20 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | / if let Some(last_token) = self.tokens.last() { [INFO] [stdout] 31 | | if let Token::Operator(_) = last_token.token { [INFO] [stdout] 32 | | if self.get_current_char() == '/' { [INFO] [stdout] ... | [INFO] [stdout] 121 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 30 ~ if let Some(last_token) = self.tokens.last() [INFO] [stdout] 31 ~ && let Token::Operator(_) = last_token.token { [INFO] [stdout] 32 | if self.get_current_char() == '/' { [INFO] [stdout] ... [INFO] [stdout] 119 | } [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | / if let Token::Operator(_) = last_token.token { [INFO] [stdout] 32 | | if self.get_current_char() == '/' { [INFO] [stdout] 33 | | // Check for empty regex [INFO] [stdout] 34 | | if self.peek_next_char() == Some('/') { [INFO] [stdout] ... | [INFO] [stdout] 120 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 31 ~ if let Token::Operator(_) = last_token.token [INFO] [stdout] 32 ~ && self.get_current_char() == '/' { [INFO] [stdout] 33 | // Check for empty regex [INFO] [stdout] ... [INFO] [stdout] 118 | ))); [INFO] [stdout] 119 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:63:25 [INFO] [stdout] | [INFO] [stdout] 63 | / if self.current == self.start + 1 { [INFO] [stdout] 64 | | if c == '*' || c == '/' { [INFO] [stdout] 65 | | return Err(Error { [INFO] [stdout] 66 | | error_kind: ErrorKind::LexerError, [INFO] [stdout] ... | [INFO] [stdout] 72 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 63 ~ if self.current == self.start + 1 [INFO] [stdout] 64 ~ && (c == '*' || c == '/') { [INFO] [stdout] 65 | return Err(Error { [INFO] [stdout] ... [INFO] [stdout] 70 | }); [INFO] [stdout] 71 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/string.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | / return Ok(Some(lexeme( [INFO] [stdout] 79 | | "`".to_string(), [INFO] [stdout] 80 | | Token::Delimiter(DelimiterToken::Tilde), [INFO] [stdout] 81 | | ))); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 78 ~ Ok(Some(lexeme( [INFO] [stdout] 79 + "`".to_string(), [INFO] [stdout] 80 + Token::Delimiter(DelimiterToken::Tilde), [INFO] [stdout] 81 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/string.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | / if let Err(e) = self.process_char_in_string('`', &mut processed_string) { [INFO] [stdout] 18 | | return Err(e); [INFO] [stdout] 19 | | } [INFO] [stdout] | |_____________^ help: replace it with: `self.process_char_in_string('`', &mut processed_string)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/string.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | / if let Err(e) = self.process_char_in_string(ch, &mut processed_string) { [INFO] [stdout] 88 | | return Err(e); [INFO] [stdout] 89 | | } [INFO] [stdout] | |_____________^ help: replace it with: `self.process_char_in_string(ch, &mut processed_string)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/comment.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | return self.lex_operator_punctuation('/'); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 70 - return self.lex_operator_punctuation('/'); [INFO] [stdout] 70 + self.lex_operator_punctuation('/') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/identifier.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | if self.tokens.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tokens.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EOF` contains a capitalized acronym [INFO] [stdout] --> src/jsx/symbol.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | EOF, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Eof` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/jsx/mod.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | / return Err(Error { [INFO] [stdout] 105 | | error_kind: ErrorKind::LexerError, [INFO] [stdout] 106 | | message: format!("Unexpected character: {}", self.get_current_char()).to_string(), [INFO] [stdout] 107 | | line_number: self.line_number, [INFO] [stdout] 108 | | pos: start, [INFO] [stdout] 109 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 104 ~ Err(Error { [INFO] [stdout] 105 + error_kind: ErrorKind::LexerError, [INFO] [stdout] 106 + message: format!("Unexpected character: {}", self.get_current_char()).to_string(), [INFO] [stdout] 107 + line_number: self.line_number, [INFO] [stdout] 108 + pos: start, [INFO] [stdout] 109 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/jsx/mod.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | return Ok(longest_match); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 111 - return Ok(longest_match); [INFO] [stdout] 111 + Ok(longest_match) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/number.rs:66:62 [INFO] [stdout] | [INFO] [stdout] 66 | if is_octal && !lexeme_slice.starts_with('.') && lexeme_slice.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!lexeme_slice.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/number.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | if !lexeme_f64.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `lexeme_f64.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/number.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | / return Ok(Some(lexeme( [INFO] [stdout] 143 | | lexeme_slice, [INFO] [stdout] 144 | | Token::Literal(LiteralToken::Number(symbol::NumberLiteral::Value( [INFO] [stdout] 145 | | lexeme_u64 as f64, [INFO] [stdout] 146 | | ))), [INFO] [stdout] 147 | | ))); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 142 ~ Ok(Some(lexeme( [INFO] [stdout] 143 + lexeme_slice, [INFO] [stdout] 144 + Token::Literal(LiteralToken::Number(symbol::NumberLiteral::Value( [INFO] [stdout] 145 + lexeme_u64 as f64, [INFO] [stdout] 146 + ))), [INFO] [stdout] 147 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/number.rs:200:16 [INFO] [stdout] | [INFO] [stdout] 200 | if !token_num.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `token_num.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/number.rs:235:12 [INFO] [stdout] | [INFO] [stdout] 235 | if !token_num.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `token_num.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should use the `ends_with` method [INFO] [stdout] --> src/number.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 168 | if token_string.chars().last() == Some('e') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `token_string.ends_with('e')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_last_cmp [INFO] [stdout] = note: `#[warn(clippy::chars_last_cmp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should use the `ends_with` method [INFO] [stdout] --> src/number.rs:229:12 [INFO] [stdout] | [INFO] [stdout] 229 | if omitted.chars().last() == Some('n') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `omitted.ends_with('n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_last_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/number.rs:263:49 [INFO] [stdout] | [INFO] [stdout] 263 | fn omit_underscores_from_numbers(number_string: &String, is_decimal: bool) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 263 - fn omit_underscores_from_numbers(number_string: &String, is_decimal: bool) -> Option { [INFO] [stdout] 263 + fn omit_underscores_from_numbers(number_string: &str, is_decimal: bool) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | / if let Some(lexeme) = self.tokens.last() { [INFO] [stdout] 13 | | if lexeme.text.contains(".") { [INFO] [stdout] 14 | | return Err(Error { [INFO] [stdout] 15 | | pos: self.current, [INFO] [stdout] ... | [INFO] [stdout] 21 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 12 ~ if let Some(lexeme) = self.tokens.last() [INFO] [stdout] 13 ~ && lexeme.text.contains(".") { [INFO] [stdout] 14 | return Err(Error { [INFO] [stdout] ... [INFO] [stdout] 19 | }); [INFO] [stdout] 20 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | / if let Some(last_token) = self.tokens.last() { [INFO] [stdout] 31 | | if let Token::Operator(_) = last_token.token { [INFO] [stdout] 32 | | if self.get_current_char() == '/' { [INFO] [stdout] ... | [INFO] [stdout] 121 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 30 ~ if let Some(last_token) = self.tokens.last() [INFO] [stdout] 31 ~ && let Token::Operator(_) = last_token.token { [INFO] [stdout] 32 | if self.get_current_char() == '/' { [INFO] [stdout] ... [INFO] [stdout] 119 | } [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | / if let Token::Operator(_) = last_token.token { [INFO] [stdout] 32 | | if self.get_current_char() == '/' { [INFO] [stdout] 33 | | // Check for empty regex [INFO] [stdout] 34 | | if self.peek_next_char() == Some('/') { [INFO] [stdout] ... | [INFO] [stdout] 120 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 31 ~ if let Token::Operator(_) = last_token.token [INFO] [stdout] 32 ~ && self.get_current_char() == '/' { [INFO] [stdout] 33 | // Check for empty regex [INFO] [stdout] ... [INFO] [stdout] 118 | ))); [INFO] [stdout] 119 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/operator_punctuation.rs:63:25 [INFO] [stdout] | [INFO] [stdout] 63 | / if self.current == self.start + 1 { [INFO] [stdout] 64 | | if c == '*' || c == '/' { [INFO] [stdout] 65 | | return Err(Error { [INFO] [stdout] 66 | | error_kind: ErrorKind::LexerError, [INFO] [stdout] ... | [INFO] [stdout] 72 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 63 ~ if self.current == self.start + 1 [INFO] [stdout] 64 ~ && (c == '*' || c == '/') { [INFO] [stdout] 65 | return Err(Error { [INFO] [stdout] ... [INFO] [stdout] 70 | }); [INFO] [stdout] 71 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/string.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | / return Ok(Some(lexeme( [INFO] [stdout] 79 | | "`".to_string(), [INFO] [stdout] 80 | | Token::Delimiter(DelimiterToken::Tilde), [INFO] [stdout] 81 | | ))); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 78 ~ Ok(Some(lexeme( [INFO] [stdout] 79 + "`".to_string(), [INFO] [stdout] 80 + Token::Delimiter(DelimiterToken::Tilde), [INFO] [stdout] 81 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/string.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | / if let Err(e) = self.process_char_in_string('`', &mut processed_string) { [INFO] [stdout] 18 | | return Err(e); [INFO] [stdout] 19 | | } [INFO] [stdout] | |_____________^ help: replace it with: `self.process_char_in_string('`', &mut processed_string)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/string.rs:87:13 [INFO] [stdout] | [INFO] [stdout] 87 | / if let Err(e) = self.process_char_in_string(ch, &mut processed_string) { [INFO] [stdout] 88 | | return Err(e); [INFO] [stdout] 89 | | } [INFO] [stdout] | |_____________^ help: replace it with: `self.process_char_in_string(ch, &mut processed_string)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.63s [INFO] running `Command { std: "docker" "inspect" "dd58c4d633a90c27792c5164190de82d926a36bdd3a3e880d9faff9b7a88cff0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dd58c4d633a90c27792c5164190de82d926a36bdd3a3e880d9faff9b7a88cff0", kill_on_drop: false }` [INFO] [stdout] dd58c4d633a90c27792c5164190de82d926a36bdd3a3e880d9faff9b7a88cff0