[INFO] cloning repository https://github.com/physine/jrepl [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/physine/jrepl" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fphysine%2Fjrepl", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fphysine%2Fjrepl'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0daf3e597c396a95b2a69035a73f941812a7b0a1 [INFO] linting physine/jrepl against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fphysine%2Fjrepl" "/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/physine/jrepl [INFO] finished tweaking git repo https://github.com/physine/jrepl [INFO] tweaked toml for git repo https://github.com/physine/jrepl written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/physine/jrepl 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/physine/jrepl 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] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded vte v0.14.1 [INFO] [stderr] Downloaded nibble_vec v0.1.0 [INFO] [stderr] Downloaded strip-ansi-escapes v0.2.1 [INFO] [stderr] Downloaded fd-lock v4.0.4 [INFO] [stderr] Downloaded endian-type v0.1.2 [INFO] [stderr] Downloaded nu-ansi-term v0.50.1 [INFO] [stderr] Downloaded clap_derive v4.5.41 [INFO] [stderr] Downloaded clap v4.5.41 [INFO] [stderr] Downloaded unicode-width v0.2.1 [INFO] [stderr] Downloaded cc v1.2.29 [INFO] [stderr] Downloaded reedline v0.40.0 [INFO] [stderr] Downloaded clap_builder v4.5.41 [INFO] [stderr] Downloaded rustyline v17.0.0 [INFO] [stderr] Downloaded radix_trie v0.2.1 [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] 912633d7f666e5a37882f8a78561211f18ea1de3796c4dcfe54c336e96713161 [INFO] running `Command { std: "docker" "start" "-a" "912633d7f666e5a37882f8a78561211f18ea1de3796c4dcfe54c336e96713161", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "912633d7f666e5a37882f8a78561211f18ea1de3796c4dcfe54c336e96713161", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "912633d7f666e5a37882f8a78561211f18ea1de3796c4dcfe54c336e96713161", kill_on_drop: false }` [INFO] [stdout] 912633d7f666e5a37882f8a78561211f18ea1de3796c4dcfe54c336e96713161 [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] e8d24a7bfa4298802a8a92000264959b31403efc998a5933c9ad4dbc21f4592b [INFO] running `Command { std: "docker" "start" "-a" "e8d24a7bfa4298802a8a92000264959b31403efc998a5933c9ad4dbc21f4592b", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Compiling rustix v1.0.7 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling rustversion v1.0.21 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Checking nibble_vec v0.1.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking vte v0.14.1 [INFO] [stderr] Checking endian-type v0.1.2 [INFO] [stderr] Checking unicode-segmentation v1.12.0 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking iana-time-zone v0.1.63 [INFO] [stderr] Checking unicode-width v0.2.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking clap_builder v4.5.41 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking radix_trie v0.2.1 [INFO] [stderr] Checking strip-ansi-escapes v0.2.1 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking nu-ansi-term v0.50.1 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling clap_derive v4.5.41 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking thiserror v2.0.12 [INFO] [stderr] Checking clap v4.5.41 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking fd-lock v4.0.4 [INFO] [stderr] Checking reedline v0.40.0 [INFO] [stderr] Checking rustyline v17.0.0 [INFO] [stderr] Checking jrepl v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `clap::builder::Str` [INFO] [stdout] --> src/command_interpreter/lexer.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use clap::builder::Str; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `regex::Regex` [INFO] [stdout] --> src/command_interpreter/parser.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use regex::Regex; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `clap::builder` [INFO] [stdout] --> src/statics/commands.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use clap::builder; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `appstate::State` [INFO] [stdout] --> src/statics/commands.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::{appstate::State, command_interpreter::command::Command}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `eval` [INFO] [stdout] --> src/statics/commands.rs:14:27 [INFO] [stdout] | [INFO] [stdout] 14 | command_interpreter::{eval, types::Expr}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `clap::builder::Str` [INFO] [stdout] --> src/command_interpreter/lexer.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use clap::builder::Str; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `regex::Regex` [INFO] [stdout] --> src/command_interpreter/parser.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use regex::Regex; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `clap::builder` [INFO] [stdout] --> src/statics/commands.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use clap::builder; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `appstate::State` [INFO] [stdout] --> src/statics/commands.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::{appstate::State, command_interpreter::command::Command}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `eval` [INFO] [stdout] --> src/statics/commands.rs:14:27 [INFO] [stdout] | [INFO] [stdout] 14 | command_interpreter::{eval, types::Expr}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/command_interpreter/validation.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | _ => Ok(acc), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/command_interpreter/validation.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 58 | Context::Init => match token { [INFO] [stdout] | ------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 73 | Context::List => match token { [INFO] [stdout] | ------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 104 | _ => Ok(acc), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/main.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | let args = Args::parse(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `appstate::appstate::Editor` is more private than the item `appstate::appstate::StateBuilder::editor` [INFO] [stdout] --> src/appstate/appstate.rs:153:5 [INFO] [stdout] | [INFO] [stdout] 153 | pub editor: Editor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ field `appstate::appstate::StateBuilder::editor` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `appstate::appstate::Editor` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/appstate/appstate.rs:135:1 [INFO] [stdout] | [INFO] [stdout] 135 | struct Editor { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AST` is never constructed [INFO] [stdout] --> src/command_interpreter/types.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct AST { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Delimiter` is never used [INFO] [stdout] --> src/command_interpreter/validation.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | enum Delimiter {} [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `is` is never used [INFO] [stdout] --> src/command_interpreter/validation.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl Delimiter { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] 20 | pub fn is(token: &str) -> bool { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Context` is never used [INFO] [stdout] --> src/command_interpreter/validation.rs:26:6 [INFO] [stdout] | [INFO] [stdout] 26 | enum Context { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Accumulator` is never constructed [INFO] [stdout] --> src/command_interpreter/validation.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | struct Accumulator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `context_stack_peek` are never used [INFO] [stdout] --> src/command_interpreter/validation.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 39 | impl Accumulator { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 40 | fn new() -> Accumulator { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | fn context_stack_peek(&self) -> Context { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transition_table` is never used [INFO] [stdout] --> src/command_interpreter/validation.rs:56:4 [INFO] [stdout] | [INFO] [stdout] 56 | fn transition_table(mut acc: Accumulator, token: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_syntax` is never used [INFO] [stdout] --> src/command_interpreter/validation.rs:108:8 [INFO] [stdout] | [INFO] [stdout] 108 | pub fn verify_syntax(tokens: &[String]) -> Result<(), JreplErr> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_json` is never used [INFO] [stdout] --> src/io/read.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn extract_json(file_paths: &[String]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `user_input` is never used [INFO] [stdout] --> src/io/read.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn user_input() -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/appstate/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod appstate; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/command_interpreter/command.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | pub eval_fn_ptr: Box Result>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/command_interpreter/eval.rs:25:17 [INFO] [stdout] | [INFO] [stdout] 25 | / if let Expr::Symbol(s) = &expr_list[0] { [INFO] [stdout] 26 | | if let Ok(cmd) = app_state.get_command_from_symbol(s) { [INFO] [stdout] 27 | | return (cmd.eval_fn_ptr)(app_state, &[]); [INFO] [stdout] 28 | | } [INFO] [stdout] 29 | | } [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] 25 ~ if let Expr::Symbol(s) = &expr_list[0] [INFO] [stdout] 26 ~ && let Ok(cmd) = app_state.get_command_from_symbol(s) { [INFO] [stdout] 27 | return (cmd.eval_fn_ptr)(app_state, &[]); [INFO] [stdout] 28 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/interpreter.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | Ok(effect) => return effect, [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] 19 ~ Ok(effect) => effect, [INFO] [stdout] 20 | Err(err) => return Effect::from_err(err), [INFO] [stdout] 21 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/interpreter.rs:20:21 [INFO] [stdout] | [INFO] [stdout] 20 | Err(err) => return Effect::from_err(err), [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] 20 ~ Err(err) => Effect::from_err(err), [INFO] [stdout] 21 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/command_interpreter/lexer.rs:9:39 [INFO] [stdout] | [INFO] [stdout] 9 | .try_fold(Accumulator::new(), |acc, c| transition_table(acc, c)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `transition_table` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/command_interpreter/lexer.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | let acc = user_input [INFO] [stdout] | _______________^ [INFO] [stdout] 7 | | .chars() [INFO] [stdout] 8 | | .into_iter() [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 6 ~ let acc = user_input [INFO] [stdout] 7 + .chars() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/lexer.rs:42:17 [INFO] [stdout] | [INFO] [stdout] 42 | / return Err(JreplErr::InvalidSymbol(format!( [INFO] [stdout] 43 | | "Found Invalid char at start of user_input: '{}'.", [INFO] [stdout] 44 | | c [INFO] [stdout] 45 | | ))); [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] 42 ~ Err(JreplErr::InvalidSymbol(format!( [INFO] [stdout] 43 + "Found Invalid char at start of user_input: '{}'.", [INFO] [stdout] 44 + c [INFO] [stdout] 45 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/command_interpreter/lexer.rs:199:54 [INFO] [stdout] | [INFO] [stdout] 199 | acc.tokens.push(Token::NumberLiteral(String::from(acc.memory.clone()))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `acc.memory.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/command_interpreter/lexer.rs:334:47 [INFO] [stdout] | [INFO] [stdout] 334 | acc.tokens.push(Token::Symbol(String::from(acc.memory.clone()))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `acc.memory.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/command_interpreter/lexer.rs:341:47 [INFO] [stdout] | [INFO] [stdout] 341 | acc.tokens.push(Token::Symbol(String::from(acc.memory.clone()))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `acc.memory.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/lexer.rs:383:9 [INFO] [stdout] | [INFO] [stdout] 383 | return self.context_stack.last().unwrap().clone(); [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] 383 - return self.context_stack.last().unwrap().clone(); [INFO] [stdout] 383 + self.context_stack.last().unwrap().clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `AST` contains a capitalized acronym [INFO] [stdout] --> src/command_interpreter/types.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct AST { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ast` [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: accessing last element with `self.context_stack.get(self.context_stack.len() - 1)` [INFO] [stdout] --> src/command_interpreter/validation.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | self.context_stack.get(self.context_stack.len() - 1).unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.context_stack.last()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_last_with_len [INFO] [stdout] = note: `#[warn(clippy::get_last_with_len)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:64:17 [INFO] [stdout] | [INFO] [stdout] 64 | return Ok(acc); [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] 64 - return Ok(acc); [INFO] [stdout] 64 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | return Ok(acc); [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 - return Ok(acc); [INFO] [stdout] 78 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:85:17 [INFO] [stdout] | [INFO] [stdout] 85 | return Ok(acc); [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] 85 - return Ok(acc); [INFO] [stdout] 85 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | return Ok(acc); [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] 91 - return Ok(acc); [INFO] [stdout] 91 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/command_interpreter/validation.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / if let Ok(acc) = acc { [INFO] [stdout] 118 | | if !acc.delimiter_stack.is_empty() { [INFO] [stdout] 119 | | println!("acc.delimiter_stack: {:?}", acc.delimiter_stack); [INFO] [stdout] 120 | | return Err(JreplErr::InvalidSyntax( [INFO] [stdout] ... | [INFO] [stdout] 124 | | } [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] 117 ~ if let Ok(acc) = acc [INFO] [stdout] 118 ~ && !acc.delimiter_stack.is_empty() { [INFO] [stdout] 119 | println!("acc.delimiter_stack: {:?}", acc.delimiter_stack); [INFO] [stdout] ... [INFO] [stdout] 122 | )); [INFO] [stdout] 123 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/errors/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod errors; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `effect1` [INFO] [stdout] --> src/command_interpreter/interpreter.rs:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | let effect1 = run("(defn f (ld \"temp.json\"))"); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effect1` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `effect2` [INFO] [stdout] --> src/command_interpreter/interpreter.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let effect2 = run("(f)"); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_effect2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/command_interpreter/validation.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | _ => Ok(acc), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/command_interpreter/validation.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 58 | Context::Init => match token { [INFO] [stdout] | ------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 73 | Context::List => match token { [INFO] [stdout] | ------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 104 | _ => Ok(acc), [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/main.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | let args = Args::parse(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `appstate::appstate::Editor` is more private than the item `appstate::appstate::StateBuilder::editor` [INFO] [stdout] --> src/appstate/appstate.rs:153:5 [INFO] [stdout] | [INFO] [stdout] 153 | pub editor: Editor, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ field `appstate::appstate::StateBuilder::editor` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `appstate::appstate::Editor` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/appstate/appstate.rs:135:1 [INFO] [stdout] | [INFO] [stdout] 135 | struct Editor { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AST` is never constructed [INFO] [stdout] --> src/command_interpreter/types.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct AST { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_json` is never used [INFO] [stdout] --> src/io/read.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn extract_json(file_paths: &[String]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `user_input` is never used [INFO] [stdout] --> src/io/read.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn user_input() -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/appstate/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod appstate; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/command_interpreter/command.rs:36:22 [INFO] [stdout] | [INFO] [stdout] 36 | pub eval_fn_ptr: Box Result>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/command_interpreter/eval.rs:25:17 [INFO] [stdout] | [INFO] [stdout] 25 | / if let Expr::Symbol(s) = &expr_list[0] { [INFO] [stdout] 26 | | if let Ok(cmd) = app_state.get_command_from_symbol(s) { [INFO] [stdout] 27 | | return (cmd.eval_fn_ptr)(app_state, &[]); [INFO] [stdout] 28 | | } [INFO] [stdout] 29 | | } [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] 25 ~ if let Expr::Symbol(s) = &expr_list[0] [INFO] [stdout] 26 ~ && let Ok(cmd) = app_state.get_command_from_symbol(s) { [INFO] [stdout] 27 | return (cmd.eval_fn_ptr)(app_state, &[]); [INFO] [stdout] 28 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/interpreter.rs:19:23 [INFO] [stdout] | [INFO] [stdout] 19 | Ok(effect) => return effect, [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] 19 ~ Ok(effect) => effect, [INFO] [stdout] 20 | Err(err) => return Effect::from_err(err), [INFO] [stdout] 21 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/interpreter.rs:20:21 [INFO] [stdout] | [INFO] [stdout] 20 | Err(err) => return Effect::from_err(err), [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] 20 ~ Err(err) => Effect::from_err(err), [INFO] [stdout] 21 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/command_interpreter/interpreter.rs:48:17 [INFO] [stdout] | [INFO] [stdout] 48 | assert!(!effect.eval_value.is_none()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `effect.eval_value.is_some()` [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: redundant closure [INFO] [stdout] --> src/command_interpreter/lexer.rs:9:39 [INFO] [stdout] | [INFO] [stdout] 9 | .try_fold(Accumulator::new(), |acc, c| transition_table(acc, c)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `transition_table` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::Chars<'_>` [INFO] [stdout] --> src/command_interpreter/lexer.rs:6:15 [INFO] [stdout] | [INFO] [stdout] 6 | let acc = user_input [INFO] [stdout] | _______________^ [INFO] [stdout] 7 | | .chars() [INFO] [stdout] 8 | | .into_iter() [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 6 ~ let acc = user_input [INFO] [stdout] 7 + .chars() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/lexer.rs:42:17 [INFO] [stdout] | [INFO] [stdout] 42 | / return Err(JreplErr::InvalidSymbol(format!( [INFO] [stdout] 43 | | "Found Invalid char at start of user_input: '{}'.", [INFO] [stdout] 44 | | c [INFO] [stdout] 45 | | ))); [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] 42 ~ Err(JreplErr::InvalidSymbol(format!( [INFO] [stdout] 43 + "Found Invalid char at start of user_input: '{}'.", [INFO] [stdout] 44 + c [INFO] [stdout] 45 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/command_interpreter/lexer.rs:199:54 [INFO] [stdout] | [INFO] [stdout] 199 | acc.tokens.push(Token::NumberLiteral(String::from(acc.memory.clone()))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `acc.memory.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/command_interpreter/lexer.rs:334:47 [INFO] [stdout] | [INFO] [stdout] 334 | acc.tokens.push(Token::Symbol(String::from(acc.memory.clone()))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `acc.memory.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/command_interpreter/lexer.rs:341:47 [INFO] [stdout] | [INFO] [stdout] 341 | acc.tokens.push(Token::Symbol(String::from(acc.memory.clone()))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `acc.memory.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/lexer.rs:383:9 [INFO] [stdout] | [INFO] [stdout] 383 | return self.context_stack.last().unwrap().clone(); [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] 383 - return self.context_stack.last().unwrap().clone(); [INFO] [stdout] 383 + self.context_stack.last().unwrap().clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `AST` contains a capitalized acronym [INFO] [stdout] --> src/command_interpreter/types.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct AST { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Ast` [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: accessing last element with `self.context_stack.get(self.context_stack.len() - 1)` [INFO] [stdout] --> src/command_interpreter/validation.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | self.context_stack.get(self.context_stack.len() - 1).unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.context_stack.last()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_last_with_len [INFO] [stdout] = note: `#[warn(clippy::get_last_with_len)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:64:17 [INFO] [stdout] | [INFO] [stdout] 64 | return Ok(acc); [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] 64 - return Ok(acc); [INFO] [stdout] 64 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | return Ok(acc); [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 - return Ok(acc); [INFO] [stdout] 78 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:85:17 [INFO] [stdout] | [INFO] [stdout] 85 | return Ok(acc); [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] 85 - return Ok(acc); [INFO] [stdout] 85 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/command_interpreter/validation.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | return Ok(acc); [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] 91 - return Ok(acc); [INFO] [stdout] 91 + Ok(acc) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/command_interpreter/validation.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / if let Ok(acc) = acc { [INFO] [stdout] 118 | | if !acc.delimiter_stack.is_empty() { [INFO] [stdout] 119 | | println!("acc.delimiter_stack: {:?}", acc.delimiter_stack); [INFO] [stdout] 120 | | return Err(JreplErr::InvalidSyntax( [INFO] [stdout] ... | [INFO] [stdout] 124 | | } [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] 117 ~ if let Ok(acc) = acc [INFO] [stdout] 118 ~ && !acc.delimiter_stack.is_empty() { [INFO] [stdout] 119 | println!("acc.delimiter_stack: {:?}", acc.delimiter_stack); [INFO] [stdout] ... [INFO] [stdout] 122 | )); [INFO] [stdout] 123 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/errors/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod errors; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:135:36 [INFO] [stdout] | [INFO] [stdout] 135 | let result = verify_syntax(&vec!["(".to_string(), "exit".to_string(), ")".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["(".to_string(), "exit".to_string(), ")".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:141:36 [INFO] [stdout] | [INFO] [stdout] 141 | let result = verify_syntax(&vec!["(".to_string(), ")".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["(".to_string(), ")".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:147:36 [INFO] [stdout] | [INFO] [stdout] 147 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 148 | | "(".to_string(), [INFO] [stdout] 149 | | "search".to_string(), [INFO] [stdout] 150 | | "\"symbol_name\"".to_string(), [INFO] [stdout] 151 | | ")".to_string(), [INFO] [stdout] 152 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 147 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 148 + "search".to_string(), [INFO] [stdout] 149 + "\"symbol_name\"".to_string(), [INFO] [stdout] 150 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:158:36 [INFO] [stdout] | [INFO] [stdout] 158 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 159 | | "(".to_string(), [INFO] [stdout] 160 | | "outer".to_string(), [INFO] [stdout] 161 | | "(".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 164 | | ")".to_string(), [INFO] [stdout] 165 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 158 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 159 + "outer".to_string(), [INFO] [stdout] 160 + "(".to_string(), [INFO] [stdout] 161 + "inner".to_string(), [INFO] [stdout] 162 + ")".to_string(), [INFO] [stdout] 163 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:173:36 [INFO] [stdout] | [INFO] [stdout] 173 | let result = verify_syntax(&vec!["(".to_string(), "unbalanced".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["(".to_string(), "unbalanced".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:179:36 [INFO] [stdout] | [INFO] [stdout] 179 | let result = verify_syntax(&vec!["unbalanced".to_string(), ")".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["unbalanced".to_string(), ")".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:185:36 [INFO] [stdout] | [INFO] [stdout] 185 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 186 | | "(".to_string(), [INFO] [stdout] 187 | | "foo".to_string(), [INFO] [stdout] 188 | | ")".to_string(), [INFO] [stdout] 189 | | ")".to_string(), [INFO] [stdout] 190 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 185 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 186 + "foo".to_string(), [INFO] [stdout] 187 + ")".to_string(), [INFO] [stdout] 188 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:196:36 [INFO] [stdout] | [INFO] [stdout] 196 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 197 | | "(".to_string(), [INFO] [stdout] 198 | | "outer".to_string(), [INFO] [stdout] 199 | | "(".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 203 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 196 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 197 + "outer".to_string(), [INFO] [stdout] 198 + "(".to_string(), [INFO] [stdout] 199 + "inner".to_string(), [INFO] [stdout] 200 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:209:36 [INFO] [stdout] | [INFO] [stdout] 209 | let result = verify_syntax(&vec!["$not_a_symbol".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["$not_a_symbol".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:217:36 [INFO] [stdout] | [INFO] [stdout] 217 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 218 | | "(".to_string(), [INFO] [stdout] 219 | | "foo".to_string(), [INFO] [stdout] 220 | | "`this is a comment`".to_string(), [INFO] [stdout] 221 | | "bar".to_string(), [INFO] [stdout] 222 | | ")".to_string(), [INFO] [stdout] 223 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 217 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 218 + "foo".to_string(), [INFO] [stdout] 219 + "`this is a comment`".to_string(), [INFO] [stdout] 220 + "bar".to_string(), [INFO] [stdout] 221 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:229:36 [INFO] [stdout] | [INFO] [stdout] 229 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 230 | | "(".to_string(), [INFO] [stdout] 231 | | "foo".to_string(), [INFO] [stdout] 232 | | "`this is\na multiline\ncomment`".to_string(), [INFO] [stdout] 233 | | "bar".to_string(), [INFO] [stdout] 234 | | ")".to_string(), [INFO] [stdout] 235 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 229 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 230 + "foo".to_string(), [INFO] [stdout] 231 + "`this is\na multiline\ncomment`".to_string(), [INFO] [stdout] 232 + "bar".to_string(), [INFO] [stdout] 233 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:241:36 [INFO] [stdout] | [INFO] [stdout] 241 | let result = verify_syntax(&vec!["(".to_string(), "`just a comment`".to_string(), ")".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["(".to_string(), "`just a comment`".to_string(), ")".to_string()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/command_interpreter/validation.rs:247:36 [INFO] [stdout] | [INFO] [stdout] 247 | let result = verify_syntax(&vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 248 | | "(".to_string(), [INFO] [stdout] 249 | | "`start`".to_string(), [INFO] [stdout] 250 | | "foo".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 254 | | ")".to_string(), [INFO] [stdout] 255 | | ]); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use a slice directly [INFO] [stdout] | [INFO] [stdout] 247 ~ let result = verify_syntax(&["(".to_string(), [INFO] [stdout] 248 + "`start`".to_string(), [INFO] [stdout] 249 + "foo".to_string(), [INFO] [stdout] 250 + "`middle`".to_string(), [INFO] [stdout] 251 + "bar".to_string(), [INFO] [stdout] 252 + "`end`".to_string(), [INFO] [stdout] 253 ~ ")".to_string()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 41.85s [INFO] running `Command { std: "docker" "inspect" "e8d24a7bfa4298802a8a92000264959b31403efc998a5933c9ad4dbc21f4592b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e8d24a7bfa4298802a8a92000264959b31403efc998a5933c9ad4dbc21f4592b", kill_on_drop: false }` [INFO] [stdout] e8d24a7bfa4298802a8a92000264959b31403efc998a5933c9ad4dbc21f4592b