[INFO] cloning repository https://github.com/The-Amadeus-Project/Minimal-Lang [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/The-Amadeus-Project/Minimal-Lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThe-Amadeus-Project%2FMinimal-Lang", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThe-Amadeus-Project%2FMinimal-Lang'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 351c2115de9ad226ae3f2717101489b92e61f6ed [INFO] linting The-Amadeus-Project/Minimal-Lang against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FThe-Amadeus-Project%2FMinimal-Lang" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/The-Amadeus-Project/Minimal-Lang [INFO] finished tweaking git repo https://github.com/The-Amadeus-Project/Minimal-Lang [INFO] tweaked toml for git repo https://github.com/The-Amadeus-Project/Minimal-Lang written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/The-Amadeus-Project/Minimal-Lang 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/The-Amadeus-Project/Minimal-Lang 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-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] f5d6c74f876b03adcf6f4d0d4778e7cefd48ee403775b55f41842f8e1c1c5bc1 [INFO] running `Command { std: "docker" "start" "-a" "f5d6c74f876b03adcf6f4d0d4778e7cefd48ee403775b55f41842f8e1c1c5bc1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f5d6c74f876b03adcf6f4d0d4778e7cefd48ee403775b55f41842f8e1c1c5bc1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f5d6c74f876b03adcf6f4d0d4778e7cefd48ee403775b55f41842f8e1c1c5bc1", kill_on_drop: false }` [INFO] [stdout] f5d6c74f876b03adcf6f4d0d4778e7cefd48ee403775b55f41842f8e1c1c5bc1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 97c17d5bdb94d513c006c340c0efbce9072d749e68dfe3ef3fff3bef1784e5b5 [INFO] running `Command { std: "docker" "start" "-a" "97c17d5bdb94d513c006c340c0efbce9072d749e68dfe3ef3fff3bef1784e5b5", kill_on_drop: false }` [INFO] [stderr] Checking minimal_lang v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/lexer.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [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: `std::ops::Deref` [INFO] [stdout] --> src/lexer.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Token` [INFO] [stdout] --> src/minimal_lang.rs:2:27 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::lexer::{Lexer, Token}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/lexer.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [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: `std::ops::Deref` [INFO] [stdout] --> src/lexer.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Token` [INFO] [stdout] --> src/minimal_lang.rs:2:27 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::lexer::{Lexer, Token}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `op` [INFO] [stdout] --> src/compiler.rs:55:42 [INFO] [stdout] | [INFO] [stdout] 55 | pub fn bin_op(&mut self, left: Node, op: BinaryOperation, right: Node) -> String{ [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_op` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `last_register` is never read [INFO] [stdout] --> src/compiler.rs:147:17 [INFO] [stdout] | [INFO] [stdout] 147 | last_register = self.bin_op(*left, op, *right); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/compiler.rs:161:21 [INFO] [stdout] | [INFO] [stdout] 161 | let mut int_value = 0; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `int_value` [INFO] [stdout] --> src/compiler.rs:161:21 [INFO] [stdout] | [INFO] [stdout] 161 | let mut int_value = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_int_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_path` [INFO] [stdout] --> src/minimal_lang.rs:17:16 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn compile(file_path: &str, debug: bool) -> String { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `debug` [INFO] [stdout] --> src/minimal_lang.rs:17:33 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn compile(file_path: &str, debug: bool) -> String { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_debug` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser.rs:182:13 [INFO] [stdout] | [INFO] [stdout] 182 | let mut current_scope = self.program.pop().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `op` [INFO] [stdout] --> src/compiler.rs:55:42 [INFO] [stdout] | [INFO] [stdout] 55 | pub fn bin_op(&mut self, left: Node, op: BinaryOperation, right: Node) -> String{ [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_op` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `last_register` is never read [INFO] [stdout] --> src/compiler.rs:147:17 [INFO] [stdout] | [INFO] [stdout] 147 | last_register = self.bin_op(*left, op, *right); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/compiler.rs:161:21 [INFO] [stdout] | [INFO] [stdout] 161 | let mut int_value = 0; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `int_value` [INFO] [stdout] --> src/compiler.rs:161:21 [INFO] [stdout] | [INFO] [stdout] 161 | let mut int_value = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_int_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `word_reg` is never used [INFO] [stdout] --> src/compiler.rs:17:4 [INFO] [stdout] | [INFO] [stdout] 17 | fn word_reg(register: String) -> String{ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `compile` is never used [INFO] [stdout] --> src/compiler.rs:330:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl Compiler { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn compile(ast: Node) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TokenType` is never used [INFO] [stdout] --> src/lexer.rs:5:10 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum TokenType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Token` is never constructed [INFO] [stdout] --> src/lexer.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Token { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lexer.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl Token { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 55 | pub fn new(token_type: TokenType, value: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn is_string(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn is_integer(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn is_float(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn is_bool(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn is_data_type(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn true_value(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Lexer` is never constructed [INFO] [stdout] --> src/lexer.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | pub struct Lexer { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lexer.rs:102:12 [INFO] [stdout] | [INFO] [stdout] 101 | impl Lexer { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 102 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn pos_starter(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn next_char(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn get_next_char_ignore_space(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn get_char(&self, ahead: i32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn get_next_char(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn add_base(&mut self, tok_type: TokenType, value: String) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn add_special(&mut self, tok_type: TokenType) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn add_special_bare(&mut self, tok_type: TokenType, value: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn add_string(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn add_integer(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn add_float(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn add_identifier(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn lex(&mut self) -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 512 | pub fn lex_text(&mut self, text: String) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `single_test` is never used [INFO] [stdout] --> src/lexer.rs:518:4 [INFO] [stdout] | [INFO] [stdout] 518 | fn single_test(expected: Vec<(TokenType, String)>, to_lex: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `lexer_test` is never used [INFO] [stdout] --> src/lexer.rs:536:8 [INFO] [stdout] | [INFO] [stdout] 536 | pub fn lexer_test() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pre_compile` is never used [INFO] [stdout] --> src/minimal_lang.rs:5:4 [INFO] [stdout] | [INFO] [stdout] 5 | fn pre_compile(file_path: &str, debug: bool) -> Node { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `token_type_to_variable_type` is never used [INFO] [stdout] --> src/parser.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn token_type_to_variable_type(token_type: TokenType) -> VariableType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `string_to_variable_type` is never used [INFO] [stdout] --> src/parser.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn string_to_variable_type(string: &str) -> VariableType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `token_as_constant_node` is never used [INFO] [stdout] --> src/parser.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn token_as_constant_node(tok: Token) -> Node { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `String`, `Boolean`, and `FloatingPoint` are never constructed [INFO] [stdout] --> src/parser.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub enum ConstValue { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 67 | String { value: String }, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 68 | Integer { value: i128 }, [INFO] [stdout] 69 | Boolean { value: bool }, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 70 | FloatingPoint { value: f64 }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConstValue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `String`, `Boolean`, `FloatingPoint`, and `Void` are never constructed [INFO] [stdout] --> src/parser.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 74 | pub enum VariableType { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 75 | String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 76 | Integer, [INFO] [stdout] 77 | Boolean, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 78 | FloatingPoint, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 79 | [INFO] [stdout] 80 | Void, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VariableType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Sub`, `Mul`, and `Div` are never constructed [INFO] [stdout] --> src/parser.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 83 | pub enum BinaryOperation { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] 84 | Add, [INFO] [stdout] 85 | Sub, [INFO] [stdout] | ^^^ [INFO] [stdout] 86 | Mul, [INFO] [stdout] | ^^^ [INFO] [stdout] 87 | Div, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Return` and `Blank` are never constructed [INFO] [stdout] --> src/parser.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 91 | pub enum Node { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 119 | Return { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | Blank, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Parser` is never constructed [INFO] [stdout] --> src/parser.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct Parser { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/parser.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 138 | impl Parser { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 139 | pub fn new(tokens: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | fn error(&mut self, error_title: &str, error_body: &str) -> ! { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | fn next_token(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | fn peek_next(&self) -> TokenType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn current_token_allowed_for_expr(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn push_top_program(&mut self, node: Node) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub fn parse(&mut self) -> Node { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn parse_tokens(tokens: Vec) -> Node { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_START` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const ASM_BASE_START: &str = r#"section .text [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_END` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:7:7 [INFO] [stdout] | [INFO] [stdout] 7 | const ASM_BASE_END: &str = r#" [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_BSS` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const ASM_BASE_BSS: &str = "section .bss\n"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_DATA` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const ASM_BASE_DATA: &str = "section .data\n"; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Builder` is never constructed [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct Builder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl Builder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 67 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn new_program(start_function: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn set_func_args_order(&mut self, order: Vec) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn add_line_text(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn add_value_text(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn add_line_function(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn add_value_function(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn add_line_function_head(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn add_value_function_head(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn add_line_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn add_value_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn add_line_data(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn add_value_data(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn add_built_in_function(&mut self, function: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn open_function(&mut self, function_name: &str) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn close_function(&mut self) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn local_word_assign(&mut self, loc_offset: u32, word_size: &str, value_or_register: &str) -> Return{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn new_local_word(&mut self, value: u16) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn new_local_dword(&mut self, value: u32) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn new_local_qword(&mut self, value: u64) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn get_local_word_size_and_offset(&self, id: usize) -> (Return, u32, u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn new_len_addr(&mut self, new_addr: &str, from_addr: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | pub fn new_string_literal(&mut self, addr: &str, value: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn new_string_literal_with_len(&mut self, addr: &str, value: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | pub fn call_function(&mut self, function: &str, arguments: Vec<&str>) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn extern_add(&mut self, function_or_address: &str) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn new_syscall(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | pub fn pop(&mut self, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn push(&mut self, value_or_register: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn call(&mut self, function: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 256 | pub fn mov(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn add(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | pub fn sub(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn div(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn mul(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn add_raw_asm1(&mut self, op: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn add_raw_asm2(&mut self, op: &str, left: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 282 | pub fn add_raw_asm3(&mut self, op: &str, left: &str, right: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn syscall(&mut self, arguments: Vec<&str>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn build(&mut self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 308 | pub fn build_no_start(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NameErr` and `BadArguments` are never constructed [INFO] [stdout] --> src/builder_dir/return_code.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 1 | pub enum Code { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] 2 | Good, [INFO] [stdout] 3 | NameErr, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 4 | OutOfRange, [INFO] [stdout] 5 | BadArguments, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `message` and `code` are never read [INFO] [stdout] --> src/builder_dir/return_code.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct Return { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 12 | pub message: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 13 | pub code: Code, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_END` is never used [INFO] [stdout] --> src/builder_dir/builder_gas.rs:7:7 [INFO] [stdout] | [INFO] [stdout] 7 | const ASM_BASE_END: &str = r#" [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `syscall_args_ordering` is never read [INFO] [stdout] --> src/builder_dir/builder_gas.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct Builder { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 31 | syscall_args_ordering: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/builder_dir/builder_gas.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl Builder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 67 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn set_func_args_order(&mut self, order: Vec) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn add_value_text(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn add_line_function(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn add_line_function_head(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn add_line_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn add_value_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn add_value_data(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn add_built_in_function(&mut self, function: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn new_local_word(&mut self, value: u16) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn new_local_qword(&mut self, value: u64) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn new_len_addr(&mut self, new_addr: &str, from_addr: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn new_syscall(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn push(&mut self, value_or_register: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn add(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | pub fn sub(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn div(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn mul(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn add_raw_asm1(&mut self, op: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn syscall(&mut self, arguments: Vec<&str>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn build(&mut self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:100:54 [INFO] [stdout] | [INFO] [stdout] 100 | ... self.builder.mov(&*register.clone(), &*eval.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `®ister.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:100:74 [INFO] [stdout] | [INFO] [stdout] 100 | ... self.builder.mov(&*register.clone(), &*eval.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&eval.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/compiler.rs:153:72 [INFO] [stdout] | [INFO] [stdout] 153 | pub fn assignment(&mut self, name: String, var_type: VariableType, value: Box) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:174:72 [INFO] [stdout] | [INFO] [stdout] 174 | ... self.builder.local_word_assign(4, "dword", &*dword_reg(register.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dword_reg(register.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/compiler.rs:197:16 [INFO] [stdout] | [INFO] [stdout] 197 | _args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] = note: `#[warn(clippy::vec_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/compiler.rs:198:15 [INFO] [stdout] | [INFO] [stdout] 198 | body: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:200:36 [INFO] [stdout] | [INFO] [stdout] 200 | self.builder.open_function(&*name); [INFO] [stdout] | ^^^^^^ help: try: `&name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:213:25 [INFO] [stdout] | [INFO] [stdout] 213 | &*format!("local_string_{}", self.string_literal_count), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("local_string_{}", self.string_literal_count)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:214:25 [INFO] [stdout] | [INFO] [stdout] 214 | &*value, [INFO] [stdout] | ^^^^^^^ help: try: `&value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/compiler.rs:230:35 [INFO] [stdout] | [INFO] [stdout] 230 | let variable_id = self.local_variables.get(&*name).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables.get(&*name).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/compiler.rs:255:66 [INFO] [stdout] | [INFO] [stdout] 255 | pub fn function_call(&mut self, function_name: String, args: Vec>) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:277:40 [INFO] [stdout] | [INFO] [stdout] 277 | self.builder.mov(register, &*argument); [INFO] [stdout] | ^^^^^^^^^^ help: try: `&argument` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:280:27 [INFO] [stdout] | [INFO] [stdout] 280 | self.builder.call(&*function_name); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&function_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/compiler.rs:283:35 [INFO] [stdout] | [INFO] [stdout] 283 | fn return_function(&mut self, value: Box) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/compiler.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | / match self.ast.clone() { [INFO] [stdout] 320 | | Node::Program { body } => { [INFO] [stdout] 321 | | for part in body { [INFO] [stdout] 322 | | self.single(*part) [INFO] [stdout] ... | [INFO] [stdout] 325 | | _ => {} [INFO] [stdout] 326 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 319 ~ if let Node::Program { body } = self.ast.clone() { [INFO] [stdout] 320 + for part in body { [INFO] [stdout] 321 + self.single(*part) [INFO] [stdout] 322 + } [INFO] [stdout] 323 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file_path` [INFO] [stdout] --> src/minimal_lang.rs:17:16 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn compile(file_path: &str, debug: bool) -> String { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `debug` [INFO] [stdout] --> src/minimal_lang.rs:17:33 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn compile(file_path: &str, debug: bool) -> String { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_debug` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:359:28 [INFO] [stdout] | [INFO] [stdout] 359 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [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 boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:378:28 [INFO] [stdout] | [INFO] [stdout] 378 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:400:28 [INFO] [stdout] | [INFO] [stdout] 400 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:431:28 [INFO] [stdout] | [INFO] [stdout] 431 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:447:28 [INFO] [stdout] | [INFO] [stdout] 447 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser.rs:182:13 [INFO] [stdout] | [INFO] [stdout] 182 | let mut current_scope = self.program.pop().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/lexer.rs:279:68 [INFO] [stdout] | [INFO] [stdout] 279 | && num.contains(&self.get_next_char_ignore_space().expect(&format!( [INFO] [stdout] | ____________________________________________________________________^ [INFO] [stdout] 280 | | "expected char! at line {} char {}", [INFO] [stdout] 281 | | self.y, self.tok_start_y [INFO] [stdout] 282 | | ))) [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] 279 ~ && num.contains(&self.get_next_char_ignore_space().unwrap_or_else(|| panic!("expected char! at line {} char {}", [INFO] [stdout] 280 ~ self.y, self.tok_start_y))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/minimal_lang.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | return program.run() [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] 86 - return program.run() [INFO] [stdout] 86 + program.run() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:93:15 [INFO] [stdout] | [INFO] [stdout] 93 | body: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:98:15 [INFO] [stdout] | [INFO] [stdout] 98 | args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:99:15 [INFO] [stdout] | [INFO] [stdout] 99 | body: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:103:15 [INFO] [stdout] | [INFO] [stdout] 103 | args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:133:14 [INFO] [stdout] | [INFO] [stdout] 133 | program: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/parser.rs:210:28 [INFO] [stdout] | [INFO] [stdout] 210 | if self.program.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.program.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: function `word_reg` is never used [INFO] [stdout] --> src/compiler.rs:17:4 [INFO] [stdout] | [INFO] [stdout] 17 | fn word_reg(register: String) -> String{ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `compile` is never used [INFO] [stdout] --> src/compiler.rs:330:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl Compiler { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn compile(ast: Node) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TokenType` is never used [INFO] [stdout] --> src/lexer.rs:5:10 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum TokenType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Token` is never constructed [INFO] [stdout] --> src/lexer.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Token { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lexer.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl Token { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 55 | pub fn new(token_type: TokenType, value: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn is_string(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn is_integer(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn is_float(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn is_bool(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn is_data_type(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn true_value(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/parser.rs:239:28 [INFO] [stdout] | [INFO] [stdout] 239 | if values.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `values.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: struct `Lexer` is never constructed [INFO] [stdout] --> src/lexer.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | pub struct Lexer { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `values.get(0)` [INFO] [stdout] --> src/parser.rs:244:49 [INFO] [stdout] | [INFO] [stdout] 244 | if values.len() == 1 && values.get(0).unwrap().is_data_type() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `values.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lexer.rs:102:12 [INFO] [stdout] | [INFO] [stdout] 101 | impl Lexer { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 102 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn pos_starter(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn next_char(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn get_next_char_ignore_space(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn get_char(&self, ahead: i32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn get_next_char(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn add_base(&mut self, tok_type: TokenType, value: String) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn add_special(&mut self, tok_type: TokenType) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn add_special_bare(&mut self, tok_type: TokenType, value: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn add_string(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn add_integer(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn add_float(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn add_identifier(&mut self, value: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn lex(&mut self) -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 512 | pub fn lex_text(&mut self, text: String) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `single_test` is never used [INFO] [stdout] --> src/lexer.rs:518:4 [INFO] [stdout] | [INFO] [stdout] 518 | fn single_test(expected: Vec<(TokenType, String)>, to_lex: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `lexer_test` is never used [INFO] [stdout] --> src/lexer.rs:536:8 [INFO] [stdout] | [INFO] [stdout] 536 | pub fn lexer_test() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pre_compile` is never used [INFO] [stdout] --> src/minimal_lang.rs:5:4 [INFO] [stdout] | [INFO] [stdout] 5 | fn pre_compile(file_path: &str, debug: bool) -> Node { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `token_type_to_variable_type` is never used [INFO] [stdout] --> src/parser.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn token_type_to_variable_type(token_type: TokenType) -> VariableType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `string_to_variable_type` is never used [INFO] [stdout] --> src/parser.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn string_to_variable_type(string: &str) -> VariableType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `token_as_constant_node` is never used [INFO] [stdout] --> src/parser.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn token_as_constant_node(tok: Token) -> Node { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `String`, `Boolean`, and `FloatingPoint` are never constructed [INFO] [stdout] --> src/parser.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub enum ConstValue { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 67 | String { value: String }, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 68 | Integer { value: i128 }, [INFO] [stdout] 69 | Boolean { value: bool }, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 70 | FloatingPoint { value: f64 }, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConstValue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `String`, `Boolean`, `FloatingPoint`, and `Void` are never constructed [INFO] [stdout] --> src/parser.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 74 | pub enum VariableType { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 75 | String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 76 | Integer, [INFO] [stdout] 77 | Boolean, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 78 | FloatingPoint, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 79 | [INFO] [stdout] 80 | Void, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VariableType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:295:45 [INFO] [stdout] | [INFO] [stdout] 295 | / ... &*format!( [INFO] [stdout] 296 | | ... "'{}'({:?}) is a non parse token", [INFO] [stdout] 297 | | ... self.current_token.value.clone(), [INFO] [stdout] 298 | | ... self.current_token.token_type [INFO] [stdout] 299 | | ... ), [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 295 ~ &format!( [INFO] [stdout] 296 + "'{}'({:?}) is a non parse token", [INFO] [stdout] 297 + self.current_token.value.clone(), [INFO] [stdout] 298 + self.current_token.token_type [INFO] [stdout] 299 ~ ), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Sub`, `Mul`, and `Div` are never constructed [INFO] [stdout] --> src/parser.rs:85:5 [INFO] [stdout] | [INFO] [stdout] 83 | pub enum BinaryOperation { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] 84 | Add, [INFO] [stdout] 85 | Sub, [INFO] [stdout] | ^^^ [INFO] [stdout] 86 | Mul, [INFO] [stdout] | ^^^ [INFO] [stdout] 87 | Div, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Return` and `Blank` are never constructed [INFO] [stdout] --> src/parser.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 91 | pub enum Node { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 119 | Return { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | Blank, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Parser` is never constructed [INFO] [stdout] --> src/parser.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct Parser { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/parser.rs:139:12 [INFO] [stdout] | [INFO] [stdout] 138 | impl Parser { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 139 | pub fn new(tokens: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | fn error(&mut self, error_title: &str, error_body: &str) -> ! { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | fn next_token(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | fn peek_next(&self) -> TokenType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn current_token_allowed_for_expr(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | fn push_top_program(&mut self, node: Node) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub fn parse(&mut self) -> Node { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn parse_tokens(tokens: Vec) -> Node { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_START` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const ASM_BASE_START: &str = r#"section .text [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_END` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:7:7 [INFO] [stdout] | [INFO] [stdout] 7 | const ASM_BASE_END: &str = r#" [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_BSS` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const ASM_BASE_BSS: &str = "section .bss\n"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:319:29 [INFO] [stdout] | [INFO] [stdout] 319 | ... &*format!("Unknown '{}'", self.current_token.value), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("Unknown '{}'", self.current_token.value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_DATA` is never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const ASM_BASE_DATA: &str = "section .data\n"; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Builder` is never constructed [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct Builder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl Builder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 67 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn new_program(start_function: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn set_func_args_order(&mut self, order: Vec) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn add_line_text(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn add_value_text(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn add_line_function(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn add_value_function(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn add_line_function_head(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn add_value_function_head(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn add_line_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn add_value_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn add_line_data(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn add_value_data(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn add_built_in_function(&mut self, function: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn open_function(&mut self, function_name: &str) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn close_function(&mut self) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn local_word_assign(&mut self, loc_offset: u32, word_size: &str, value_or_register: &str) -> Return{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn new_local_word(&mut self, value: u16) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn new_local_dword(&mut self, value: u32) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn new_local_qword(&mut self, value: u64) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub fn get_local_word_size_and_offset(&self, id: usize) -> (Return, u32, u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn new_len_addr(&mut self, new_addr: &str, from_addr: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | pub fn new_string_literal(&mut self, addr: &str, value: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn new_string_literal_with_len(&mut self, addr: &str, value: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | pub fn call_function(&mut self, function: &str, arguments: Vec<&str>) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn extern_add(&mut self, function_or_address: &str) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn new_syscall(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | pub fn pop(&mut self, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn push(&mut self, value_or_register: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn call(&mut self, function: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 256 | pub fn mov(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn add(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | pub fn sub(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn div(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn mul(&mut self, register: &str, value_or_register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn add_raw_asm1(&mut self, op: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn add_raw_asm2(&mut self, op: &str, left: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 282 | pub fn add_raw_asm3(&mut self, op: &str, left: &str, right: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn syscall(&mut self, arguments: Vec<&str>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn build(&mut self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 308 | pub fn build_no_start(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:353:45 [INFO] [stdout] | [INFO] [stdout] 353 | ... &*self.current_token.value.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.current_token.value.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:390:53 [INFO] [stdout] | [INFO] [stdout] 390 | ... string_to_variable_type(&*self.current_token.value.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.current_token.value.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `NameErr` and `BadArguments` are never constructed [INFO] [stdout] --> src/builder_dir/return_code.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 1 | pub enum Code { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] 2 | Good, [INFO] [stdout] 3 | NameErr, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 4 | OutOfRange, [INFO] [stdout] 5 | BadArguments, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `message` and `code` are never read [INFO] [stdout] --> src/builder_dir/return_code.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct Return { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 12 | pub message: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 13 | pub code: Code, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ASM_BASE_END` is never used [INFO] [stdout] --> src/builder_dir/builder_gas.rs:7:7 [INFO] [stdout] | [INFO] [stdout] 7 | const ASM_BASE_END: &str = r#" [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `syscall_args_ordering` is never read [INFO] [stdout] --> src/builder_dir/builder_gas.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct Builder { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 31 | syscall_args_ordering: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/builder_dir/builder_gas.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl Builder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 67 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn set_func_args_order(&mut self, order: Vec) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn add_value_text(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn add_line_function(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn add_line_function_head(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn add_line_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn add_value_bss(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn add_value_data(&mut self, line: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn add_built_in_function(&mut self, function: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn new_local_word(&mut self, value: u16) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn new_local_qword(&mut self, value: u64) -> Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn new_len_addr(&mut self, new_addr: &str, from_addr: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | pub fn new_syscall(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | pub fn push(&mut self, value_or_register: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn add(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | pub fn sub(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn div(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn mul(&mut self, value_or_register: &str, register: &str) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn add_raw_asm1(&mut self, op: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn syscall(&mut self, arguments: Vec<&str>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn build(&mut self) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:435:33 [INFO] [stdout] | [INFO] [stdout] 435 | / ... &*format!( [INFO] [stdout] 436 | | ... "'{}'({:?}) is a non parse token", [INFO] [stdout] 437 | | ... self.current_token.value.clone(), [INFO] [stdout] 438 | | ... self.current_token.token_type [INFO] [stdout] 439 | | ... ), [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 435 ~ &format!( [INFO] [stdout] 436 + "'{}'({:?}) is a non parse token", [INFO] [stdout] 437 + self.current_token.value.clone(), [INFO] [stdout] 438 + self.current_token.token_type [INFO] [stdout] 439 ~ ), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:446:21 [INFO] [stdout] | [INFO] [stdout] 446 | let value; [INFO] [stdout] | ^^^^^^^^^^ created here [INFO] [stdout] 447 | value = Box::new(token_as_constant_node(values.pop().unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `value` here [INFO] [stdout] | [INFO] [stdout] 446 ~ [INFO] [stdout] 447 ~ let value = Box::new(token_as_constant_node(values.pop().unwrap())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:462:17 [INFO] [stdout] | [INFO] [stdout] 462 | &*format!("Unclosed Scopes, {} scopes unclosed", self.scopes), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("Unclosed Scopes, {} scopes unclosed", self.scopes)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:100:54 [INFO] [stdout] | [INFO] [stdout] 100 | ... self.builder.mov(&*register.clone(), &*eval.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `®ister.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:100:74 [INFO] [stdout] | [INFO] [stdout] 100 | ... self.builder.mov(&*register.clone(), &*eval.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&eval.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/compiler.rs:153:72 [INFO] [stdout] | [INFO] [stdout] 153 | pub fn assignment(&mut self, name: String, var_type: VariableType, value: Box) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:174:72 [INFO] [stdout] | [INFO] [stdout] 174 | ... self.builder.local_word_assign(4, "dword", &*dword_reg(register.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&dword_reg(register.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/compiler.rs:197:16 [INFO] [stdout] | [INFO] [stdout] 197 | _args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] = note: `#[warn(clippy::vec_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/compiler.rs:198:15 [INFO] [stdout] | [INFO] [stdout] 198 | body: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:200:36 [INFO] [stdout] | [INFO] [stdout] 200 | self.builder.open_function(&*name); [INFO] [stdout] | ^^^^^^ help: try: `&name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:135:40 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"push\t\t\trbp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:135:38 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("push\t\t\trbp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:136:40 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"mov\t\t\t\trbp, rsp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:136:38 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("mov\t\t\t\trbp, rsp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:213:25 [INFO] [stdout] | [INFO] [stdout] 213 | &*format!("local_string_{}", self.string_literal_count), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("local_string_{}", self.string_literal_count)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:149:42 [INFO] [stdout] | [INFO] [stdout] 149 | self.add_value_function_head(&*format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:214:25 [INFO] [stdout] | [INFO] [stdout] 214 | &*value, [INFO] [stdout] | ^^^^^^^ help: try: `&value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:158:28 [INFO] [stdout] | [INFO] [stdout] 158 | self.add_line_text(&*self.function_head.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.function_head.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/compiler.rs:230:35 [INFO] [stdout] | [INFO] [stdout] 230 | let variable_id = self.local_variables.get(&*name).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables.get(&*name).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:175:18 [INFO] [stdout] | [INFO] [stdout] 175 | self.mov(&*format!("{} [rsp - {}]", word_size, offset), value_or_register); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{} [rsp - {}]", word_size, offset)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:180:43 [INFO] [stdout] | [INFO] [stdout] 180 | self.local_word_assign(2, "word", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/compiler.rs:255:66 [INFO] [stdout] | [INFO] [stdout] 255 | pub fn function_call(&mut self, function_name: String, args: Vec>) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:183:44 [INFO] [stdout] | [INFO] [stdout] 183 | self.local_word_assign(4, "dword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:186:44 [INFO] [stdout] | [INFO] [stdout] 186 | self.local_word_assign(8, "qword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables.get(id).unwrap().clone()` [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: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:277:40 [INFO] [stdout] | [INFO] [stdout] 277 | self.builder.mov(register, &*argument); [INFO] [stdout] | ^^^^^^^^^^ help: try: `&argument` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables_offset.get(id).unwrap().clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/compiler.rs:280:27 [INFO] [stdout] | [INFO] [stdout] 280 | self.builder.call(&*function_name); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&function_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables_offset.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/compiler.rs:283:35 [INFO] [stdout] | [INFO] [stdout] 283 | fn return_function(&mut self, value: Box) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:208:28 [INFO] [stdout] | [INFO] [stdout] 208 | self.add_line_data(&*format!(r#"{}: equ $ - {}"#, new_addr, from_addr)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(r#"{}: equ $ - {}"#, new_addr, from_addr)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/compiler.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | / match self.ast.clone() { [INFO] [stdout] 320 | | Node::Program { body } => { [INFO] [stdout] 321 | | for part in body { [INFO] [stdout] 322 | | self.single(*part) [INFO] [stdout] ... | [INFO] [stdout] 325 | | _ => {} [INFO] [stdout] 326 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 319 ~ if let Node::Program { body } = self.ast.clone() { [INFO] [stdout] 320 + for part in body { [INFO] [stdout] 321 + self.single(*part) [INFO] [stdout] 322 + } [INFO] [stdout] 323 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:223:28 [INFO] [stdout] | [INFO] [stdout] 223 | self.add_line_data(&*new_string); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&new_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:228:28 [INFO] [stdout] | [INFO] [stdout] 228 | self.add_line_data(&*format!(".len: equ $ - {}", addr)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(".len: equ $ - {}", addr)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | self.add_line_text(&*format!("extern\t\t\t\t{}", function_or_address)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("extern\t\t\t\t{}", function_or_address)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:277:37 [INFO] [stdout] | [INFO] [stdout] 277 | self.add_value_function(&*format!("{}\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:279:37 [INFO] [stdout] | [INFO] [stdout] 279 | self.add_value_function(&*format!("{}\t\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:284:37 [INFO] [stdout] | [INFO] [stdout] 284 | self.add_value_function(&*format!("{}\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:286:37 [INFO] [stdout] | [INFO] [stdout] 286 | self.add_value_function(&*format!("{}\t\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:359:28 [INFO] [stdout] | [INFO] [stdout] 359 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [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 boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:378:28 [INFO] [stdout] | [INFO] [stdout] 378 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:400:28 [INFO] [stdout] | [INFO] [stdout] 400 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:431:28 [INFO] [stdout] | [INFO] [stdout] 431 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lexer.rs:447:28 [INFO] [stdout] | [INFO] [stdout] 447 | if !next.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `next.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/lexer.rs:279:68 [INFO] [stdout] | [INFO] [stdout] 279 | && num.contains(&self.get_next_char_ignore_space().expect(&format!( [INFO] [stdout] | ____________________________________________________________________^ [INFO] [stdout] 280 | | "expected char! at line {} char {}", [INFO] [stdout] 281 | | self.y, self.tok_start_y [INFO] [stdout] 282 | | ))) [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] 279 ~ && num.contains(&self.get_next_char_ignore_space().unwrap_or_else(|| panic!("expected char! at line {} char {}", [INFO] [stdout] 280 ~ self.y, self.tok_start_y))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_gas.rs:135:40 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"push\t\t\trbp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:135:38 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("push\t\t\trbp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_gas.rs:136:40 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"mov\t\t\t\trbp, rsp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:136:38 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("mov\t\t\t\trbp, rsp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:149:42 [INFO] [stdout] | [INFO] [stdout] 149 | self.add_value_function_head(&*format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:158:28 [INFO] [stdout] | [INFO] [stdout] 158 | self.add_line_text(&*self.function_head.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.function_head.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:175:18 [INFO] [stdout] | [INFO] [stdout] 175 | self.mov(&*format!("{} [rsp - {}]", word_size, offset), value_or_register); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{} [rsp - {}]", word_size, offset)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:180:43 [INFO] [stdout] | [INFO] [stdout] 180 | self.local_word_assign(2, "word", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:183:44 [INFO] [stdout] | [INFO] [stdout] 183 | self.local_word_assign(4, "dword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:186:44 [INFO] [stdout] | [INFO] [stdout] 186 | self.local_word_assign(8, "qword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_gas.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables.get(id).unwrap().clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_gas.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_gas.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables_offset.get(id).unwrap().clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_gas.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables_offset.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:208:28 [INFO] [stdout] | [INFO] [stdout] 208 | self.add_line_data(&*format!(r#"{}: equ $ - {}"#, new_addr, from_addr)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(r#"{}: equ $ - {}"#, new_addr, from_addr)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:223:28 [INFO] [stdout] | [INFO] [stdout] 223 | self.add_line_data(&*new_string); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&new_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | self.add_line_text(&*format!(".extern\t\t\t\t{}", function_or_address)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(".extern\t\t\t\t{}", function_or_address)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:277:37 [INFO] [stdout] | [INFO] [stdout] 277 | self.add_value_function(&*format!("{}\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:279:37 [INFO] [stdout] | [INFO] [stdout] 279 | self.add_value_function(&*format!("{}\t\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:284:37 [INFO] [stdout] | [INFO] [stdout] 284 | self.add_value_function(&*format!("{}\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:286:37 [INFO] [stdout] | [INFO] [stdout] 286 | self.add_value_function(&*format!("{}\t\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/parser.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | let types = vec!["int", "string", "char", "bool", "float"]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `["int", "string", "char", "bool", "float"]` [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: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:214:31 [INFO] [stdout] | [INFO] [stdout] 214 | for character in value.clone().chars() { [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/builder_dir/builder_gas.rs:214:31 [INFO] [stdout] | [INFO] [stdout] 214 | for character in value.clone().chars() { [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/minimal_lang.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | return program.run() [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] 86 - return program.run() [INFO] [stdout] 86 + program.run() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:93:15 [INFO] [stdout] | [INFO] [stdout] 93 | body: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:98:15 [INFO] [stdout] | [INFO] [stdout] 98 | args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:99:15 [INFO] [stdout] | [INFO] [stdout] 99 | body: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:103:15 [INFO] [stdout] | [INFO] [stdout] 103 | args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:133:14 [INFO] [stdout] | [INFO] [stdout] 133 | program: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/parser.rs:210:28 [INFO] [stdout] | [INFO] [stdout] 210 | if self.program.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.program.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/parser.rs:239:28 [INFO] [stdout] | [INFO] [stdout] 239 | if values.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `values.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: accessing first element with `values.get(0)` [INFO] [stdout] --> src/parser.rs:244:49 [INFO] [stdout] | [INFO] [stdout] 244 | if values.len() == 1 && values.get(0).unwrap().is_data_type() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `values.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:295:45 [INFO] [stdout] | [INFO] [stdout] 295 | / ... &*format!( [INFO] [stdout] 296 | | ... "'{}'({:?}) is a non parse token", [INFO] [stdout] 297 | | ... self.current_token.value.clone(), [INFO] [stdout] 298 | | ... self.current_token.token_type [INFO] [stdout] 299 | | ... ), [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 295 ~ &format!( [INFO] [stdout] 296 + "'{}'({:?}) is a non parse token", [INFO] [stdout] 297 + self.current_token.value.clone(), [INFO] [stdout] 298 + self.current_token.token_type [INFO] [stdout] 299 ~ ), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:319:29 [INFO] [stdout] | [INFO] [stdout] 319 | ... &*format!("Unknown '{}'", self.current_token.value), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("Unknown '{}'", self.current_token.value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:353:45 [INFO] [stdout] | [INFO] [stdout] 353 | ... &*self.current_token.value.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.current_token.value.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:390:53 [INFO] [stdout] | [INFO] [stdout] 390 | ... string_to_variable_type(&*self.current_token.value.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.current_token.value.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:435:33 [INFO] [stdout] | [INFO] [stdout] 435 | / ... &*format!( [INFO] [stdout] 436 | | ... "'{}'({:?}) is a non parse token", [INFO] [stdout] 437 | | ... self.current_token.value.clone(), [INFO] [stdout] 438 | | ... self.current_token.token_type [INFO] [stdout] 439 | | ... ), [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 435 ~ &format!( [INFO] [stdout] 436 + "'{}'({:?}) is a non parse token", [INFO] [stdout] 437 + self.current_token.value.clone(), [INFO] [stdout] 438 + self.current_token.token_type [INFO] [stdout] 439 ~ ), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:446:21 [INFO] [stdout] | [INFO] [stdout] 446 | let value; [INFO] [stdout] | ^^^^^^^^^^ created here [INFO] [stdout] 447 | value = Box::new(token_as_constant_node(values.pop().unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `value` here [INFO] [stdout] | [INFO] [stdout] 446 ~ [INFO] [stdout] 447 ~ let value = Box::new(token_as_constant_node(values.pop().unwrap())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parser.rs:462:17 [INFO] [stdout] | [INFO] [stdout] 462 | &*format!("Unclosed Scopes, {} scopes unclosed", self.scopes), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("Unclosed Scopes, {} scopes unclosed", self.scopes)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:135:40 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"push\t\t\trbp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:135:38 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("push\t\t\trbp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:136:40 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"mov\t\t\t\trbp, rsp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:136:38 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("mov\t\t\t\trbp, rsp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:149:42 [INFO] [stdout] | [INFO] [stdout] 149 | self.add_value_function_head(&*format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:158:28 [INFO] [stdout] | [INFO] [stdout] 158 | self.add_line_text(&*self.function_head.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.function_head.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:175:18 [INFO] [stdout] | [INFO] [stdout] 175 | self.mov(&*format!("{} [rsp - {}]", word_size, offset), value_or_register); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{} [rsp - {}]", word_size, offset)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:180:43 [INFO] [stdout] | [INFO] [stdout] 180 | self.local_word_assign(2, "word", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:183:44 [INFO] [stdout] | [INFO] [stdout] 183 | self.local_word_assign(4, "dword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:186:44 [INFO] [stdout] | [INFO] [stdout] 186 | self.local_word_assign(8, "qword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables.get(id).unwrap().clone()` [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: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables_offset.get(id).unwrap().clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables_offset.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:208:28 [INFO] [stdout] | [INFO] [stdout] 208 | self.add_line_data(&*format!(r#"{}: equ $ - {}"#, new_addr, from_addr)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(r#"{}: equ $ - {}"#, new_addr, from_addr)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:223:28 [INFO] [stdout] | [INFO] [stdout] 223 | self.add_line_data(&*new_string); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&new_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:228:28 [INFO] [stdout] | [INFO] [stdout] 228 | self.add_line_data(&*format!(".len: equ $ - {}", addr)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(".len: equ $ - {}", addr)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | self.add_line_text(&*format!("extern\t\t\t\t{}", function_or_address)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("extern\t\t\t\t{}", function_or_address)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:277:37 [INFO] [stdout] | [INFO] [stdout] 277 | self.add_value_function(&*format!("{}\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:279:37 [INFO] [stdout] | [INFO] [stdout] 279 | self.add_value_function(&*format!("{}\t\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:284:37 [INFO] [stdout] | [INFO] [stdout] 284 | self.add_value_function(&*format!("{}\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:286:37 [INFO] [stdout] | [INFO] [stdout] 286 | self.add_value_function(&*format!("{}\t\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_gas.rs:135:40 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"push\t\t\trbp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:135:38 [INFO] [stdout] | [INFO] [stdout] 135 | self.add_value_function_head(&*format!("push\t\t\trbp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("push\t\t\trbp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/builder_dir/builder_gas.rs:136:40 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"mov\t\t\t\trbp, rsp".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: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:136:38 [INFO] [stdout] | [INFO] [stdout] 136 | self.add_value_function_head(&*format!("mov\t\t\t\trbp, rsp")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("mov\t\t\t\trbp, rsp")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:149:42 [INFO] [stdout] | [INFO] [stdout] 149 | self.add_value_function_head(&*format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("sub\t\t\t\trsp, {}", self.local_offset / 12 * 2 + 12)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:158:28 [INFO] [stdout] | [INFO] [stdout] 158 | self.add_line_text(&*self.function_head.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&self.function_head.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:175:18 [INFO] [stdout] | [INFO] [stdout] 175 | self.mov(&*format!("{} [rsp - {}]", word_size, offset), value_or_register); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{} [rsp - {}]", word_size, offset)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:180:43 [INFO] [stdout] | [INFO] [stdout] 180 | self.local_word_assign(2, "word", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:183:44 [INFO] [stdout] | [INFO] [stdout] 183 | self.local_word_assign(4, "dword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:186:44 [INFO] [stdout] | [INFO] [stdout] 186 | self.local_word_assign(8, "qword", &*value.to_string()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&value.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_gas.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables.get(id).unwrap().clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_gas.rs:197:34 [INFO] [stdout] | [INFO] [stdout] 197 | let word_size: u32 = self.local_variables.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/builder_dir/builder_gas.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.local_variables_offset.get(id).unwrap().clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/builder_dir/builder_gas.rs:198:36 [INFO] [stdout] | [INFO] [stdout] 198 | let word_offset: u32 = self.local_variables_offset.get(id).unwrap().clone() as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.local_variables_offset.get(id).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:208:28 [INFO] [stdout] | [INFO] [stdout] 208 | self.add_line_data(&*format!(r#"{}: equ $ - {}"#, new_addr, from_addr)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(r#"{}: equ $ - {}"#, new_addr, from_addr)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:223:28 [INFO] [stdout] | [INFO] [stdout] 223 | self.add_line_data(&*new_string); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&new_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | self.add_line_text(&*format!(".extern\t\t\t\t{}", function_or_address)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!(".extern\t\t\t\t{}", function_or_address)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:277:37 [INFO] [stdout] | [INFO] [stdout] 277 | self.add_value_function(&*format!("{}\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:279:37 [INFO] [stdout] | [INFO] [stdout] 279 | self.add_value_function(&*format!("{}\t\t\t\t{}", op, left)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}", op, left)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:284:37 [INFO] [stdout] | [INFO] [stdout] 284 | self.add_value_function(&*format!("{}\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/builder_dir/builder_gas.rs:286:37 [INFO] [stdout] | [INFO] [stdout] 286 | self.add_value_function(&*format!("{}\t\t\t\t{}, {}", op, left, right)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&format!("{}\t\t\t\t{}, {}", op, left, right)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/parser.rs:202:21 [INFO] [stdout] | [INFO] [stdout] 202 | let types = vec!["int", "string", "char", "bool", "float"]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `["int", "string", "char", "bool", "float"]` [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: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/builder_dir/builder_nasm.rs:214:31 [INFO] [stdout] | [INFO] [stdout] 214 | for character in value.clone().chars() { [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/builder_dir/builder_gas.rs:214:31 [INFO] [stdout] | [INFO] [stdout] 214 | for character in value.clone().chars() { [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.69s [INFO] running `Command { std: "docker" "inspect" "97c17d5bdb94d513c006c340c0efbce9072d749e68dfe3ef3fff3bef1784e5b5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "97c17d5bdb94d513c006c340c0efbce9072d749e68dfe3ef3fff3bef1784e5b5", kill_on_drop: false }` [INFO] [stdout] 97c17d5bdb94d513c006c340c0efbce9072d749e68dfe3ef3fff3bef1784e5b5