[INFO] cloning repository https://github.com/UniverseLambda/ktns-llvm [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/UniverseLambda/ktns-llvm" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FUniverseLambda%2Fktns-llvm", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FUniverseLambda%2Fktns-llvm'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 39aece82060aa787198687dbb541265336afd5d2 [INFO] linting UniverseLambda/ktns-llvm against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FUniverseLambda%2Fktns-llvm" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/UniverseLambda/ktns-llvm [INFO] finished tweaking git repo https://github.com/UniverseLambda/ktns-llvm [INFO] tweaked toml for git repo https://github.com/UniverseLambda/ktns-llvm written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/UniverseLambda/ktns-llvm 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 git repo https://github.com/UniverseLambda/ktns-llvm 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] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded llvm-sys v130.0.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] 9fabd9abd47d008f807d581dd559fecc87cad461f68799727c147af6b670a58f [INFO] running `Command { std: "docker" "start" "-a" "9fabd9abd47d008f807d581dd559fecc87cad461f68799727c147af6b670a58f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9fabd9abd47d008f807d581dd559fecc87cad461f68799727c147af6b670a58f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9fabd9abd47d008f807d581dd559fecc87cad461f68799727c147af6b670a58f", kill_on_drop: false }` [INFO] [stdout] 9fabd9abd47d008f807d581dd559fecc87cad461f68799727c147af6b670a58f [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] 509f2c38d2bdb4b62140c0a39855c02c374006ad66b3ee621aea015f36bf76bf [INFO] running `Command { std: "docker" "start" "-a" "509f2c38d2bdb4b62140c0a39855c02c374006ad66b3ee621aea015f36bf76bf", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling ucd-trie v0.1.3 [INFO] [stderr] Compiling libc v0.2.108 [INFO] [stderr] Compiling pest v2.1.3 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling semver-parser v0.10.2 [INFO] [stderr] Compiling semver v0.11.0 [INFO] [stderr] Compiling regex v1.6.0 [INFO] [stderr] Compiling llvm-sys v130.0.0 [INFO] [stderr] Checking katanoisi-llvm v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * This file is part of Katanoisi. [INFO] [stdout] 3 | | * [INFO] [stdout] 4 | | * Katanoisi is free software: you can redistribute it and/or modify [INFO] [stdout] ... | [INFO] [stdout] 16 | | */ [INFO] [stdout] 17 | | [INFO] [stdout] | |_^ [INFO] [stdout] 18 | mod lexer; [INFO] [stdout] | --------- the comment documents this module [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lexer.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * This file is part of Katanoisi. [INFO] [stdout] 3 | | * [INFO] [stdout] 4 | | * Katanoisi is free software: you can redistribute it and/or modify [INFO] [stdout] ... | [INFO] [stdout] 16 | | */ [INFO] [stdout] 17 | | [INFO] [stdout] | |_^ [INFO] [stdout] 18 | use std::io::Read; [INFO] [stdout] | - the comment documents this `use` import [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * This file is part of Katanoisi. [INFO] [stdout] 3 | | * [INFO] [stdout] 4 | | * Katanoisi is free software: you can redistribute it and/or modify [INFO] [stdout] ... | [INFO] [stdout] 16 | | */ [INFO] [stdout] 17 | | [INFO] [stdout] | |_^ [INFO] [stdout] 18 | mod lexer; [INFO] [stdout] | --------- the comment documents this module [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lexer.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * This file is part of Katanoisi. [INFO] [stdout] 3 | | * [INFO] [stdout] 4 | | * Katanoisi is free software: you can redistribute it and/or modify [INFO] [stdout] ... | [INFO] [stdout] 16 | | */ [INFO] [stdout] 17 | | [INFO] [stdout] | |_^ [INFO] [stdout] 18 | use std::io::Read; [INFO] [stdout] | - the comment documents this `use` import [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Unknown` and `CharLiteral` are never constructed [INFO] [stdout] --> src/lexer.rs:24:2 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum TokenType { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 24 | Unknown, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | CharLiteral, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `token_type` is never read [INFO] [stdout] --> src/lexer.rs:34:6 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct Token { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 34 | pub token_type: TokenType, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Unknown` and `InvalidToken` are never constructed [INFO] [stdout] --> src/lexer.rs:40:2 [INFO] [stdout] | [INFO] [stdout] 39 | pub enum Error { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 40 | Unknown, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | InvalidToken, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `file_path` is never read [INFO] [stdout] --> src/lexer.rs:76:2 [INFO] [stdout] | [INFO] [stdout] 75 | pub struct Lexer { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 76 | file_path: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/lexer.rs:41:2 [INFO] [stdout] | [INFO] [stdout] 41 | InternalError, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/lexer.rs:44:2 [INFO] [stdout] | [INFO] [stdout] 44 | DecoderError, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap_err` on `res` after checking its variant with `is_err` [INFO] [stdout] --> src/lexer.rs:114:16 [INFO] [stdout] | [INFO] [stdout] 113 | if res.is_err() { [INFO] [stdout] | --------------- help: try: `if let Err() = res` [INFO] [stdout] 114 | return Err(res.unwrap_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/lexer.rs:165:6 [INFO] [stdout] | [INFO] [stdout] 165 | / if let Result::Err(error) = self.next_char() { [INFO] [stdout] 166 | | return Err(error); [INFO] [stdout] 167 | | } [INFO] [stdout] | |_____________________^ help: replace it with: `self.next_char()?` [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: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:186:3 [INFO] [stdout] | [INFO] [stdout] 186 | return Ok(false); [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] 186 - return Ok(false); [INFO] [stdout] 186 + Ok(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:254:6 [INFO] [stdout] | [INFO] [stdout] 254 | if (buff.starts_with('<') && c == '=') || (buff.starts_with('>') && c == '=') || (buff.starts_with('/') && c == '*') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 254 - if (buff.starts_with('<') && c == '=') || (buff.starts_with('>') && c == '=') || (buff.starts_with('/') && c == '*') { [INFO] [stdout] 254 + if !(c != '=' || !buff.starts_with('<') && !buff.starts_with('>')) || (buff.starts_with('/') && c == '*') { [INFO] [stdout] | [INFO] [stdout] 254 - if (buff.starts_with('<') && c == '=') || (buff.starts_with('>') && c == '=') || (buff.starts_with('/') && c == '*') { [INFO] [stdout] 254 + if (buff.starts_with('>') || buff.starts_with('<')) && c == '=' || (buff.starts_with('/') && c == '*') { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:274:38 [INFO] [stdout] | [INFO] [stdout] 274 | fn finalize_number(&mut self, buff: &mut String) -> Result { [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] 274 ~ fn finalize_number(&mut self, buff: &mut str) -> Result { [INFO] [stdout] 275 ~ Ok(Token { content: buff.to_owned(), token_type: TokenType::IntegerLiteral }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:278:38 [INFO] [stdout] | [INFO] [stdout] 278 | fn finalize_string(&mut self, buff: &mut String) -> Result { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 278 ~ fn finalize_string(&mut self, buff: &mut str) -> Result { [INFO] [stdout] 279 ~ Ok(Token { content: buff.to_owned(), token_type: TokenType::StringLiteral }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:282:40 [INFO] [stdout] | [INFO] [stdout] 282 | fn finalize_operator(&mut self, buff: &mut String) -> Result { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 282 ~ fn finalize_operator(&mut self, buff: &mut str) -> Result { [INFO] [stdout] 283 ~ Ok(Token { content: buff.to_owned(), token_type: TokenType::Operator }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:293:4 [INFO] [stdout] | [INFO] [stdout] 293 | return Err(Error::EndOfFile); [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] 293 - return Err(Error::EndOfFile); [INFO] [stdout] 293 + Err(Error::EndOfFile) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:336:4 [INFO] [stdout] | [INFO] [stdout] 336 | return Ok(()); [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] 336 - return Ok(()); [INFO] [stdout] 336 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lexer.rs:343:2 [INFO] [stdout] | [INFO] [stdout] 343 | / match c { [INFO] [stdout] 344 | | '+' | '-' | '*' | '/' [INFO] [stdout] 345 | | | ',' | '.' [INFO] [stdout] 346 | | | '=' | '>' | '<' | '|' | '&' [INFO] [stdout] ... | [INFO] [stdout] 349 | | _ => false [INFO] [stdout] 350 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 343 ~ matches!(c, '+' | '-' | '*' | '/' [INFO] [stdout] 344 ~ | ',' | '.' [INFO] [stdout] 345 ~ | '=' | '>' | '<' | '|' | '&' [INFO] [stdout] 346 ~ | '?' | ':' [INFO] [stdout] 347 ~ | ';' | '(' | ')' | '[' | ']' | '{' | '}') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/main.rs:35:36 [INFO] [stdout] | [INFO] [stdout] 35 | println!("Lexer error: {}", err.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Unknown` and `CharLiteral` are never constructed [INFO] [stdout] --> src/lexer.rs:24:2 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum TokenType { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 24 | Unknown, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | CharLiteral, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `token_type` is never read [INFO] [stdout] --> src/lexer.rs:34:6 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct Token { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 34 | pub token_type: TokenType, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Unknown` and `InvalidToken` are never constructed [INFO] [stdout] --> src/lexer.rs:40:2 [INFO] [stdout] | [INFO] [stdout] 39 | pub enum Error { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 40 | Unknown, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | InvalidToken, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `file_path` is never read [INFO] [stdout] --> src/lexer.rs:76:2 [INFO] [stdout] | [INFO] [stdout] 75 | pub struct Lexer { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 76 | file_path: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/lexer.rs:41:2 [INFO] [stdout] | [INFO] [stdout] 41 | InternalError, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/lexer.rs:44:2 [INFO] [stdout] | [INFO] [stdout] 44 | DecoderError, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap_err` on `res` after checking its variant with `is_err` [INFO] [stdout] --> src/lexer.rs:114:16 [INFO] [stdout] | [INFO] [stdout] 113 | if res.is_err() { [INFO] [stdout] | --------------- help: try: `if let Err() = res` [INFO] [stdout] 114 | return Err(res.unwrap_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/lexer.rs:165:6 [INFO] [stdout] | [INFO] [stdout] 165 | / if let Result::Err(error) = self.next_char() { [INFO] [stdout] 166 | | return Err(error); [INFO] [stdout] 167 | | } [INFO] [stdout] | |_____________________^ help: replace it with: `self.next_char()?` [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: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:186:3 [INFO] [stdout] | [INFO] [stdout] 186 | return Ok(false); [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] 186 - return Ok(false); [INFO] [stdout] 186 + Ok(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:254:6 [INFO] [stdout] | [INFO] [stdout] 254 | if (buff.starts_with('<') && c == '=') || (buff.starts_with('>') && c == '=') || (buff.starts_with('/') && c == '*') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 254 - if (buff.starts_with('<') && c == '=') || (buff.starts_with('>') && c == '=') || (buff.starts_with('/') && c == '*') { [INFO] [stdout] 254 + if !(c != '=' || !buff.starts_with('<') && !buff.starts_with('>')) || (buff.starts_with('/') && c == '*') { [INFO] [stdout] | [INFO] [stdout] 254 - if (buff.starts_with('<') && c == '=') || (buff.starts_with('>') && c == '=') || (buff.starts_with('/') && c == '*') { [INFO] [stdout] 254 + if (buff.starts_with('>') || buff.starts_with('<')) && c == '=' || (buff.starts_with('/') && c == '*') { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:274:38 [INFO] [stdout] | [INFO] [stdout] 274 | fn finalize_number(&mut self, buff: &mut String) -> Result { [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] 274 ~ fn finalize_number(&mut self, buff: &mut str) -> Result { [INFO] [stdout] 275 ~ Ok(Token { content: buff.to_owned(), token_type: TokenType::IntegerLiteral }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:278:38 [INFO] [stdout] | [INFO] [stdout] 278 | fn finalize_string(&mut self, buff: &mut String) -> Result { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 278 ~ fn finalize_string(&mut self, buff: &mut str) -> Result { [INFO] [stdout] 279 ~ Ok(Token { content: buff.to_owned(), token_type: TokenType::StringLiteral }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:282:40 [INFO] [stdout] | [INFO] [stdout] 282 | fn finalize_operator(&mut self, buff: &mut String) -> Result { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 282 ~ fn finalize_operator(&mut self, buff: &mut str) -> Result { [INFO] [stdout] 283 ~ Ok(Token { content: buff.to_owned(), token_type: TokenType::Operator }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:293:4 [INFO] [stdout] | [INFO] [stdout] 293 | return Err(Error::EndOfFile); [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] 293 - return Err(Error::EndOfFile); [INFO] [stdout] 293 + Err(Error::EndOfFile) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:336:4 [INFO] [stdout] | [INFO] [stdout] 336 | return Ok(()); [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] 336 - return Ok(()); [INFO] [stdout] 336 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lexer.rs:343:2 [INFO] [stdout] | [INFO] [stdout] 343 | / match c { [INFO] [stdout] 344 | | '+' | '-' | '*' | '/' [INFO] [stdout] 345 | | | ',' | '.' [INFO] [stdout] 346 | | | '=' | '>' | '<' | '|' | '&' [INFO] [stdout] ... | [INFO] [stdout] 349 | | _ => false [INFO] [stdout] 350 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 343 ~ matches!(c, '+' | '-' | '*' | '/' [INFO] [stdout] 344 ~ | ',' | '.' [INFO] [stdout] 345 ~ | '=' | '>' | '<' | '|' | '&' [INFO] [stdout] 346 ~ | '?' | ':' [INFO] [stdout] 347 ~ | ';' | '(' | ')' | '[' | ']' | '{' | '}') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/main.rs:35:36 [INFO] [stdout] | [INFO] [stdout] 35 | println!("Lexer error: {}", err.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.69s [INFO] running `Command { std: "docker" "inspect" "509f2c38d2bdb4b62140c0a39855c02c374006ad66b3ee621aea015f36bf76bf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "509f2c38d2bdb4b62140c0a39855c02c374006ad66b3ee621aea015f36bf76bf", kill_on_drop: false }` [INFO] [stdout] 509f2c38d2bdb4b62140c0a39855c02c374006ad66b3ee621aea015f36bf76bf