[INFO] cloning repository https://github.com/fuzzymf/ferry [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fuzzymf/ferry" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffuzzymf%2Fferry", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffuzzymf%2Fferry'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9b3438e882d5fdecf5fb1bdc21d4ff8ccc119d0d [INFO] testing fuzzymf/ferry against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffuzzymf%2Fferry" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/fuzzymf/ferry [INFO] finished tweaking git repo https://github.com/fuzzymf/ferry [INFO] tweaked toml for git repo https://github.com/fuzzymf/ferry written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/fuzzymf/ferry on toolchain 1.100.0-beta.1 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/fuzzymf/ferry 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" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed [INFO] running `Command { std: "docker" "start" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling ferry v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [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: `Keyword` [INFO] [stdout] --> src/parser/declarations.rs:3:51 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Keyword` [INFO] [stdout] --> src/parser/expressions.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `count` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_len` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stdout] | [INFO] [stdout] 862 | let original_len = result.children.len(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_changed` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stdout] | [INFO] [stdout] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stdout] | [INFO] [stdout] 913 | ... changed = true; [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: value assigned to `loop_optimized` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stdout] | [INFO] [stdout] 1058 | loop_optimized = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1075 | loop_optimized |= bound_changed; [INFO] [stdout] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_var` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stdout] | [INFO] [stdout] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stdout] | [INFO] [stdout] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stdout] | [INFO] [stdout] 1870 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stdout] | [INFO] [stdout] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stdout] | [INFO] [stdout] 2458 | let mut has_multiple_returns = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_has_multiple_returns` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `has_multiple_returns` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stdout] | [INFO] [stdout] 2469 | has_multiple_returns = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stdout] | [INFO] [stdout] 827 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stdout] | [INFO] [stdout] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `void_ptr_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `float_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | let float_type = Type::Float; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/semantic/symbol_table.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | return_type, [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:541:50 [INFO] [stdout] | [INFO] [stdout] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `constant_folding_and_propagation` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), 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: function `fold_and_propagate` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stdout] | [INFO] [stdout] 229 | fn fold_and_propagate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stdout] | [INFO] [stdout] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_dead_code` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stdout] | [INFO] [stdout] 771 | fn remove_dead_code( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `advanced_loop_optimization` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stdout] | [INFO] [stdout] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float` and `Bool` are never constructed [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stdout] | [INFO] [stdout] 1161 | enum IRValue { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 1162 | Int(i32), [INFO] [stdout] 1163 | Float(f32), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1164 | Bool(bool), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRValue` 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: function `common_subexpression_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stdout] | [INFO] [stdout] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cse` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stdout] | [INFO] [stdout] 2362 | fn apply_cse( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_functions` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stdout] | [INFO] [stdout] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `var_counter` is never read [INFO] [stdout] --> src/ir/generator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct IRGenerator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | // Counter for generating unique variable names in the IR [INFO] [stdout] 7 | var_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fresh_var` is never used [INFO] [stdout] --> src/ir/generator.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl IRGenerator { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | fn fresh_var(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operator` is never used [INFO] [stdout] --> src/parser/types.rs:85:6 [INFO] [stdout] | [INFO] [stdout] 85 | enum Operator { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [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: `Keyword` [INFO] [stdout] --> src/parser/declarations.rs:3:51 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Keyword` [INFO] [stdout] --> src/parser/expressions.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/codegen/mod.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut param_offset = 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: `param_offset` [INFO] [stdout] --> src/codegen/mod.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut param_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_offset` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `count` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_len` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stdout] | [INFO] [stdout] 862 | let original_len = result.children.len(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_changed` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stdout] | [INFO] [stdout] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stdout] | [INFO] [stdout] 913 | ... changed = true; [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: value assigned to `loop_optimized` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stdout] | [INFO] [stdout] 1058 | loop_optimized = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1075 | loop_optimized |= bound_changed; [INFO] [stdout] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_var` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stdout] | [INFO] [stdout] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stdout] | [INFO] [stdout] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stdout] | [INFO] [stdout] 1870 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stdout] | [INFO] [stdout] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stdout] | [INFO] [stdout] 2458 | let mut has_multiple_returns = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_has_multiple_returns` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `has_multiple_returns` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stdout] | [INFO] [stdout] 2469 | has_multiple_returns = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stdout] | [INFO] [stdout] 827 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stdout] | [INFO] [stdout] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `void_ptr_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `float_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | let float_type = Type::Float; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/semantic/symbol_table.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | return_type, [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:541:50 [INFO] [stdout] | [INFO] [stdout] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_counter` is never read [INFO] [stdout] --> src/codegen/mod.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 27 | struct CodeGenContext { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 28 | asm_code: String, [INFO] [stdout] 29 | temp_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `constant_folding_and_propagation` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fold_and_propagate` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stdout] | [INFO] [stdout] 229 | fn fold_and_propagate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stdout] | [INFO] [stdout] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_dead_code` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stdout] | [INFO] [stdout] 771 | fn remove_dead_code( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `advanced_loop_optimization` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stdout] | [INFO] [stdout] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float` and `Bool` are never constructed [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stdout] | [INFO] [stdout] 1161 | enum IRValue { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 1162 | Int(i32), [INFO] [stdout] 1163 | Float(f32), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1164 | Bool(bool), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRValue` 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: function `common_subexpression_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stdout] | [INFO] [stdout] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cse` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stdout] | [INFO] [stdout] 2362 | fn apply_cse( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_functions` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stdout] | [INFO] [stdout] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `var_counter` is never read [INFO] [stdout] --> src/ir/generator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct IRGenerator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | // Counter for generating unique variable names in the IR [INFO] [stdout] 7 | var_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fresh_var` is never used [INFO] [stdout] --> src/ir/generator.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl IRGenerator { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | fn fresh_var(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Type` is never constructed [INFO] [stdout] --> src/ir/types.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum IRNodeType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 29 | Type, // Type information [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRNodeType` 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 `Int64`, `Double`, and `Array` are never constructed [INFO] [stdout] --> src/ir/types.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub enum IRType { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 45 | Int64, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 46 | Float, [INFO] [stdout] 47 | Double, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 48 | Pointer(Box), [INFO] [stdout] 49 | Array(Box, usize), // Type and size [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRType` 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 `line` and `column` are never read [INFO] [stdout] --> src/parser/tokenizer.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Token { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 6 | pub token_type: TokenType, // Type of token [INFO] [stdout] 7 | pub line: usize, // Line number for better error reporting [INFO] [stdout] | ^^^^ [INFO] [stdout] 8 | pub column: usize, // Column number for better error reporting [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/types.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | Comment(String), [INFO] [stdout] | ------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TokenType` 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] 71 - Comment(String), [INFO] [stdout] 71 + Comment(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operator` is never used [INFO] [stdout] --> src/parser/types.rs:85:6 [INFO] [stdout] | [INFO] [stdout] 85 | enum Operator { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LongDouble`, `UnsignedChar`, `UnsignedInt`, `UnsignedShort`, and `UnsignedLong` are never constructed [INFO] [stdout] --> src/parser/types.rs:166:5 [INFO] [stdout] | [INFO] [stdout] 157 | pub enum DataType { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 166 | LongDouble, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 167 | UnsignedChar, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 168 | UnsignedInt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 169 | UnsignedShort, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 170 | UnsignedLong, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DataType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Function`, `Statement`, and `Expression` are never constructed [INFO] [stdout] --> src/parser/types.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 190 | pub enum ASTNodeType { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 193 | Function, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | Statement, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | Expression, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTNodeType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Struct` and `Array` are never constructed [INFO] [stdout] --> src/semantic/symbol_table.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum Type { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Struct(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 18 | Array { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Type` 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 `is_initialized` are never read [INFO] [stdout] --> src/semantic/symbol_table.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct Symbol { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 27 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 28 | pub symbol_type: Type, [INFO] [stdout] 29 | pub is_initialized: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Symbol` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print_symbols` is never used [INFO] [stdout] --> src/semantic/symbol_table.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl SymbolTable { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn print_symbols(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 15.51s [INFO] running `Command { std: "docker" "inspect" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [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: `Keyword` [INFO] [stdout] --> src/parser/declarations.rs:3:51 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Keyword` [INFO] [stdout] --> src/parser/expressions.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `count` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_len` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stdout] | [INFO] [stdout] 862 | let original_len = result.children.len(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_changed` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stdout] | [INFO] [stdout] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stdout] | [INFO] [stdout] 913 | ... changed = true; [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: value assigned to `loop_optimized` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stdout] | [INFO] [stdout] 1058 | loop_optimized = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1075 | loop_optimized |= bound_changed; [INFO] [stdout] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_var` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stdout] | [INFO] [stdout] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stdout] | [INFO] [stdout] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stdout] | [INFO] [stdout] 1870 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stdout] | [INFO] [stdout] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stdout] | [INFO] [stdout] 2458 | let mut has_multiple_returns = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_has_multiple_returns` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `has_multiple_returns` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stdout] | [INFO] [stdout] 2469 | has_multiple_returns = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stdout] | [INFO] [stdout] 827 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stdout] | [INFO] [stdout] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `void_ptr_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `float_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | let float_type = Type::Float; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/semantic/symbol_table.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | return_type, [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:541:50 [INFO] [stdout] | [INFO] [stdout] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `constant_folding_and_propagation` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), 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: function `fold_and_propagate` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stdout] | [INFO] [stdout] 229 | fn fold_and_propagate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stdout] | [INFO] [stdout] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_dead_code` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stdout] | [INFO] [stdout] 771 | fn remove_dead_code( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `advanced_loop_optimization` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stdout] | [INFO] [stdout] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float` and `Bool` are never constructed [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stdout] | [INFO] [stdout] 1161 | enum IRValue { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 1162 | Int(i32), [INFO] [stdout] 1163 | Float(f32), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1164 | Bool(bool), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRValue` 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: function `common_subexpression_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stdout] | [INFO] [stdout] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cse` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stdout] | [INFO] [stdout] 2362 | fn apply_cse( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_functions` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stdout] | [INFO] [stdout] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `var_counter` is never read [INFO] [stdout] --> src/ir/generator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct IRGenerator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | // Counter for generating unique variable names in the IR [INFO] [stdout] 7 | var_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fresh_var` is never used [INFO] [stdout] --> src/ir/generator.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl IRGenerator { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | fn fresh_var(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operator` is never used [INFO] [stdout] --> src/parser/types.rs:85:6 [INFO] [stdout] | [INFO] [stdout] 85 | enum Operator { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [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: `Keyword` [INFO] [stdout] --> src/parser/declarations.rs:3:51 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Keyword` [INFO] [stdout] --> src/parser/expressions.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/codegen/mod.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut param_offset = 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: `param_offset` [INFO] [stdout] --> src/codegen/mod.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut param_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_offset` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `count` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_len` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stdout] | [INFO] [stdout] 862 | let original_len = result.children.len(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_changed` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stdout] | [INFO] [stdout] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stdout] | [INFO] [stdout] 913 | ... changed = true; [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: value assigned to `loop_optimized` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stdout] | [INFO] [stdout] 1058 | loop_optimized = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1075 | loop_optimized |= bound_changed; [INFO] [stdout] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_var` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stdout] | [INFO] [stdout] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stdout] | [INFO] [stdout] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stdout] | [INFO] [stdout] 1870 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stdout] | [INFO] [stdout] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stdout] | [INFO] [stdout] 2458 | let mut has_multiple_returns = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_has_multiple_returns` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `has_multiple_returns` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stdout] | [INFO] [stdout] 2469 | has_multiple_returns = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stdout] | [INFO] [stdout] 827 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stdout] | [INFO] [stdout] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `void_ptr_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `float_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | let float_type = Type::Float; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/semantic/symbol_table.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | return_type, [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:541:50 [INFO] [stdout] | [INFO] [stdout] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_counter` is never read [INFO] [stdout] --> src/codegen/mod.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 27 | struct CodeGenContext { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 28 | asm_code: String, [INFO] [stdout] 29 | temp_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `constant_folding_and_propagation` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fold_and_propagate` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stdout] | [INFO] [stdout] 229 | fn fold_and_propagate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stdout] | [INFO] [stdout] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_dead_code` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stdout] | [INFO] [stdout] 771 | fn remove_dead_code( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `advanced_loop_optimization` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stdout] | [INFO] [stdout] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float` and `Bool` are never constructed [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stdout] | [INFO] [stdout] 1161 | enum IRValue { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 1162 | Int(i32), [INFO] [stdout] 1163 | Float(f32), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1164 | Bool(bool), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRValue` 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: function `common_subexpression_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stdout] | [INFO] [stdout] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cse` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stdout] | [INFO] [stdout] 2362 | fn apply_cse( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_functions` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stdout] | [INFO] [stdout] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `var_counter` is never read [INFO] [stdout] --> src/ir/generator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct IRGenerator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | // Counter for generating unique variable names in the IR [INFO] [stdout] 7 | var_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fresh_var` is never used [INFO] [stdout] --> src/ir/generator.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl IRGenerator { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | fn fresh_var(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Type` is never constructed [INFO] [stdout] --> src/ir/types.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum IRNodeType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 29 | Type, // Type information [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRNodeType` 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 `Int64`, `Double`, and `Array` are never constructed [INFO] [stdout] --> src/ir/types.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub enum IRType { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 45 | Int64, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 46 | Float, [INFO] [stdout] 47 | Double, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 48 | Pointer(Box), [INFO] [stdout] 49 | Array(Box, usize), // Type and size [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRType` 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 `line` and `column` are never read [INFO] [stdout] --> src/parser/tokenizer.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Token { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 6 | pub token_type: TokenType, // Type of token [INFO] [stdout] 7 | pub line: usize, // Line number for better error reporting [INFO] [stdout] | ^^^^ [INFO] [stdout] 8 | pub column: usize, // Column number for better error reporting [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/types.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | Comment(String), [INFO] [stdout] | ------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TokenType` 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] 71 - Comment(String), [INFO] [stdout] 71 + Comment(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operator` is never used [INFO] [stdout] --> src/parser/types.rs:85:6 [INFO] [stdout] | [INFO] [stdout] 85 | enum Operator { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LongDouble`, `UnsignedChar`, `UnsignedInt`, `UnsignedShort`, and `UnsignedLong` are never constructed [INFO] [stdout] --> src/parser/types.rs:166:5 [INFO] [stdout] | [INFO] [stdout] 157 | pub enum DataType { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 166 | LongDouble, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 167 | UnsignedChar, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 168 | UnsignedInt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 169 | UnsignedShort, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 170 | UnsignedLong, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DataType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Function`, `Statement`, and `Expression` are never constructed [INFO] [stdout] --> src/parser/types.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 190 | pub enum ASTNodeType { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 193 | Function, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | Statement, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | Expression, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTNodeType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Struct` and `Array` are never constructed [INFO] [stdout] --> src/semantic/symbol_table.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum Type { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Struct(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 18 | Array { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Type` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling ferry v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: fields `name` and `is_initialized` are never read [INFO] [stdout] --> src/semantic/symbol_table.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct Symbol { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 27 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 28 | pub symbol_type: Type, [INFO] [stdout] 29 | pub is_initialized: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Symbol` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print_symbols` is never used [INFO] [stdout] --> src/semantic/symbol_table.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl SymbolTable { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn print_symbols(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [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: `Keyword` [INFO] [stdout] --> src/parser/declarations.rs:3:51 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Keyword` [INFO] [stdout] --> src/parser/expressions.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VecDeque` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stdout] | [INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [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: `Keyword` [INFO] [stdout] --> src/parser/declarations.rs:3:51 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Keyword` [INFO] [stdout] --> src/parser/expressions.rs:3:41 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/codegen/mod.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut param_offset = 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: `param_offset` [INFO] [stdout] --> src/codegen/mod.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut param_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_offset` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `count` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_len` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stdout] | [INFO] [stdout] 862 | let original_len = result.children.len(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_changed` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stdout] | [INFO] [stdout] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stdout] | [INFO] [stdout] 913 | ... changed = true; [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: value assigned to `loop_optimized` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stdout] | [INFO] [stdout] 1058 | loop_optimized = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1075 | loop_optimized |= bound_changed; [INFO] [stdout] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_var` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stdout] | [INFO] [stdout] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stdout] | [INFO] [stdout] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stdout] | [INFO] [stdout] 1870 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stdout] | [INFO] [stdout] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stdout] | [INFO] [stdout] 2458 | let mut has_multiple_returns = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_has_multiple_returns` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `has_multiple_returns` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stdout] | [INFO] [stdout] 2469 | has_multiple_returns = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stdout] | [INFO] [stdout] 827 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `count` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stdout] | [INFO] [stdout] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `original_len` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stdout] | [INFO] [stdout] 862 | let original_len = result.children.len(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_changed` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stdout] | [INFO] [stdout] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stdout] | [INFO] [stdout] 913 | ... changed = true; [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: value assigned to `loop_optimized` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stdout] | [INFO] [stdout] 1058 | loop_optimized = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1075 | loop_optimized |= bound_changed; [INFO] [stdout] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_var` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stdout] | [INFO] [stdout] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stdout] | [INFO] [stdout] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stdout] | [INFO] [stdout] 1870 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stdout] | [INFO] [stdout] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stdout] | [INFO] [stdout] 2458 | let mut has_multiple_returns = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_has_multiple_returns` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `has_multiple_returns` is never read [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stdout] | [INFO] [stdout] 2469 | has_multiple_returns = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `void_ptr_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `float_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | let float_type = Type::Float; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var_node` [INFO] [stdout] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stdout] | [INFO] [stdout] 827 | let (var_node, const_node) = [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/semantic/symbol_table.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ind_idx` [INFO] [stdout] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stdout] | [INFO] [stdout] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | return_type, [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:541:50 [INFO] [stdout] | [INFO] [stdout] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `temp_counter` is never read [INFO] [stdout] --> src/codegen/mod.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 27 | struct CodeGenContext { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 28 | asm_code: String, [INFO] [stdout] 29 | temp_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `constant_folding_and_propagation` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fold_and_propagate` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stdout] | [INFO] [stdout] 229 | fn fold_and_propagate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stdout] | [INFO] [stdout] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_dead_code` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stdout] | [INFO] [stdout] 771 | fn remove_dead_code( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `advanced_loop_optimization` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stdout] | [INFO] [stdout] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float` and `Bool` are never constructed [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stdout] | [INFO] [stdout] 1161 | enum IRValue { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 1162 | Int(i32), [INFO] [stdout] 1163 | Float(f32), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1164 | Bool(bool), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRValue` 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: function `common_subexpression_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stdout] | [INFO] [stdout] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cse` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stdout] | [INFO] [stdout] 2362 | fn apply_cse( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_functions` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stdout] | [INFO] [stdout] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `var_counter` is never read [INFO] [stdout] --> src/ir/generator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct IRGenerator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | // Counter for generating unique variable names in the IR [INFO] [stdout] 7 | var_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fresh_var` is never used [INFO] [stdout] --> src/ir/generator.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl IRGenerator { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | fn fresh_var(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Type` is never constructed [INFO] [stdout] --> src/ir/types.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum IRNodeType { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 29 | Type, // Type information [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRNodeType` 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 `Int64`, `Double`, and `Array` are never constructed [INFO] [stdout] --> src/ir/types.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub enum IRType { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 45 | Int64, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 46 | Float, [INFO] [stdout] 47 | Double, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 48 | Pointer(Box), [INFO] [stdout] 49 | Array(Box, usize), // Type and size [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRType` 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 `line` and `column` are never read [INFO] [stdout] --> src/parser/tokenizer.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Token { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 6 | pub token_type: TokenType, // Type of token [INFO] [stdout] 7 | pub line: usize, // Line number for better error reporting [INFO] [stdout] | ^^^^ [INFO] [stdout] 8 | pub column: usize, // Column number for better error reporting [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/types.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | Comment(String), [INFO] [stdout] | ------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TokenType` 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] 71 - Comment(String), [INFO] [stdout] 71 + Comment(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operator` is never used [INFO] [stdout] --> src/parser/types.rs:85:6 [INFO] [stdout] | [INFO] [stdout] 85 | enum Operator { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LongDouble`, `UnsignedChar`, `UnsignedInt`, `UnsignedShort`, and `UnsignedLong` are never constructed [INFO] [stdout] --> src/parser/types.rs:166:5 [INFO] [stdout] | [INFO] [stdout] 157 | pub enum DataType { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 166 | LongDouble, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 167 | UnsignedChar, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 168 | UnsignedInt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 169 | UnsignedShort, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 170 | UnsignedLong, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DataType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Function`, `Statement`, and `Expression` are never constructed [INFO] [stdout] --> src/parser/types.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 190 | pub enum ASTNodeType { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 193 | Function, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | Statement, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | Expression, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTNodeType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Struct` and `Array` are never constructed [INFO] [stdout] --> src/semantic/symbol_table.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum Type { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Struct(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 18 | Array { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Type` 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 `is_initialized` are never read [INFO] [stdout] --> src/semantic/symbol_table.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct Symbol { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 27 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 28 | pub symbol_type: Type, [INFO] [stdout] 29 | pub is_initialized: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Symbol` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print_symbols` is never used [INFO] [stdout] --> src/semantic/symbol_table.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl SymbolTable { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn print_symbols(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `void_ptr_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `float_type` [INFO] [stdout] --> src/semantic/preprocessor.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | let float_type = Type::Float; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/semantic/symbol_table.rs:87:14 [INFO] [stdout] | [INFO] [stdout] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:510:25 [INFO] [stdout] | [INFO] [stdout] 510 | return_type, [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type` [INFO] [stdout] --> src/semantic/mod.rs:541:50 [INFO] [stdout] | [INFO] [stdout] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `constant_folding_and_propagation` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), 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: function `fold_and_propagate` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stdout] | [INFO] [stdout] 229 | fn fold_and_propagate( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stdout] | [INFO] [stdout] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `remove_dead_code` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stdout] | [INFO] [stdout] 771 | fn remove_dead_code( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `advanced_loop_optimization` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stdout] | [INFO] [stdout] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Float` and `Bool` are never constructed [INFO] [stdout] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stdout] | [INFO] [stdout] 1161 | enum IRValue { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 1162 | Int(i32), [INFO] [stdout] 1163 | Float(f32), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1164 | Bool(bool), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IRValue` 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: function `common_subexpression_elimination` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stdout] | [INFO] [stdout] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cse` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stdout] | [INFO] [stdout] 2362 | fn apply_cse( [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_functions` is never used [INFO] [stdout] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stdout] | [INFO] [stdout] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `var_counter` is never read [INFO] [stdout] --> src/ir/generator.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct IRGenerator { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 6 | // Counter for generating unique variable names in the IR [INFO] [stdout] 7 | var_counter: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `fresh_var` is never used [INFO] [stdout] --> src/ir/generator.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl IRGenerator { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | fn fresh_var(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operator` is never used [INFO] [stdout] --> src/parser/types.rs:85:6 [INFO] [stdout] | [INFO] [stdout] 85 | enum Operator { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1.63s [INFO] running `Command { std: "docker" "inspect" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `VecDeque` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2:42 [INFO] [stderr] | [INFO] [stderr] 2 | use std::collections::{HashMap, HashSet, VecDeque}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Keyword` [INFO] [stderr] --> src/parser/declarations.rs:3:51 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::parser::types::{ASTNodeType, DataType, Keyword, TokenType}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Keyword` [INFO] [stderr] --> src/parser/expressions.rs:3:41 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::parser::types::{ASTNodeType, Keyword, TokenType}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `count` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stderr] | [INFO] [stderr] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `original_len` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:862:13 [INFO] [stderr] | [INFO] [stderr] 862 | let original_len = result.children.len(); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_len` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target_changed` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:904:52 [INFO] [stderr] | [INFO] [stderr] 904 | ... let (target_block, target_changed, target_removed) = [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_changed` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `changed` is never read [INFO] [stderr] --> src/ir/advanced_optimiser.rs:913:33 [INFO] [stderr] | [INFO] [stderr] 913 | ... changed = true; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `loop_optimized` is never read [INFO] [stderr] --> src/ir/advanced_optimiser.rs:1058:21 [INFO] [stderr] | [INFO] [stderr] 1058 | loop_optimized = true; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stderr] ... [INFO] [stderr] 1075 | loop_optimized |= bound_changed; [INFO] [stderr] | ------------------------------- `loop_optimized` is overwritten here before the previous value is read [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ind_var` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:1265:18 [INFO] [stderr] | [INFO] [stderr] 1265 | let (ind_var, const_node) = if is_induction_var(&condition.children[0], induction_vars) [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_var` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ind_idx` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:1642:59 [INFO] [stderr] | [INFO] [stderr] 1642 | ... let (has_ind_var, ind_idx, const_idx) = if is_induction_var( [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `var_node` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:1870:22 [INFO] [stderr] | [INFO] [stderr] 1870 | let (var_node, const_node) = [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ind_idx` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2097:34 [INFO] [stderr] | [INFO] [stderr] 2097 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stderr] [INFO] [stderr] warning: variable `has_multiple_returns` is assigned to, but never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2458:9 [INFO] [stderr] | [INFO] [stderr] 2458 | let mut has_multiple_returns = false; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_has_multiple_returns` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `has_multiple_returns` is never read [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2469:9 [INFO] [stderr] | [INFO] [stderr] 2469 | has_multiple_returns = true; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `var_node` [INFO] [stderr] --> src/ir/basic_optimiser.rs:827:22 [INFO] [stderr] | [INFO] [stderr] 827 | let (var_node, const_node) = [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_var_node` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ind_idx` [INFO] [stderr] --> src/ir/basic_optimiser.rs:1079:34 [INFO] [stderr] | [INFO] [stderr] 1079 | let (is_ind_var, ind_idx, const_idx) = [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ind_idx` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `void_ptr_type` [INFO] [stderr] --> src/semantic/preprocessor.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | let void_ptr_type = Type::Pointer(Box::new(void_type.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_void_ptr_type` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `float_type` [INFO] [stderr] --> src/semantic/preprocessor.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | let float_type = Type::Float; [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_float_type` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/semantic/symbol_table.rs:87:14 [INFO] [stderr] | [INFO] [stderr] 87 | for (i, scope) in self.scopes.iter().enumerate().rev() { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `return_type` [INFO] [stderr] --> src/semantic/mod.rs:510:25 [INFO] [stderr] | [INFO] [stderr] 510 | return_type, [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `return_type: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `return_type` [INFO] [stderr] --> src/semantic/mod.rs:541:50 [INFO] [stderr] | [INFO] [stderr] 541 | symbol_table::Type::Variadic(return_type) => { [INFO] [stderr] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type` [INFO] [stderr] [INFO] [stderr] warning: function `constant_folding_and_propagation` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stderr] | [INFO] [stderr] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `fold_and_propagate` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:229:4 [INFO] [stderr] | [INFO] [stderr] 229 | fn fold_and_propagate( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `enhanced_dead_code_elimination` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:430:4 [INFO] [stderr] | [INFO] [stderr] 430 | fn enhanced_dead_code_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `remove_dead_code` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:771:4 [INFO] [stderr] | [INFO] [stderr] 771 | fn remove_dead_code( [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `advanced_loop_optimization` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:1007:4 [INFO] [stderr] | [INFO] [stderr] 1007 | fn advanced_loop_optimization(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Float` and `Bool` are never constructed [INFO] [stderr] --> src/ir/advanced_optimiser.rs:1163:5 [INFO] [stderr] | [INFO] [stderr] 1161 | enum IRValue { [INFO] [stderr] | ------- variants in this enum [INFO] [stderr] 1162 | Int(i32), [INFO] [stderr] 1163 | Float(f32), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 1164 | Bool(bool), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `IRValue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: function `common_subexpression_elimination` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2296:4 [INFO] [stderr] | [INFO] [stderr] 2296 | fn common_subexpression_elimination(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `apply_cse` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2362:4 [INFO] [stderr] | [INFO] [stderr] 2362 | fn apply_cse( [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `optimize_functions` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:2413:4 [INFO] [stderr] | [INFO] [stderr] 2413 | fn optimize_functions(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `var_counter` is never read [INFO] [stderr] --> src/ir/generator.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct IRGenerator { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] 6 | // Counter for generating unique variable names in the IR [INFO] [stderr] 7 | var_counter: usize, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `fresh_var` is never used [INFO] [stderr] --> src/ir/generator.rs:21:8 [INFO] [stderr] | [INFO] [stderr] 12 | impl IRGenerator { [INFO] [stderr] | ---------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 21 | fn fresh_var(&mut self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `Operator` is never used [INFO] [stderr] --> src/parser/types.rs:85:6 [INFO] [stderr] | [INFO] [stderr] 85 | enum Operator { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ferry` (lib) generated 33 warnings (run `cargo fix --lib -p ferry` to apply 17 suggestions) [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/codegen/mod.rs:270:17 [INFO] [stderr] | [INFO] [stderr] 270 | let mut param_offset = 0; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param_offset` [INFO] [stderr] --> src/codegen/mod.rs:270:17 [INFO] [stderr] | [INFO] [stderr] 270 | let mut param_offset = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_param_offset` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `count` [INFO] [stderr] --> src/ir/advanced_optimiser.rs:235:18 [INFO] [stderr] | [INFO] [stderr] 235 | let (result, count) = fold_and_propagate_with_stats(node, const_map, changed)?; [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_count` [INFO] [stderr] [INFO] [stderr] warning: field `temp_counter` is never read [INFO] [stderr] --> src/codegen/mod.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 27 | struct CodeGenContext { [INFO] [stderr] | -------------- field in this struct [INFO] [stderr] 28 | asm_code: String, [INFO] [stderr] 29 | temp_counter: usize, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `constant_folding_and_propagation` is never used [INFO] [stderr] --> src/ir/advanced_optimiser.rs:114:4 [INFO] [stderr] | [INFO] [stderr] 114 | fn constant_folding_and_propagation(node: IRNode) -> Result<(IRNode, bool), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `Type` is never constructed [INFO] [stderr] --> src/ir/types.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 2 | pub enum IRNodeType { [INFO] [stderr] | ---------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 29 | Type, // Type information [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `IRNodeType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Int64`, `Double`, and `Array` are never constructed [INFO] [stderr] --> src/ir/types.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub enum IRType { [INFO] [stderr] | ------ variants in this enum [INFO] [stderr] ... [INFO] [stderr] 45 | Int64, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 46 | Float, [INFO] [stderr] 47 | Double, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 48 | Pointer(Box), [INFO] [stderr] 49 | Array(Box, usize), // Type and size [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `IRType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `line` and `column` are never read [INFO] [stderr] --> src/parser/tokenizer.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct Token { [INFO] [stderr] | ----- fields in this struct [INFO] [stderr] 6 | pub token_type: TokenType, // Type of token [INFO] [stderr] 7 | pub line: usize, // Line number for better error reporting [INFO] [stderr] | ^^^^ [INFO] [stderr] 8 | pub column: usize, // Column number for better error reporting [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> src/parser/types.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | Comment(String), [INFO] [stderr] | ------- ^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `TokenType` 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] 71 - Comment(String), [INFO] [stderr] 71 + Comment(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variants `LongDouble`, `UnsignedChar`, `UnsignedInt`, `UnsignedShort`, and `UnsignedLong` are never constructed [INFO] [stderr] --> src/parser/types.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 157 | pub enum DataType { [INFO] [stderr] | -------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 166 | LongDouble, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 167 | UnsignedChar, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 168 | UnsignedInt, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 169 | UnsignedShort, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 170 | UnsignedLong, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DataType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Function`, `Statement`, and `Expression` are never constructed [INFO] [stderr] --> src/parser/types.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 190 | pub enum ASTNodeType { [INFO] [stderr] | ----------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 193 | Function, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 201 | Statement, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 217 | Expression, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ASTNodeType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Struct` and `Array` are never constructed [INFO] [stderr] --> src/semantic/symbol_table.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 5 | pub enum Type { [INFO] [stderr] | ---- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 17 | Struct(String), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 18 | Array { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Type` 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 `is_initialized` are never read [INFO] [stderr] --> src/semantic/symbol_table.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 26 | pub struct Symbol { [INFO] [stderr] | ------ fields in this struct [INFO] [stderr] 27 | pub name: String, [INFO] [stderr] | ^^^^ [INFO] [stderr] 28 | pub symbol_type: Type, [INFO] [stderr] 29 | pub is_initialized: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Symbol` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `print_symbols` is never used [INFO] [stderr] --> src/semantic/symbol_table.rs:95:12 [INFO] [stderr] | [INFO] [stderr] 40 | impl SymbolTable { [INFO] [stderr] | ---------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 95 | pub fn print_symbols(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ferry` (bin "ferry") generated 45 warnings (31 duplicates) (run `cargo fix --bin "ferry" -p ferry` to apply 3 suggestions) [INFO] [stderr] warning: `ferry` (bin "ferry" test) generated 45 warnings (45 duplicates) [INFO] [stderr] warning: `ferry` (lib test) generated 33 warnings (33 duplicates) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.02s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/build/ferry/8fee4f519b091a0a/out/ferry-8fee4f519b091a0a) [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/build/ferry/f8ec2bde25c0b541/out/ferry-f8ec2bde25c0b541) [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] [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] [stderr] Running unittests src/mac_os_runner.rs (/opt/rustwide/target/release/build/ferry/b26fb3bf4de753c7/out/runner-b26fb3bf4de753c7) [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] [stderr] Running tests/test_basic.rs (/opt/rustwide/target/release/build/ferry/035cc9a461549231/out/test_basic-035cc9a461549231) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] Doc-tests ferry [INFO] [stdout] test test_parser ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [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" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed", kill_on_drop: false }` [INFO] [stdout] c445d4d1a425d51f1247aab1999f815fdded01e9ea784337721878fe2d624aed