[INFO] cloning repository https://github.com/bibinthomas123/Compiler [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bibinthomas123/Compiler" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbibinthomas123%2FCompiler", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbibinthomas123%2FCompiler'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c0754beb60bc630d6c34fcf57e6daff82a1c6d67 [INFO] linting bibinthomas123/Compiler against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbibinthomas123%2FCompiler" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/bibinthomas123/Compiler [INFO] finished tweaking git repo https://github.com/bibinthomas123/Compiler [INFO] tweaked toml for git repo https://github.com/bibinthomas123/Compiler written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/bibinthomas123/Compiler 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/bibinthomas123/Compiler 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] e82100e578324b1bc081b5fe47ba1f410bb7b5b8bfdf8de3f205ecf4780981fd [INFO] running `Command { std: "docker" "start" "-a" "e82100e578324b1bc081b5fe47ba1f410bb7b5b8bfdf8de3f205ecf4780981fd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e82100e578324b1bc081b5fe47ba1f410bb7b5b8bfdf8de3f205ecf4780981fd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e82100e578324b1bc081b5fe47ba1f410bb7b5b8bfdf8de3f205ecf4780981fd", kill_on_drop: false }` [INFO] [stdout] e82100e578324b1bc081b5fe47ba1f410bb7b5b8bfdf8de3f205ecf4780981fd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 125dc3d4166d6b8ca4010a2e2065c1ff35f53e86f7f0a7317bd069699087a3d5 [INFO] running `Command { std: "docker" "start" "-a" "125dc3d4166d6b8ca4010a2e2065c1ff35f53e86f7f0a7317bd069699087a3d5", kill_on_drop: false }` [INFO] [stderr] Checking termion v2.0.1 [INFO] [stderr] Checking fusion-compiler v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: you should consider adding a `Default` implementation for `IdxVec` [INFO] [stdout] --> src/lib.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | / pub fn new() -> Self { [INFO] [stdout] 37 | | Self { [INFO] [stdout] 38 | | vec: vec![], [INFO] [stdout] 39 | | _marker: std::marker::PhantomData, [INFO] [stdout] 40 | | } [INFO] [stdout] 41 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 35 + impl Default for IdxVec [INFO] [stdout] 36 + where Index: Idx [INFO] [stdout] 37 + { [INFO] [stdout] 38 + fn default() -> Self { [INFO] [stdout] 39 + Self::new() [INFO] [stdout] 40 + } [INFO] [stdout] 41 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return Index::new(next_index); [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] 46 - return Index::new(next_index); [INFO] [stdout] 46 + Index::new(next_index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | return &self[index]; [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] 70 - return &self[index]; [INFO] [stdout] 70 + &self[index] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | return &self.vec[index.as_index()]; [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 &self.vec[index.as_index()]; [INFO] [stdout] 78 + &self.vec[index.as_index()] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | return &mut self.vec[index.as_index()]; [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] 84 - return &mut self.vec[index.as_index()]; [INFO] [stdout] 84 + &mut self.vec[index.as_index()] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `IdxVec` [INFO] [stdout] --> src/lib.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | / pub fn new() -> Self { [INFO] [stdout] 37 | | Self { [INFO] [stdout] 38 | | vec: vec![], [INFO] [stdout] 39 | | _marker: std::marker::PhantomData, [INFO] [stdout] 40 | | } [INFO] [stdout] 41 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 35 + impl Default for IdxVec [INFO] [stdout] 36 + where Index: Idx [INFO] [stdout] 37 + { [INFO] [stdout] 38 + fn default() -> Self { [INFO] [stdout] 39 + Self::new() [INFO] [stdout] 40 + } [INFO] [stdout] 41 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return Index::new(next_index); [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] 46 - return Index::new(next_index); [INFO] [stdout] 46 + Index::new(next_index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | return &self[index]; [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] 70 - return &self[index]; [INFO] [stdout] 70 + &self[index] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | return &self.vec[index.as_index()]; [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 &self.vec[index.as_index()]; [INFO] [stdout] 78 + &self.vec[index.as_index()] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | return &mut self.vec[index.as_index()]; [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] 84 - return &mut self.vec[index.as_index()]; [INFO] [stdout] 84 + &mut self.vec[index.as_index()] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/mod.rs:797:47 [INFO] [stdout] | [INFO] [stdout] 797 | fn visit_string_expression(&mut self, ast: &mut Ast, string: &StringExpr, _expr: &Expr) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | c.is_digit(10) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 308 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/ast/lexer.rs:350:13 [INFO] [stdout] | [INFO] [stdout] 350 | float_literal as f64 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `float_literal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:359:16 [INFO] [stdout] | [INFO] [stdout] 359 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:372:20 [INFO] [stdout] | [INFO] [stdout] 372 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/ast/parser.rs:46:21 [INFO] [stdout] | [INFO] [stdout] 46 | tokens: tokens.iter().filter( [INFO] [stdout] | _____________________^ [INFO] [stdout] 47 | | |token| token.kind != TokenKind::Whitespace [INFO] [stdout] 48 | | ).map(|token| token.clone()).collect(), [INFO] [stdout] | |________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 46 ~ tokens: tokens.iter().filter( [INFO] [stdout] 47 + |token| token.kind != TokenKind::Whitespace [INFO] [stdout] 48 ~ ).cloned().collect(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ast/parser.rs:57:19 [INFO] [stdout] | [INFO] [stdout] 57 | while let Some(_) = self.next_item().map(|stmt| stmt.id) {} [INFO] [stdout] | ----------^^^^^^^--------------------------------------- help: try: `while self.next_item().map(|stmt| stmt.id).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ast/parser.rs:243:9 [INFO] [stdout] | [INFO] [stdout] 243 | / if self.current().kind == TokenKind::Identifier { [INFO] [stdout] 244 | | if self.peek(1).kind == TokenKind::Equals { [INFO] [stdout] 245 | | let identifier = self.consume_and_check(TokenKind::Identifier).clone(); [INFO] [stdout] 246 | | let equals = self.consume_and_check(TokenKind::Equals).clone(); [INFO] [stdout] ... | [INFO] [stdout] 250 | | } [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] 243 ~ if self.current().kind == TokenKind::Identifier [INFO] [stdout] 244 ~ && self.peek(1).kind == TokenKind::Equals { [INFO] [stdout] 245 | let identifier = self.consume_and_check(TokenKind::Identifier).clone(); [INFO] [stdout] ... [INFO] [stdout] 248 | return self.ast.assignment_expression(identifier, equals, expr).id; [INFO] [stdout] 249 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ast/parser.rs:271:20 [INFO] [stdout] | [INFO] [stdout] 271 | if !greater_precedence && !(equal_precedence && inner_operator.associativity() == BinOpAssociativity::Right) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(greater_precedence || equal_precedence && inner_operator.associativity() == BinOpAssociativity::Right)` [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: function call inside of `expect` [INFO] [stdout] --> src/ast/evaluator.rs:213:14 [INFO] [stdout] | [INFO] [stdout] 213 | .expect( [INFO] [stdout] | ______________^ [INFO] [stdout] 214 | | format!( [INFO] [stdout] 215 | | "Function '{}' not found", [INFO] [stdout] 216 | | call_expression.callee.span.literal [INFO] [stdout] 217 | | ) [INFO] [stdout] 218 | | .as_str(), [INFO] [stdout] 219 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 213 ~ .unwrap_or_else(|| panic!("Function '{}' not found", [INFO] [stdout] 214 ~ call_expression.callee.span.literal)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/ast/evaluator.rs:246:18 [INFO] [stdout] | [INFO] [stdout] 246 | .expect( [INFO] [stdout] | __________________^ [INFO] [stdout] 247 | | format!( [INFO] [stdout] 248 | | "Variable {} '{}' not found", [INFO] [stdout] 249 | | var_expr.variable_idx.as_index(), [INFO] [stdout] ... | [INFO] [stdout] 252 | | .as_str(), [INFO] [stdout] 253 | | ) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 246 ~ .unwrap_or_else(|| panic!("Variable {} '{}' not found", [INFO] [stdout] 247 + var_expr.variable_idx.as_index(), [INFO] [stdout] 248 + identifier)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/visitor.rs:36:49 [INFO] [stdout] | [INFO] [stdout] 36 | self.visit_while_statement(ast, &stmt); [INFO] [stdout] | ^^^^^ help: change this to: `stmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/visitor.rs:39:50 [INFO] [stdout] | [INFO] [stdout] 39 | self.visit_return_statement(ast, &stmt); [INFO] [stdout] | ^^^^^ help: change this to: `stmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/visitor.rs:111:44 [INFO] [stdout] | [INFO] [stdout] 111 | self.visit_block_expr(ast, &block_expr, &expression); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `block_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast/printer.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | self.result.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.result.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast/printer.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | / self.result.push_str(" [INFO] [stdout] 25 | | "); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] help: consider using `push` with a character literal [INFO] [stdout] | [INFO] [stdout] 24 ~ self.result.push(' [INFO] [stdout] 25 ~ '); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/ast/mod.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn visualize(&mut self) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/ast/mod.rs:219:1 [INFO] [stdout] | [INFO] [stdout] 219 | / pub enum ItemKind { [INFO] [stdout] 220 | | Stmt(StmtId), [INFO] [stdout] | | ------------ the second-largest variant contains at least 8 bytes [INFO] [stdout] 221 | | Function(FunctionDeclaration), [INFO] [stdout] | | ----------------------------- the largest variant contains at least 296 bytes [INFO] [stdout] 222 | | } [INFO] [stdout] | |_^ the entire enum is at least 296 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 221 - Function(FunctionDeclaration), [INFO] [stdout] 221 + Function(Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | c.is_digit(10) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:308:16 [INFO] [stdout] | [INFO] [stdout] 308 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/ast/lexer.rs:350:13 [INFO] [stdout] | [INFO] [stdout] 350 | float_literal as f64 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `float_literal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:359:16 [INFO] [stdout] | [INFO] [stdout] 359 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:372:20 [INFO] [stdout] | [INFO] [stdout] 372 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/ast/parser.rs:46:21 [INFO] [stdout] | [INFO] [stdout] 46 | tokens: tokens.iter().filter( [INFO] [stdout] | _____________________^ [INFO] [stdout] 47 | | |token| token.kind != TokenKind::Whitespace [INFO] [stdout] 48 | | ).map(|token| token.clone()).collect(), [INFO] [stdout] | |________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 46 ~ tokens: tokens.iter().filter( [INFO] [stdout] 47 + |token| token.kind != TokenKind::Whitespace [INFO] [stdout] 48 ~ ).cloned().collect(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/ast/parser.rs:57:19 [INFO] [stdout] | [INFO] [stdout] 57 | while let Some(_) = self.next_item().map(|stmt| stmt.id) {} [INFO] [stdout] | ----------^^^^^^^--------------------------------------- help: try: `while self.next_item().map(|stmt| stmt.id).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ast/parser.rs:243:9 [INFO] [stdout] | [INFO] [stdout] 243 | / if self.current().kind == TokenKind::Identifier { [INFO] [stdout] 244 | | if self.peek(1).kind == TokenKind::Equals { [INFO] [stdout] 245 | | let identifier = self.consume_and_check(TokenKind::Identifier).clone(); [INFO] [stdout] 246 | | let equals = self.consume_and_check(TokenKind::Equals).clone(); [INFO] [stdout] ... | [INFO] [stdout] 250 | | } [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] 243 ~ if self.current().kind == TokenKind::Identifier [INFO] [stdout] 244 ~ && self.peek(1).kind == TokenKind::Equals { [INFO] [stdout] 245 | let identifier = self.consume_and_check(TokenKind::Identifier).clone(); [INFO] [stdout] ... [INFO] [stdout] 248 | return self.ast.assignment_expression(identifier, equals, expr).id; [INFO] [stdout] 249 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ast/parser.rs:271:20 [INFO] [stdout] | [INFO] [stdout] 271 | if !greater_precedence && !(equal_precedence && inner_operator.associativity() == BinOpAssociativity::Right) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(greater_precedence || equal_precedence && inner_operator.associativity() == BinOpAssociativity::Right)` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/diagnostics/printer.rs:39:70 [INFO] [stdout] | [INFO] [stdout] 39 | let (prefix, span, suffix) = self.get_text_spans(diagnostic, &line, column); [INFO] [stdout] | ^^^^^ help: change this to: `line` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/diagnostics/printer.rs:52:58 [INFO] [stdout] | [INFO] [stdout] 52 | let arrow_pointers = format!("{:indent$}{}", "", std::iter::repeat( [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 53 | | '^' [INFO] [stdout] 54 | | ).take( [INFO] [stdout] 55 | | diagnostic.span.length() [INFO] [stdout] 56 | | ).collect::(), indent = indent); [INFO] [stdout] | |_____________________________^ help: try: `"^".repeat(diagnostic.span.length())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/diagnostics/printer.rs:52:58 [INFO] [stdout] | [INFO] [stdout] 52 | let arrow_pointers = format!("{:indent$}{}", "", std::iter::repeat( [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 53 | | '^' [INFO] [stdout] 54 | | ).take( [INFO] [stdout] 55 | | diagnostic.span.length() [INFO] [stdout] 56 | | ).collect::(), indent = indent); [INFO] [stdout] | |_________^ help: consider using `repeat_n()` instead: `std::iter::repeat_n('^', diagnostic.span.length())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/ast/evaluator.rs:213:14 [INFO] [stdout] | [INFO] [stdout] 213 | .expect( [INFO] [stdout] | ______________^ [INFO] [stdout] 214 | | format!( [INFO] [stdout] 215 | | "Function '{}' not found", [INFO] [stdout] 216 | | call_expression.callee.span.literal [INFO] [stdout] 217 | | ) [INFO] [stdout] 218 | | .as_str(), [INFO] [stdout] 219 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 213 ~ .unwrap_or_else(|| panic!("Function '{}' not found", [INFO] [stdout] 214 ~ call_expression.callee.span.literal)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/ast/evaluator.rs:246:18 [INFO] [stdout] | [INFO] [stdout] 246 | .expect( [INFO] [stdout] | __________________^ [INFO] [stdout] 247 | | format!( [INFO] [stdout] 248 | | "Variable {} '{}' not found", [INFO] [stdout] 249 | | var_expr.variable_idx.as_index(), [INFO] [stdout] ... | [INFO] [stdout] 252 | | .as_str(), [INFO] [stdout] 253 | | ) [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 246 ~ .unwrap_or_else(|| panic!("Variable {} '{}' not found", [INFO] [stdout] 247 + var_expr.variable_idx.as_index(), [INFO] [stdout] 248 + identifier)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/diagnostics/mod.rs:91:27 [INFO] [stdout] | [INFO] [stdout] 91 | self.report_error(format!("Cannot use 'return' outside of function"), token.span.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Cannot use 'return' outside of function".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/diagnostics/mod.rs:95:27 [INFO] [stdout] | [INFO] [stdout] 95 | self.report_error(format!("Cannot use 'rec' outside of function"), token.span.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Cannot use 'rec' outside of function".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/text/span.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | / spans.sort_by( [INFO] [stdout] 16 | | |a, b| a.start.cmp(&b.start) [INFO] [stdout] 17 | | ); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 15 - spans.sort_by( [INFO] [stdout] 16 - |a, b| a.start.cmp(&b.start) [INFO] [stdout] 17 - ); [INFO] [stdout] 15 + spans.sort_by_key(|a| a.start); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/visitor.rs:36:49 [INFO] [stdout] | [INFO] [stdout] 36 | self.visit_while_statement(ast, &stmt); [INFO] [stdout] | ^^^^^ help: change this to: `stmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/visitor.rs:39:50 [INFO] [stdout] | [INFO] [stdout] 39 | self.visit_return_statement(ast, &stmt); [INFO] [stdout] | ^^^^^ help: change this to: `stmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/visitor.rs:111:44 [INFO] [stdout] | [INFO] [stdout] 111 | self.visit_block_expr(ast, &block_expr, &expression); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `block_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast/printer.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | self.result.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.result.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ast/printer.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | / self.result.push_str(" [INFO] [stdout] 25 | | "); [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] help: consider using `push` with a character literal [INFO] [stdout] | [INFO] [stdout] 24 ~ self.result.push(' [INFO] [stdout] 25 ~ '); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:258:57 [INFO] [stdout] | [INFO] [stdout] 258 | self.expect_type(matrix.0, &left.ty, &left.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:260:59 [INFO] [stdout] | [INFO] [stdout] 260 | self.expect_type(matrix.1, &right.ty, &right.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:276:63 [INFO] [stdout] | [INFO] [stdout] 276 | self.expect_type(matrix.0, &operand.ty, &operand.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:286:61 [INFO] [stdout] | [INFO] [stdout] 286 | diagnostics.borrow_mut().report_undeclared_type(&type_name); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `type_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:319:115 [INFO] [stdout] | [INFO] [stdout] 319 | self.expect_type(function.return_type.clone(), &return_expression.ty, &return_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:330:69 [INFO] [stdout] | [INFO] [stdout] 330 | self.expect_type(Type::Bool, &condition.ty, &condition.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:357:91 [INFO] [stdout] | [INFO] [stdout] 357 | self.expect_type(Type::Bool, &condition_expression.ty, &condition_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:366:106 [INFO] [stdout] | [INFO] [stdout] 366 | ty = self.expect_type(then_expression.ty.clone(), &else_expression.ty, &else_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:379:103 [INFO] [stdout] | [INFO] [stdout] 379 | self.expect_type(ty.clone(), &initializer_expression.ty, &initializer_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:441:100 [INFO] [stdout] | [INFO] [stdout] 441 | self.expect_type(variable.ty.clone(), &value_expression.ty, &value_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:484:53 [INFO] [stdout] | [INFO] [stdout] 484 | let ty = self.resolve_unary_expression(ast, &operand, &unary_expression.operator.kind); [INFO] [stdout] | ^^^^^^^^ help: change this to: `operand` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:494:54 [INFO] [stdout] | [INFO] [stdout] 494 | let ty = self.resolve_binary_expression(ast, &left, &right, &binary_expression.operator.kind); [INFO] [stdout] | ^^^^^ help: change this to: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:494:61 [INFO] [stdout] | [INFO] [stdout] 494 | let ty = self.resolve_binary_expression(ast, &left, &right, &binary_expression.operator.kind); [INFO] [stdout] | ^^^^^^ help: change this to: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/compilation_unit.rs:546:12 [INFO] [stdout] | [INFO] [stdout] 546 | if self.diagnostics_bag.borrow().diagnostics.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.diagnostics_bag.borrow().diagnostics.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: length comparison to zero [INFO] [stdout] --> src/compilation_unit.rs:569:12 [INFO] [stdout] | [INFO] [stdout] 569 | if diagnostics_binding.diagnostics.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!diagnostics_binding.diagnostics.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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:571:17 [INFO] [stdout] | [INFO] [stdout] 571 | &text, [INFO] [stdout] | ^^^^^ help: change this to: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/ast/mod.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn visualize(&mut self) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/ast/mod.rs:219:1 [INFO] [stdout] | [INFO] [stdout] 219 | / pub enum ItemKind { [INFO] [stdout] 220 | | Stmt(StmtId), [INFO] [stdout] | | ------------ the second-largest variant contains at least 8 bytes [INFO] [stdout] 221 | | Function(FunctionDeclaration), [INFO] [stdout] | | ----------------------------- the largest variant contains at least 296 bytes [INFO] [stdout] 222 | | } [INFO] [stdout] | |_^ the entire enum is at least 296 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 221 - Function(FunctionDeclaration), [INFO] [stdout] 221 + Function(Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/codegen/mod.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | self.result.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.result.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/codegen/mod.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | self.result.push_str("("); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.result.push('(')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/mod.rs:855:53 [INFO] [stdout] | [INFO] [stdout] 855 | self.visit_while_statement(ast, &stmt); [INFO] [stdout] | ^^^^^ help: change this to: `stmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/mod.rs:858:54 [INFO] [stdout] | [INFO] [stdout] 858 | self.visit_return_statement(ast, &stmt); [INFO] [stdout] | ^^^^^ help: change this to: `stmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ast/mod.rs:907:48 [INFO] [stdout] | [INFO] [stdout] 907 | self.visit_block_expr(ast, &block_expr, &expression); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `block_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/diagnostics/printer.rs:39:70 [INFO] [stdout] | [INFO] [stdout] 39 | let (prefix, span, suffix) = self.get_text_spans(diagnostic, &line, column); [INFO] [stdout] | ^^^^^ help: change this to: `line` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/diagnostics/printer.rs:52:58 [INFO] [stdout] | [INFO] [stdout] 52 | let arrow_pointers = format!("{:indent$}{}", "", std::iter::repeat( [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 53 | | '^' [INFO] [stdout] 54 | | ).take( [INFO] [stdout] 55 | | diagnostic.span.length() [INFO] [stdout] 56 | | ).collect::(), indent = indent); [INFO] [stdout] | |_____________________________^ help: try: `"^".repeat(diagnostic.span.length())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/diagnostics/printer.rs:52:58 [INFO] [stdout] | [INFO] [stdout] 52 | let arrow_pointers = format!("{:indent$}{}", "", std::iter::repeat( [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 53 | | '^' [INFO] [stdout] 54 | | ).take( [INFO] [stdout] 55 | | diagnostic.span.length() [INFO] [stdout] 56 | | ).collect::(), indent = indent); [INFO] [stdout] | |_________^ help: consider using `repeat_n()` instead: `std::iter::repeat_n('^', diagnostic.span.length())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/diagnostics/mod.rs:91:27 [INFO] [stdout] | [INFO] [stdout] 91 | self.report_error(format!("Cannot use 'return' outside of function"), token.span.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Cannot use 'return' outside of function".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/diagnostics/mod.rs:95:27 [INFO] [stdout] | [INFO] [stdout] 95 | self.report_error(format!("Cannot use 'rec' outside of function"), token.span.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Cannot use 'rec' outside of function".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/text/span.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | / spans.sort_by( [INFO] [stdout] 16 | | |a, b| a.start.cmp(&b.start) [INFO] [stdout] 17 | | ); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 15 - spans.sort_by( [INFO] [stdout] 16 - |a, b| a.start.cmp(&b.start) [INFO] [stdout] 17 - ); [INFO] [stdout] 15 + spans.sort_by_key(|a| a.start); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:258:57 [INFO] [stdout] | [INFO] [stdout] 258 | self.expect_type(matrix.0, &left.ty, &left.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:260:59 [INFO] [stdout] | [INFO] [stdout] 260 | self.expect_type(matrix.1, &right.ty, &right.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:276:63 [INFO] [stdout] | [INFO] [stdout] 276 | self.expect_type(matrix.0, &operand.ty, &operand.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:286:61 [INFO] [stdout] | [INFO] [stdout] 286 | diagnostics.borrow_mut().report_undeclared_type(&type_name); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `type_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:319:115 [INFO] [stdout] | [INFO] [stdout] 319 | self.expect_type(function.return_type.clone(), &return_expression.ty, &return_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:330:69 [INFO] [stdout] | [INFO] [stdout] 330 | self.expect_type(Type::Bool, &condition.ty, &condition.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:357:91 [INFO] [stdout] | [INFO] [stdout] 357 | self.expect_type(Type::Bool, &condition_expression.ty, &condition_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:366:106 [INFO] [stdout] | [INFO] [stdout] 366 | ty = self.expect_type(then_expression.ty.clone(), &else_expression.ty, &else_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:379:103 [INFO] [stdout] | [INFO] [stdout] 379 | self.expect_type(ty.clone(), &initializer_expression.ty, &initializer_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:441:100 [INFO] [stdout] | [INFO] [stdout] 441 | self.expect_type(variable.ty.clone(), &value_expression.ty, &value_expression.span(&ast)); [INFO] [stdout] | ^^^^ help: change this to: `ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:484:53 [INFO] [stdout] | [INFO] [stdout] 484 | let ty = self.resolve_unary_expression(ast, &operand, &unary_expression.operator.kind); [INFO] [stdout] | ^^^^^^^^ help: change this to: `operand` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:494:54 [INFO] [stdout] | [INFO] [stdout] 494 | let ty = self.resolve_binary_expression(ast, &left, &right, &binary_expression.operator.kind); [INFO] [stdout] | ^^^^^ help: change this to: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:494:61 [INFO] [stdout] | [INFO] [stdout] 494 | let ty = self.resolve_binary_expression(ast, &left, &right, &binary_expression.operator.kind); [INFO] [stdout] | ^^^^^^ help: change this to: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/compilation_unit.rs:546:12 [INFO] [stdout] | [INFO] [stdout] 546 | if self.diagnostics_bag.borrow().diagnostics.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.diagnostics_bag.borrow().diagnostics.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: length comparison to zero [INFO] [stdout] --> src/compilation_unit.rs:569:12 [INFO] [stdout] | [INFO] [stdout] 569 | if diagnostics_binding.diagnostics.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!diagnostics_binding.diagnostics.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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:571:17 [INFO] [stdout] | [INFO] [stdout] 571 | &text, [INFO] [stdout] | ^^^^^ help: change this to: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/codegen/mod.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | self.result.push_str(" "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.result.push(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/codegen/mod.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | self.result.push_str("("); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.result.push('(')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.61s [INFO] running `Command { std: "docker" "inspect" "125dc3d4166d6b8ca4010a2e2065c1ff35f53e86f7f0a7317bd069699087a3d5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "125dc3d4166d6b8ca4010a2e2065c1ff35f53e86f7f0a7317bd069699087a3d5", kill_on_drop: false }` [INFO] [stdout] 125dc3d4166d6b8ca4010a2e2065c1ff35f53e86f7f0a7317bd069699087a3d5