[INFO] cloning repository https://github.com/franzkurt/pythonVM [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/franzkurt/pythonVM" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffranzkurt%2FpythonVM", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffranzkurt%2FpythonVM'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b93492185f6c822303738bd6aa518f1c688ecdd9 [INFO] testing franzkurt/pythonVM against try#8de4c7234dd9b97c9d76b58671343fdbbc9a433e+target=x86_64-unknown-linux-musl for musl_upgrade_1_2_5_with_libc_patch_0 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffranzkurt%2FpythonVM" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/franzkurt/pythonVM [INFO] finished tweaking git repo https://github.com/franzkurt/pythonVM [INFO] tweaked toml for git repo https://github.com/franzkurt/pythonVM written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/franzkurt/pythonVM on toolchain 8de4c7234dd9b97c9d76b58671343fdbbc9a433e [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/franzkurt/pythonVM 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" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8f5e3c84655eaf066a765f5e73f727171fbca1a2ae02cf47b1084523d0665f2c [INFO] running `Command { std: "docker" "start" "-a" "8f5e3c84655eaf066a765f5e73f727171fbca1a2ae02cf47b1084523d0665f2c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8f5e3c84655eaf066a765f5e73f727171fbca1a2ae02cf47b1084523d0665f2c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8f5e3c84655eaf066a765f5e73f727171fbca1a2ae02cf47b1084523d0665f2c", kill_on_drop: false }` [INFO] [stdout] 8f5e3c84655eaf066a765f5e73f727171fbca1a2ae02cf47b1084523d0665f2c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "build" "--frozen" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 9eb9b7aad1e084b63315c811f3cf11a517dd5df60df6b398595ccb1c89d849ce [INFO] running `Command { std: "docker" "start" "-a" "9eb9b7aad1e084b63315c811f3cf11a517dd5df60df6b398595ccb1c89d849ce", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.5.0 [INFO] [stderr] Compiling regex-syntax v0.7.2 [INFO] [stderr] Compiling aho-corasick v1.0.1 [INFO] [stderr] Compiling regex v1.8.3 [INFO] [stderr] Compiling pythoninterpreter v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/interpreter.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BinaryOperator` and `UnaryOperator` [INFO] [stdout] --> src/parser.rs:1:56 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::interpreter::{Value, Expression, Statement, BinaryOperator, UnaryOperator, Function}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/main.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/interpreter.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 139 | _ => unimplemented!(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/interpreter.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 99 | BinaryOperator::Add => match (left_value, right_value) { [INFO] [stdout] | ------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 105 | BinaryOperator::Subtract => match (left_value, right_value) { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 110 | BinaryOperator::Multiply => match (left_value, right_value) { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 115 | BinaryOperator::Divide => match (left_value, right_value) { [INFO] [stdout] | ---------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 139 | _ => unimplemented!(), [INFO] [stdout] | ^ ...and 9 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/interpreter.rs:200:31 [INFO] [stdout] | [INFO] [stdout] 200 | Statement::Import(name) => {} [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/tokenizer.rs:244:9 [INFO] [stdout] | [INFO] [stdout] 242 | "!" => Some(Symbol::SendMessage), [INFO] [stdout] | --- matches all the relevant values [INFO] [stdout] 243 | "\"" => Some(Symbol::DoubleQuote), [INFO] [stdout] 244 | "!" => { [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/tokenizer.rs:306:9 [INFO] [stdout] | [INFO] [stdout] 239 | "^" => Some(Symbol::BitwiseXor), [INFO] [stdout] | --- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 306 | "^" => Some(Symbol::Exponent), [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/parser.rs:159:51 [INFO] [stdout] | [INFO] [stdout] 159 | ... Symbol::DoubleQuote | Symbol::DoubleQuote => {} [INFO] [stdout] | ------------------- ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | | [INFO] [stdout] | matches all the relevant values [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/parser.rs:128:39 [INFO] [stdout] | [INFO] [stdout] 128 | Token::Identifier(ident) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/parser.rs:146:39 [INFO] [stdout] | [INFO] [stdout] 146 | Token::Identifier(name) => { }, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/parser.rs:211:61 [INFO] [stdout] | [INFO] [stdout] 211 | ... Token::Text(t)|Token::FString(t) => { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 211 | Token::Text(_t)|Token::FString(_t) => { [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main2` is never used [INFO] [stdout] --> src/main.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn main2() { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Variable` is never constructed [INFO] [stdout] --> src/interpreter.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Variable { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Variable` 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 `None`, `List`, `Tuple`, and `Set` are never constructed [INFO] [stdout] --> src/interpreter.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum Value { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 14 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | List(Vec), [INFO] [stdout] | ^^^^ [INFO] [stdout] 22 | Tuple(Vec), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | Set(Vec), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Value` 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: fields `name` and `params` are never read [INFO] [stdout] --> src/interpreter.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct Function { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 30 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 31 | pub params: Vec<(String, Option)>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Function` 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: field `0` is never read [INFO] [stdout] --> src/interpreter.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | Expression(Expression), [INFO] [stdout] | ---------- ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 39 - Expression(Expression), [INFO] [stdout] 39 + Expression(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/interpreter.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 45 | Import(String), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 45 - Import(String), [INFO] [stdout] 45 + Import(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Assignment`, `If`, `While`, `For`, and `Return` are never constructed [INFO] [stdout] --> src/interpreter.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum Statement { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 38 | Assignment(String, Expression), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 39 | Expression(Expression), [INFO] [stdout] 40 | If(Expression, Vec, Option>), [INFO] [stdout] | ^^ [INFO] [stdout] 41 | While(Expression, Vec), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 42 | For(String, Expression, Expression, Vec), [INFO] [stdout] | ^^^ [INFO] [stdout] 43 | Function(Function), [INFO] [stdout] 44 | Return(Expression), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Statement` 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: field `0` is never read [INFO] [stdout] --> src/interpreter.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | Literal(Value), [INFO] [stdout] | ------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expression` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 53 - Literal(Value), [INFO] [stdout] 53 + Literal(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Binary`, `Unary`, `Variable`, and `FunctionCall` are never constructed [INFO] [stdout] --> src/interpreter.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 51 | Binary(Box, BinaryOperator, Box), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 52 | Unary(UnaryOperator, Box), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 53 | Literal(Value), [INFO] [stdout] 54 | Variable(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 55 | FunctionCall(String, Vec), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` 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: multiple variants are never constructed [INFO] [stdout] --> src/interpreter.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 60 | pub enum BinaryOperator { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 61 | Add, [INFO] [stdout] | ^^^ [INFO] [stdout] 62 | Subtract, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 63 | Multiply, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 64 | Divide, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 65 | Modulo, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 66 | Equal, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 67 | NotEqual, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 68 | LessThan, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 69 | GreaterThan, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 70 | LessThanOrEqual, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | GreaterThanOrEqual, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 72 | And, [INFO] [stdout] | ^^^ [INFO] [stdout] 73 | Or, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryOperator` 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 `Not` and `Minus` are never constructed [INFO] [stdout] --> src/interpreter.rs:79:5 [INFO] [stdout] | [INFO] [stdout] 78 | pub enum UnaryOperator { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 79 | Not, [INFO] [stdout] | ^^^ [INFO] [stdout] 80 | Minus, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnaryOperator` 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 `Interpreter` is never constructed [INFO] [stdout] --> src/interpreter.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | struct Interpreter { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Interpreter` 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: methods `eval_expression` and `eval_statement` are never used [INFO] [stdout] --> src/interpreter.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 91 | impl Interpreter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 92 | // Define a function to evaluate an expression and return its value [INFO] [stdout] 93 | fn eval_expression(&self, expr: &Expression) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn eval_statement(&mut self, statement: &Statement) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main` is never used [INFO] [stdout] --> src/interpreter.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn main() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `len` is never used [INFO] [stdout] --> src/tokenizer.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 55 | impl Keyword { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 56 | fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `UnexpectedEndOfInput` and `RecursionLimitExceeded` are never constructed [INFO] [stdout] --> src/tokenizer.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 191 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 192 | UnexpectedToken(Token), [INFO] [stdout] 193 | UnexpectedEndOfInput, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 194 | RecursionLimitExceeded, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reverse_symbol` is never used [INFO] [stdout] --> src/tokenizer.rs:311:4 [INFO] [stdout] | [INFO] [stdout] 311 | fn reverse_symbol(symbol: &Symbol) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reverse_keyword` is never used [INFO] [stdout] --> src/tokenizer.rs:397:4 [INFO] [stdout] | [INFO] [stdout] 397 | fn reverse_keyword(keyword: &Keyword) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `IntoParenthesis`, `IntoContainer`, and `EndStatement` are never constructed [INFO] [stdout] --> src/parser.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 30 | enum SyntaxState{ [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] 31 | IntoStatement, [INFO] [stdout] 32 | IntoParenthesis, //into function call, assigment or expression [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | IntoContainer, //list, tuple, .. [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | EndStatement, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SyntaxState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_ident` is never read [INFO] [stdout] --> src/parser.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct Parser { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 54 | // using drain to remove tokens allow functions to get all tokens and jump [INFO] [stdout] 55 | current_ident: i32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Parser` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `parse_expression` and `parse_block` are never used [INFO] [stdout] --> src/parser.rs:296:8 [INFO] [stdout] | [INFO] [stdout] 62 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 296 | fn parse_expression(&mut self) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 301 | fn parse_block(&mut self) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Tokenizer` should have a snake case name [INFO] [stdout] --> src/tokenizer.rs:435:8 [INFO] [stdout] | [INFO] [stdout] 435 | pub fn Tokenizer(input: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `tokenizer` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 98 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:106:33 [INFO] [stdout] | [INFO] [stdout] 106 | ... self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 106 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:111:33 [INFO] [stdout] | [INFO] [stdout] 111 | ... self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 111 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:125:25 [INFO] [stdout] | [INFO] [stdout] 125 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 125 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:148:25 [INFO] [stdout] | [INFO] [stdout] 148 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 148 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:169:25 [INFO] [stdout] | [INFO] [stdout] 169 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 169 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:188:25 [INFO] [stdout] | [INFO] [stdout] 188 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 188 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:243:25 [INFO] [stdout] | [INFO] [stdout] 243 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 243 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.59s [INFO] running `Command { std: "docker" "inspect" "9eb9b7aad1e084b63315c811f3cf11a517dd5df60df6b398595ccb1c89d849ce", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9eb9b7aad1e084b63315c811f3cf11a517dd5df60df6b398595ccb1c89d849ce", kill_on_drop: false }` [INFO] [stdout] 9eb9b7aad1e084b63315c811f3cf11a517dd5df60df6b398595ccb1c89d849ce [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--no-run" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] ee9a2457cef7ec3bb57f0e1288c0a539b0a08f7629b85ade1e91401088b12769 [INFO] running `Command { std: "docker" "start" "-a" "ee9a2457cef7ec3bb57f0e1288c0a539b0a08f7629b85ade1e91401088b12769", kill_on_drop: false }` [INFO] [stderr] Compiling pythoninterpreter v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/interpreter.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BinaryOperator` and `UnaryOperator` [INFO] [stdout] --> src/parser.rs:1:56 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::interpreter::{Value, Expression, Statement, BinaryOperator, UnaryOperator, Function}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/main.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/interpreter.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 139 | _ => unimplemented!(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/interpreter.rs:139:21 [INFO] [stdout] | [INFO] [stdout] 99 | BinaryOperator::Add => match (left_value, right_value) { [INFO] [stdout] | ------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 105 | BinaryOperator::Subtract => match (left_value, right_value) { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 110 | BinaryOperator::Multiply => match (left_value, right_value) { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 115 | BinaryOperator::Divide => match (left_value, right_value) { [INFO] [stdout] | ---------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 139 | _ => unimplemented!(), [INFO] [stdout] | ^ ...and 9 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/interpreter.rs:200:31 [INFO] [stdout] | [INFO] [stdout] 200 | Statement::Import(name) => {} [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/tokenizer.rs:244:9 [INFO] [stdout] | [INFO] [stdout] 242 | "!" => Some(Symbol::SendMessage), [INFO] [stdout] | --- matches all the relevant values [INFO] [stdout] 243 | "\"" => Some(Symbol::DoubleQuote), [INFO] [stdout] 244 | "!" => { [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/tokenizer.rs:306:9 [INFO] [stdout] | [INFO] [stdout] 239 | "^" => Some(Symbol::BitwiseXor), [INFO] [stdout] | --- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 306 | "^" => Some(Symbol::Exponent), [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/parser.rs:159:51 [INFO] [stdout] | [INFO] [stdout] 159 | ... Symbol::DoubleQuote | Symbol::DoubleQuote => {} [INFO] [stdout] | ------------------- ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | | [INFO] [stdout] | matches all the relevant values [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/parser.rs:128:39 [INFO] [stdout] | [INFO] [stdout] 128 | Token::Identifier(ident) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/parser.rs:146:39 [INFO] [stdout] | [INFO] [stdout] 146 | Token::Identifier(name) => { }, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/parser.rs:211:61 [INFO] [stdout] | [INFO] [stdout] 211 | ... Token::Text(t)|Token::FString(t) => { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 211 | Token::Text(_t)|Token::FString(_t) => { [INFO] [stdout] | + + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main2` is never used [INFO] [stdout] --> src/main.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn main2() { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Variable` is never constructed [INFO] [stdout] --> src/interpreter.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Variable { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Variable` 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 `None`, `List`, `Tuple`, and `Set` are never constructed [INFO] [stdout] --> src/interpreter.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum Value { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 14 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | List(Vec), [INFO] [stdout] | ^^^^ [INFO] [stdout] 22 | Tuple(Vec), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | Set(Vec), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Value` 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: fields `name` and `params` are never read [INFO] [stdout] --> src/interpreter.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct Function { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 30 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 31 | pub params: Vec<(String, Option)>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Function` 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: field `0` is never read [INFO] [stdout] --> src/interpreter.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | Expression(Expression), [INFO] [stdout] | ---------- ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 39 - Expression(Expression), [INFO] [stdout] 39 + Expression(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/interpreter.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 45 | Import(String), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 45 - Import(String), [INFO] [stdout] 45 + Import(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Assignment`, `If`, `While`, `For`, and `Return` are never constructed [INFO] [stdout] --> src/interpreter.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum Statement { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 38 | Assignment(String, Expression), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 39 | Expression(Expression), [INFO] [stdout] 40 | If(Expression, Vec, Option>), [INFO] [stdout] | ^^ [INFO] [stdout] 41 | While(Expression, Vec), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 42 | For(String, Expression, Expression, Vec), [INFO] [stdout] | ^^^ [INFO] [stdout] 43 | Function(Function), [INFO] [stdout] 44 | Return(Expression), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Statement` 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: field `0` is never read [INFO] [stdout] --> src/interpreter.rs:53:13 [INFO] [stdout] | [INFO] [stdout] 53 | Literal(Value), [INFO] [stdout] | ------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expression` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 53 - Literal(Value), [INFO] [stdout] 53 + Literal(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Binary`, `Unary`, `Variable`, and `FunctionCall` are never constructed [INFO] [stdout] --> src/interpreter.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 51 | Binary(Box, BinaryOperator, Box), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 52 | Unary(UnaryOperator, Box), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 53 | Literal(Value), [INFO] [stdout] 54 | Variable(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 55 | FunctionCall(String, Vec), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` 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: multiple variants are never constructed [INFO] [stdout] --> src/interpreter.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 60 | pub enum BinaryOperator { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 61 | Add, [INFO] [stdout] | ^^^ [INFO] [stdout] 62 | Subtract, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 63 | Multiply, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 64 | Divide, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 65 | Modulo, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 66 | Equal, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 67 | NotEqual, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 68 | LessThan, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 69 | GreaterThan, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 70 | LessThanOrEqual, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | GreaterThanOrEqual, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 72 | And, [INFO] [stdout] | ^^^ [INFO] [stdout] 73 | Or, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryOperator` 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 `Not` and `Minus` are never constructed [INFO] [stdout] --> src/interpreter.rs:79:5 [INFO] [stdout] | [INFO] [stdout] 78 | pub enum UnaryOperator { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 79 | Not, [INFO] [stdout] | ^^^ [INFO] [stdout] 80 | Minus, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnaryOperator` 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 `Interpreter` is never constructed [INFO] [stdout] --> src/interpreter.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | struct Interpreter { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Interpreter` 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: methods `eval_expression` and `eval_statement` are never used [INFO] [stdout] --> src/interpreter.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 91 | impl Interpreter { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 92 | // Define a function to evaluate an expression and return its value [INFO] [stdout] 93 | fn eval_expression(&self, expr: &Expression) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn eval_statement(&mut self, statement: &Statement) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main` is never used [INFO] [stdout] --> src/interpreter.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn main() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `len` is never used [INFO] [stdout] --> src/tokenizer.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 55 | impl Keyword { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 56 | fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `UnexpectedEndOfInput` and `RecursionLimitExceeded` are never constructed [INFO] [stdout] --> src/tokenizer.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 191 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 192 | UnexpectedToken(Token), [INFO] [stdout] 193 | UnexpectedEndOfInput, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 194 | RecursionLimitExceeded, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reverse_symbol` is never used [INFO] [stdout] --> src/tokenizer.rs:311:4 [INFO] [stdout] | [INFO] [stdout] 311 | fn reverse_symbol(symbol: &Symbol) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reverse_keyword` is never used [INFO] [stdout] --> src/tokenizer.rs:397:4 [INFO] [stdout] | [INFO] [stdout] 397 | fn reverse_keyword(keyword: &Keyword) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `IntoParenthesis`, `IntoContainer`, and `EndStatement` are never constructed [INFO] [stdout] --> src/parser.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 30 | enum SyntaxState{ [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] 31 | IntoStatement, [INFO] [stdout] 32 | IntoParenthesis, //into function call, assigment or expression [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | IntoContainer, //list, tuple, .. [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | EndStatement, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SyntaxState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_ident` is never read [INFO] [stdout] --> src/parser.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct Parser { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 54 | // using drain to remove tokens allow functions to get all tokens and jump [INFO] [stdout] 55 | current_ident: i32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Parser` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `parse_expression` and `parse_block` are never used [INFO] [stdout] --> src/parser.rs:296:8 [INFO] [stdout] | [INFO] [stdout] 62 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 296 | fn parse_expression(&mut self) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 301 | fn parse_block(&mut self) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `Tokenizer` should have a snake case name [INFO] [stdout] --> src/tokenizer.rs:435:8 [INFO] [stdout] | [INFO] [stdout] 435 | pub fn Tokenizer(input: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `tokenizer` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 98 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:106:33 [INFO] [stdout] | [INFO] [stdout] 106 | ... self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 106 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:111:33 [INFO] [stdout] | [INFO] [stdout] 111 | ... self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 111 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:125:25 [INFO] [stdout] | [INFO] [stdout] 125 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 125 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:148:25 [INFO] [stdout] | [INFO] [stdout] 148 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 148 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:169:25 [INFO] [stdout] | [INFO] [stdout] 169 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 169 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:188:25 [INFO] [stdout] | [INFO] [stdout] 188 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 188 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/parser.rs:243:25 [INFO] [stdout] | [INFO] [stdout] 243 | self.parse_token(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 243 | let _ = self.parse_token(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s [INFO] running `Command { std: "docker" "inspect" "ee9a2457cef7ec3bb57f0e1288c0a539b0a08f7629b85ade1e91401088b12769", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ee9a2457cef7ec3bb57f0e1288c0a539b0a08f7629b85ade1e91401088b12769", kill_on_drop: false }` [INFO] [stdout] ee9a2457cef7ec3bb57f0e1288c0a539b0a08f7629b85ade1e91401088b12769 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] ac7d0dff8724ed3538676fb9cd3bc6004212c99d3a90a416311723664cc87cd3 [INFO] running `Command { std: "docker" "start" "-a" "ac7d0dff8724ed3538676fb9cd3bc6004212c99d3a90a416311723664cc87cd3", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/interpreter.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `BinaryOperator` and `UnaryOperator` [INFO] [stderr] --> src/parser.rs:1:56 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::interpreter::{Value, Expression, Statement, BinaryOperator, UnaryOperator, Function}; [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/main.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/interpreter.rs:139:21 [INFO] [stderr] | [INFO] [stderr] 139 | _ => unimplemented!(), [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/interpreter.rs:139:21 [INFO] [stderr] | [INFO] [stderr] 99 | BinaryOperator::Add => match (left_value, right_value) { [INFO] [stderr] | ------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 105 | BinaryOperator::Subtract => match (left_value, right_value) { [INFO] [stderr] | ------------------------ matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 110 | BinaryOperator::Multiply => match (left_value, right_value) { [INFO] [stderr] | ------------------------ matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 115 | BinaryOperator::Divide => match (left_value, right_value) { [INFO] [stderr] | ---------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 139 | _ => unimplemented!(), [INFO] [stderr] | ^ ...and 9 other patterns collectively make this unreachable [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/interpreter.rs:200:31 [INFO] [stderr] | [INFO] [stderr] 200 | Statement::Import(name) => {} [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/tokenizer.rs:244:9 [INFO] [stderr] | [INFO] [stderr] 242 | "!" => Some(Symbol::SendMessage), [INFO] [stderr] | --- matches all the relevant values [INFO] [stderr] 243 | "\"" => Some(Symbol::DoubleQuote), [INFO] [stderr] 244 | "!" => { [INFO] [stderr] | ^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/tokenizer.rs:306:9 [INFO] [stderr] | [INFO] [stderr] 239 | "^" => Some(Symbol::BitwiseXor), [INFO] [stderr] | --- matches all the relevant values [INFO] [stderr] ... [INFO] [stderr] 306 | "^" => Some(Symbol::Exponent), [INFO] [stderr] | ^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/parser.rs:159:51 [INFO] [stderr] | [INFO] [stderr] 159 | ... Symbol::DoubleQuote | Symbol::DoubleQuote => {} [INFO] [stderr] | ------------------- ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stderr] | | [INFO] [stderr] | matches all the relevant values [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ident` [INFO] [stderr] --> src/parser.rs:128:39 [INFO] [stderr] | [INFO] [stderr] 128 | Token::Identifier(ident) => { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/parser.rs:146:39 [INFO] [stderr] | [INFO] [stderr] 146 | Token::Identifier(name) => { }, [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `t` [INFO] [stderr] --> src/parser.rs:211:61 [INFO] [stderr] | [INFO] [stderr] 211 | ... Token::Text(t)|Token::FString(t) => { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: if this is intentional, prefix it with an underscore [INFO] [stderr] | [INFO] [stderr] 211 | Token::Text(_t)|Token::FString(_t) => { [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: function `main2` is never used [INFO] [stderr] --> src/main.rs:34:4 [INFO] [stderr] | [INFO] [stderr] 34 | fn main2() { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: struct `Variable` is never constructed [INFO] [stderr] --> src/interpreter.rs:6:12 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct Variable { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Variable` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `None`, `List`, `Tuple`, and `Set` are never constructed [INFO] [stderr] --> src/interpreter.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 13 | pub enum Value { [INFO] [stderr] | ----- variants in this enum [INFO] [stderr] 14 | None, [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 21 | List(Vec), [INFO] [stderr] | ^^^^ [INFO] [stderr] 22 | Tuple(Vec), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 23 | Set(Vec), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Value` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `name` and `params` are never read [INFO] [stderr] --> src/interpreter.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 29 | pub struct Function { [INFO] [stderr] | -------- fields in this struct [INFO] [stderr] 30 | pub name: String, [INFO] [stderr] | ^^^^ [INFO] [stderr] 31 | pub params: Vec<(String, Option)>, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Function` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/interpreter.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | Expression(Expression), [INFO] [stderr] | ---------- ^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 39 - Expression(Expression), [INFO] [stderr] 39 + Expression(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/interpreter.rs:45:12 [INFO] [stderr] | [INFO] [stderr] 45 | Import(String), [INFO] [stderr] | ------ ^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 45 - Import(String), [INFO] [stderr] 45 + Import(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variants `Assignment`, `If`, `While`, `For`, and `Return` are never constructed [INFO] [stderr] --> src/interpreter.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 37 | pub enum Statement { [INFO] [stderr] | --------- variants in this enum [INFO] [stderr] 38 | Assignment(String, Expression), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 39 | Expression(Expression), [INFO] [stderr] 40 | If(Expression, Vec, Option>), [INFO] [stderr] | ^^ [INFO] [stderr] 41 | While(Expression, Vec), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 42 | For(String, Expression, Expression, Vec), [INFO] [stderr] | ^^^ [INFO] [stderr] 43 | Function(Function), [INFO] [stderr] 44 | Return(Expression), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/interpreter.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | Literal(Value), [INFO] [stderr] | ------- ^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `Expression` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 53 - Literal(Value), [INFO] [stderr] 53 + Literal(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variants `Binary`, `Unary`, `Variable`, and `FunctionCall` are never constructed [INFO] [stderr] --> src/interpreter.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 50 | pub enum Expression { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 51 | Binary(Box, BinaryOperator, Box), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 52 | Unary(UnaryOperator, Box), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 53 | Literal(Value), [INFO] [stderr] 54 | Variable(String), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 55 | FunctionCall(String, Vec), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Expression` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/interpreter.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 60 | pub enum BinaryOperator { [INFO] [stderr] | -------------- variants in this enum [INFO] [stderr] 61 | Add, [INFO] [stderr] | ^^^ [INFO] [stderr] 62 | Subtract, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 63 | Multiply, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 64 | Divide, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 65 | Modulo, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 66 | Equal, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 67 | NotEqual, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 68 | LessThan, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 69 | GreaterThan, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 70 | LessThanOrEqual, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 71 | GreaterThanOrEqual, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 72 | And, [INFO] [stderr] | ^^^ [INFO] [stderr] 73 | Or, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: `BinaryOperator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Not` and `Minus` are never constructed [INFO] [stderr] --> src/interpreter.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 78 | pub enum UnaryOperator { [INFO] [stderr] | ------------- variants in this enum [INFO] [stderr] 79 | Not, [INFO] [stderr] | ^^^ [INFO] [stderr] 80 | Minus, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `UnaryOperator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: struct `Interpreter` is never constructed [INFO] [stderr] --> src/interpreter.rs:85:8 [INFO] [stderr] | [INFO] [stderr] 85 | struct Interpreter { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Interpreter` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `eval_expression` and `eval_statement` are never used [INFO] [stderr] --> src/interpreter.rs:93:8 [INFO] [stderr] | [INFO] [stderr] 91 | impl Interpreter { [INFO] [stderr] | ---------------- methods in this implementation [INFO] [stderr] 92 | // Define a function to evaluate an expression and return its value [INFO] [stderr] 93 | fn eval_expression(&self, expr: &Expression) -> Value { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 197 | fn eval_statement(&mut self, statement: &Statement) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `main` is never used [INFO] [stderr] --> src/interpreter.rs:263:8 [INFO] [stderr] | [INFO] [stderr] 263 | pub fn main() { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `len` is never used [INFO] [stderr] --> src/tokenizer.rs:56:8 [INFO] [stderr] | [INFO] [stderr] 55 | impl Keyword { [INFO] [stderr] | ------------ method in this implementation [INFO] [stderr] 56 | fn len(&self) -> usize { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `UnexpectedEndOfInput` and `RecursionLimitExceeded` are never constructed [INFO] [stderr] --> src/tokenizer.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 191 | pub enum ParseError { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 192 | UnexpectedToken(Token), [INFO] [stderr] 193 | UnexpectedEndOfInput, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 194 | RecursionLimitExceeded, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: function `reverse_symbol` is never used [INFO] [stderr] --> src/tokenizer.rs:311:4 [INFO] [stderr] | [INFO] [stderr] 311 | fn reverse_symbol(symbol: &Symbol) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `reverse_keyword` is never used [INFO] [stderr] --> src/tokenizer.rs:397:4 [INFO] [stderr] | [INFO] [stderr] 397 | fn reverse_keyword(keyword: &Keyword) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `IntoParenthesis`, `IntoContainer`, and `EndStatement` are never constructed [INFO] [stderr] --> src/parser.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 30 | enum SyntaxState{ [INFO] [stderr] | ----------- variants in this enum [INFO] [stderr] 31 | IntoStatement, [INFO] [stderr] 32 | IntoParenthesis, //into function call, assigment or expression [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 35 | IntoContainer, //list, tuple, .. [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 42 | EndStatement, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `SyntaxState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `current_ident` is never read [INFO] [stderr] --> src/parser.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 53 | pub struct Parser { [INFO] [stderr] | ------ field in this struct [INFO] [stderr] 54 | // using drain to remove tokens allow functions to get all tokens and jump [INFO] [stderr] 55 | current_ident: i32, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Parser` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `parse_expression` and `parse_block` are never used [INFO] [stderr] --> src/parser.rs:296:8 [INFO] [stderr] | [INFO] [stderr] 62 | impl Parser { [INFO] [stderr] | ----------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 296 | fn parse_expression(&mut self) -> Result<(), ParseError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 301 | fn parse_block(&mut self) -> Result<(), ParseError> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `Tokenizer` should have a snake case name [INFO] [stderr] --> src/tokenizer.rs:435:8 [INFO] [stderr] | [INFO] [stderr] 435 | pub fn Tokenizer(input: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `tokenizer` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 98 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:106:33 [INFO] [stderr] | [INFO] [stderr] 106 | ... self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 106 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:111:33 [INFO] [stderr] | [INFO] [stderr] 111 | ... self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 111 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:125:25 [INFO] [stderr] | [INFO] [stderr] 125 | self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 125 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:148:25 [INFO] [stderr] | [INFO] [stderr] 148 | self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 148 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:169:25 [INFO] [stderr] | [INFO] [stderr] 169 | self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 169 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:188:25 [INFO] [stderr] | [INFO] [stderr] 188 | self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 188 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/parser.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | self.parse_token(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 243 | let _ = self.parse_token(); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: `pythoninterpreter` (bin "pythoninterpreter" test) generated 41 warnings (run `cargo fix --bin "pythoninterpreter" --tests` to apply 3 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/pythoninterpreter-a696f2bf9409c60c) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "ac7d0dff8724ed3538676fb9cd3bc6004212c99d3a90a416311723664cc87cd3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ac7d0dff8724ed3538676fb9cd3bc6004212c99d3a90a416311723664cc87cd3", kill_on_drop: false }` [INFO] [stdout] ac7d0dff8724ed3538676fb9cd3bc6004212c99d3a90a416311723664cc87cd3