[INFO] cloning repository https://github.com/invpt/radi [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/invpt/radi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finvpt%2Fradi", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finvpt%2Fradi'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2cf47619b4a2c16494475e34fb044d7191bfbf63 [INFO] linting invpt/radi against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finvpt%2Fradi" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/invpt/radi [INFO] finished tweaking git repo https://github.com/invpt/radi [INFO] tweaked toml for git repo https://github.com/invpt/radi written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/invpt/radi on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/invpt/radi already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 336e4be2041923d29f0603d841dfdedaa225d2c80268f2173a26063d4efb74f6 [INFO] running `Command { std: "docker" "start" "-a" "336e4be2041923d29f0603d841dfdedaa225d2c80268f2173a26063d4efb74f6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "336e4be2041923d29f0603d841dfdedaa225d2c80268f2173a26063d4efb74f6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "336e4be2041923d29f0603d841dfdedaa225d2c80268f2173a26063d4efb74f6", kill_on_drop: false }` [INFO] [stdout] 336e4be2041923d29f0603d841dfdedaa225d2c80268f2173a26063d4efb74f6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6b2bb4b48dbc316039a988222b42ff9a59002c524e9fec6a5cce4ed1e396963e [INFO] running `Command { std: "docker" "start" "-a" "6b2bb4b48dbc316039a988222b42ff9a59002c524e9fec6a5cce4ed1e396963e", kill_on_drop: false }` [INFO] [stderr] Checking codef v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `cfg` [INFO] [stdout] --> src/optimizers/simplify/mod.rs:8:23 [INFO] [stdout] | [INFO] [stdout] 8 | fn run(&mut self, cfg: &mut Cfg) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_cfg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `module` [INFO] [stdout] --> src/backends/riscv/mod.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn codegen(module: Module) -> Vec { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_module` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cfg` [INFO] [stdout] --> src/backends/riscv/mod.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | fn gen(&mut self, cfg: Cfg) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_cfg` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/char_reader.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl<'r, R: CharReader> CharReaderSaver<'r, R> { [INFO] [stdout] | ---------------------------------------------- associated function in this implementation [INFO] [stdout] 14 | pub fn new(chars: &'r mut R) -> CharReaderSaver<'r, R> { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `warning` and `error` are never used [INFO] [stdout] --> src/errors.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl<'s> ErrorStream<'s> { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 19 | pub fn warning(&self, warning: impl Into>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn error(&self, error: impl Into>) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompilationError` is never constructed [INFO] [stdout] --> src/errors.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct CompilationError<'s> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CompilationErrorKind` is never used [INFO] [stdout] --> src/errors.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum CompilationErrorKind<'s> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `span` are never read [INFO] [stdout] --> src/parser/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ParseError<'s> { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 15 | pub kind: ParseErrorKind<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | pub span: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/mod.rs:21:16 [INFO] [stdout] | [INFO] [stdout] 21 | Unexpected(Option>), [INFO] [stdout] | ---------- ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ParseErrorKind` has a derived impl for the trait `Debug`, but this is 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] 21 - Unexpected(Option>), [INFO] [stdout] 21 + Unexpected(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/mod.rs:22:23 [INFO] [stdout] | [INFO] [stdout] 22 | TokenizationError(TokenizationError), [INFO] [stdout] | ----------------- ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ParseErrorKind` has a derived impl for the trait `Debug`, but this is 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] 22 - TokenizationError(TokenizationError), [INFO] [stdout] 22 + TokenizationError(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `errors` is never read [INFO] [stdout] --> src/parser/mod.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 45 | struct Parser<'s, R> { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 46 | tokens: Tokens<'s, R>, [INFO] [stdout] 47 | errors: &'s ErrorStream<'s>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `peek` is never used [INFO] [stdout] --> src/parser/mod.rs:626:8 [INFO] [stdout] | [INFO] [stdout] 50 | impl<'i, 's, R: CharReader> Parser<'s, R> { [INFO] [stdout] | ----------------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 626 | fn peek(&mut self, pred: impl Fn(&Token<'s>) -> Option) -> Result<'s, Option> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Recv`, `BitOr`, `BitXor`, `BitAnd`, `Shl`, and `Shr` are never constructed [INFO] [stdout] --> src/parser/ast.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub enum BinOp { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 70 | Recv, [INFO] [stdout] | ^^^^ [INFO] [stdout] 71 | BitOr, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 72 | BitXor, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 73 | BitAnd, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 74 | Shl, [INFO] [stdout] | ^^^ [INFO] [stdout] 75 | Shr, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/ast.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 100 | String(Intern<'s>), [INFO] [stdout] | ------ ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Literal` 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] 100 - String(Intern<'s>), [INFO] [stdout] 100 + String(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Boolean` is never constructed [INFO] [stdout] --> src/parser/ast.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 97 | pub enum Literal<'s> { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 101 | Boolean(bool), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Literal` 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 `to_bpred` is never used [INFO] [stdout] --> src/parser/preds.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn to_bpred<'s, T>( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/tokenizer/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct TokenizationError { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 10 | pub kind: TokenizationErrorKind, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TokenizationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/tokenizer/mod.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | Io(io::Error), [INFO] [stdout] | -- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TokenizationErrorKind` has a derived impl for the trait `Debug`, but this is 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] 18 - Io(io::Error), [INFO] [stdout] 18 + Io(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `span` are never read [INFO] [stdout] --> src/reifier/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ReifyError<'s> { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 20 | pub kind: ReifyErrorKind<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 21 | pub span: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReifyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/reifier/mod.rs:28:21 [INFO] [stdout] | [INFO] [stdout] 28 | UndefinedSymbol(Intern<'s>), [INFO] [stdout] | --------------- ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ReifyErrorKind` has a derived impl for the trait `Debug`, but this is 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] 28 - UndefinedSymbol(Intern<'s>), [INFO] [stdout] 28 + UndefinedSymbol(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/reifier/mod.rs:29:22 [INFO] [stdout] | [INFO] [stdout] 29 | UnexpectedMarker(SolveMarker), [INFO] [stdout] | ---------------- ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ReifyErrorKind` has a derived impl for the trait `Debug`, but this is 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] 29 - UnexpectedMarker(SolveMarker), [INFO] [stdout] 29 + UnexpectedMarker(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidFile` and `TypeAssertionConflict` are never constructed [INFO] [stdout] --> src/reifier/mod.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum ReifyErrorKind<'s> { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 26 | InvalidFile, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | TypeAssertionConflict, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReifyErrorKind` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `x` is never used [INFO] [stdout] --> src/reifier/mod.rs:739:8 [INFO] [stdout] | [INFO] [stdout] 61 | impl<'s> Reifier<'s> { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 739 | fn x() { [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `main` is never read [INFO] [stdout] --> src/reifier/rst.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Module<'s> { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 11 | pub main: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Module` 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 `Println`, `Input`, and `Itoa` are never constructed [INFO] [stdout] --> src/reifier/rst.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum Builtin { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 22 | Println, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 23 | Input, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | Itoa, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Builtin` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TypeDef` is never constructed [INFO] [stdout] --> src/reifier/rst.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct TypeDef<'s> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_unit` is never used [INFO] [stdout] --> src/reifier/rst.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl<'s> Type<'s> { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn is_unit(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `decl_span` and `name` are never read [INFO] [stdout] --> src/reifier/rst.rs:183:9 [INFO] [stdout] | [INFO] [stdout] 182 | pub struct Local<'s> { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 183 | pub decl_span: Span, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 184 | pub name: Intern<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Local` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `decl_span` is never read [INFO] [stdout] --> src/reifier/rst.rs:191:9 [INFO] [stdout] | [INFO] [stdout] 190 | pub struct Def<'s> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] 191 | pub decl_span: Span, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Def` 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 `index` is never used [INFO] [stdout] --> src/reifier/rst.rs:200:12 [INFO] [stdout] | [INFO] [stdout] 199 | impl Symbol { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 200 | pub fn index(self) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `span` is never read [INFO] [stdout] --> src/reifier/rst.rs:214:9 [INFO] [stdout] | [INFO] [stdout] 212 | pub struct Expr<'s> { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 213 | pub kind: ExprKind<'s>, [INFO] [stdout] 214 | pub span: Span, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/reifier/rst.rs:261:12 [INFO] [stdout] | [INFO] [stdout] 261 | Symbol(Symbol), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PatternKind` has a derived impl for the trait `Debug`, but this is 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] 261 - Symbol(Symbol), [INFO] [stdout] 261 + Symbol(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VariantItem` is never constructed [INFO] [stdout] --> src/reifier/rst.rs:265:12 [INFO] [stdout] | [INFO] [stdout] 265 | pub struct VariantItem<'s> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `main` and `defs` are never read [INFO] [stdout] --> src/lowerer/lir.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Module<'s> { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 10 | pub main: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 11 | pub defs: FxHashMap>, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Module` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `value` are never read [INFO] [stdout] --> src/lowerer/lir.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Def<'s> { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 16 | pub name: Intern<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 17 | pub value: Value<'s>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Def` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `temps`, `params`, `blocks`, and `entry` are never read [INFO] [stdout] --> src/lowerer/lir.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct Cfg { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 22 | pub temps: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | pub params: Box<[Temp]>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 24 | pub blocks: Box<[Block]>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 25 | pub entry: BlockRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Cfg` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TempInfo` is never constructed [INFO] [stdout] --> src/lowerer/lir.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct TempInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `successors` is never used [INFO] [stdout] --> src/lowerer/lir.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl Block { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] 48 | pub fn successors(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `block` and `arguments` are never read [INFO] [stdout] --> src/lowerer/lir.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 69 | pub struct Target { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 70 | pub block: BlockRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 71 | pub arguments: Box<[Temp]>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Target` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:93:10 [INFO] [stdout] | [INFO] [stdout] 93 | Load(Temp, Producer), [INFO] [stdout] | ---- ^^^^ ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Insn` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 93 - Load(Temp, Producer), [INFO] [stdout] 93 + Load((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:94:11 [INFO] [stdout] | [INFO] [stdout] 94 | Store(MemRef, Temp), [INFO] [stdout] | ----- ^^^^^^ ^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Insn` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 94 - Store(MemRef, Temp), [INFO] [stdout] 94 + Store((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lowerer/lir.rs:99:18 [INFO] [stdout] | [INFO] [stdout] 99 | Memory(Kind, MemRef), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 99 - Memory(Kind, MemRef), [INFO] [stdout] 99 + Memory(Kind, ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lowerer/lir.rs:100:18 [INFO] [stdout] | [INFO] [stdout] 100 | Symbol(Kind, Symbol), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 100 - Symbol(Kind, Symbol), [INFO] [stdout] 100 + Symbol(Kind, ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:101:13 [INFO] [stdout] | [INFO] [stdout] 101 | Builtin(Builtin), [INFO] [stdout] | ------- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 101 - Builtin(Builtin), [INFO] [stdout] 101 + Builtin(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | Ir(Cfg), [INFO] [stdout] | -- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 102 - Ir(Cfg), [INFO] [stdout] 102 + Ir(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `1` and `2` are never read [INFO] [stdout] --> src/lowerer/lir.rs:104:19 [INFO] [stdout] | [INFO] [stdout] 104 | Binary(BinOp, Temp, Temp), [INFO] [stdout] | ------ ^^^^ ^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 104 - Binary(BinOp, Temp, Temp), [INFO] [stdout] 104 + Binary(BinOp, (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lowerer/lir.rs:105:17 [INFO] [stdout] | [INFO] [stdout] 105 | Unary(UnOp, Temp), [INFO] [stdout] | ----- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 105 - Unary(UnOp, Temp), [INFO] [stdout] 105 + Unary(UnOp, ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:106:10 [INFO] [stdout] | [INFO] [stdout] 106 | Call(Temp, Box<[Temp]>, Kind), [INFO] [stdout] | ---- ^^^^ ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 106 - Call(Temp, Box<[Temp]>, Kind), [INFO] [stdout] 106 + Call((), (), Kind), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | ConstI(u64), [INFO] [stdout] | ------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 107 - ConstI(u64), [INFO] [stdout] 107 + ConstI(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 108 | ConstF(f64), [INFO] [stdout] | ------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 108 - ConstF(f64), [INFO] [stdout] 108 + ConstF(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Copy` is never constructed [INFO] [stdout] --> src/lowerer/lir.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 98 | pub enum Producer { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 103 | Copy(Temp), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:152:19 [INFO] [stdout] | [INFO] [stdout] 152 | pub struct MemRef(pub Temp, pub u64); [INFO] [stdout] | ------ ^^^^^^^^ ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this struct [INFO] [stdout] | [INFO] [stdout] = help: consider removing these fields [INFO] [stdout] = note: `MemRef` 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: variant `BitNotI` is never constructed [INFO] [stdout] --> src/lowerer/lir.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 181 | pub enum UnOp { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] 182 | BoolNotI, [INFO] [stdout] 183 | BitNotI, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:218:14 [INFO] [stdout] | [INFO] [stdout] 218 | Function(Cfg), [INFO] [stdout] | -------- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Value` has a derived impl for the trait `Debug`, but this is 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] 218 - Function(Cfg), [INFO] [stdout] 218 + Function(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Integer`, `Float`, `Tuple`, and `Variant` are never constructed [INFO] [stdout] --> src/lowerer/lir.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 213 | pub enum Value<'s> { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 214 | Integer(i64), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 215 | Float(f64), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 216 | Tuple(Box<[Value<'s>]>), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 217 | Variant(Intern<'s>, Option>>), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Value` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize` is never used [INFO] [stdout] --> src/optimizers/mod.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn optimize(module: &mut Module) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `OptimizationPass` is never used [INFO] [stdout] --> src/optimizers/mod.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | trait OptimizationPass { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Simplify` is never constructed [INFO] [stdout] --> src/optimizers/simplify/mod.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Simplify { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `codegen` is never used [INFO] [stdout] --> src/backends/riscv/mod.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn codegen(module: Module) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RvCodegen` is never constructed [INFO] [stdout] --> src/backends/riscv/mod.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct RvCodegen { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `gen` is never used [INFO] [stdout] --> src/backends/riscv/mod.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 13 | impl RvCodegen { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 14 | fn gen(&mut self, cfg: Cfg) { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RvInsn` is never used [INFO] [stdout] --> src/backends/riscv/mod.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | enum RvInsn { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dominators` is never used [INFO] [stdout] --> src/backends/riscv/regalloc.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn dominators(cfg: &Cfg) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `intersect` is never used [INFO] [stdout] --> src/backends/riscv/regalloc.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn intersect(labels: &Vec, doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dfs` is never used [INFO] [stdout] --> src/backends/riscv/regalloc.rs:48:4 [INFO] [stdout] | [INFO] [stdout] 48 | fn dfs(cfg: &Cfg, block: BlockRef, visited: &mut Vec, labels: &mut Vec, postorder: &mut Vec, preds: &mut Vec<... [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/parser/mod.rs:50:6 [INFO] [stdout] | [INFO] [stdout] 50 | impl<'i, 's, R: CharReader> Parser<'s, R> { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/parser/mod.rs:361:9 [INFO] [stdout] | [INFO] [stdout] 361 | / loop { [INFO] [stdout] 362 | | let Some(comma_tok) = self.eat(tpred!(TokenKind::Comma))? else { break }; [INFO] [stdout] 363 | | end = comma_tok.span.end; [INFO] [stdout] 364 | | if self.has_peek(&end_pred)? { [INFO] [stdout] ... | [INFO] [stdout] 368 | | items.push(self.expr()?); [INFO] [stdout] 369 | | } [INFO] [stdout] | |_________^ help: try: `while let Some(comma_tok) = self.eat(tpred!(TokenKind::Comma))? { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/parser/mod.rs:536:9 [INFO] [stdout] | [INFO] [stdout] 536 | / loop { [INFO] [stdout] 537 | | if let Some(arg) = self.maybe_atom(true)? { [INFO] [stdout] 538 | | a = Expr { [INFO] [stdout] 539 | | span: Span { [INFO] [stdout] ... | [INFO] [stdout] 548 | | } [INFO] [stdout] | |_________^ help: try: `while let Some(arg) = self.maybe_atom(true)? { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/tokenizer/mod.rs:106:6 [INFO] [stdout] | [INFO] [stdout] 106 | impl<'i, 's, R: CharReader> Tokens<'s, R> { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/reifier/rst.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | / match self { [INFO] [stdout] 53 | | Type::Unknown => true, [INFO] [stdout] 54 | | _ => false, [INFO] [stdout] 55 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 52 - match self { [INFO] [stdout] 53 - Type::Unknown => true, [INFO] [stdout] 54 - _ => false, [INFO] [stdout] 55 - } [INFO] [stdout] 52 + matches!(self, Type::Unknown) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/reifier/scoper.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | let sym = Symbol(index); [INFO] [stdout] | ------------------------ unnecessary `let` binding [INFO] [stdout] 33 | sym [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 32 ~ [INFO] [stdout] 33 ~ Symbol(index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:156:27 [INFO] [stdout] | [INFO] [stdout] 156 | self.def(sym, &def)?; [INFO] [stdout] | ^^^^ help: change this to: `def` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:237:32 [INFO] [stdout] | [INFO] [stdout] 237 | self.type_(&ret)? [INFO] [stdout] | ^^^^ help: change this to: `ret` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:299:46 [INFO] [stdout] | [INFO] [stdout] 299 | let on_false = self.expr(&on_false, superty)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `on_false` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/reifier/mod.rs:329:21 [INFO] [stdout] | [INFO] [stdout] 329 | &**tys [INFO] [stdout] | ^^^^^^ help: try: `tys` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:339:45 [INFO] [stdout] | [INFO] [stdout] 339 | let reified = self.expr(&item, superty)?; [INFO] [stdout] | ^^^^^ help: change this to: `item` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:501:48 [INFO] [stdout] | [INFO] [stdout] 501 | let a = Box::new(self.expr(&a, &a_ty)?); [INFO] [stdout] | ^^ help: change this to: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/reifier/mod.rs:523:59 [INFO] [stdout] | [INFO] [stdout] 523 | ... let b = Box::new(self.expr(b, &*param)?); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 523 - let b = Box::new(self.expr(b, &*param)?); [INFO] [stdout] 523 + let b = Box::new(self.expr(b, param)?); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 523 | let b = Box::new(self.expr(b, &**param)?); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:550:47 [INFO] [stdout] | [INFO] [stdout] 550 | let value = self.expr(&value, &Type::Unknown)?; [INFO] [stdout] | ^^^^^^ help: change this to: `value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:690:41 [INFO] [stdout] | [INFO] [stdout] 690 | if !arg_type.is_subtype(&a_param) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `a_param` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:719:45 [INFO] [stdout] | [INFO] [stdout] 719 | ... Some(self.type_(&value)?) [INFO] [stdout] | ^^^^^^ help: change this to: `value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/reifier/mod.rs:741:40 [INFO] [stdout] | [INFO] [stdout] 741 | let x = unsafe { std::mem::transmute::(0) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:764:60 [INFO] [stdout] | [INFO] [stdout] 764 | let constructor = self.module.defs.get(&sym).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `sym` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:771:38 [INFO] [stdout] | [INFO] [stdout] 771 | let a = self.pattern(&a, &a_ty)?; [INFO] [stdout] | ^^ help: change this to: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:784:38 [INFO] [stdout] | [INFO] [stdout] 784 | let b = self.pattern(&b, ¶m)?; [INFO] [stdout] | ^^ help: change this to: `b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:784:42 [INFO] [stdout] | [INFO] [stdout] 784 | let b = self.pattern(&b, ¶m)?; [INFO] [stdout] | ^^^^^^ help: change this to: `param` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/reifier/mod.rs:801:45 [INFO] [stdout] | [INFO] [stdout] 801 | let Some(variant) = items.iter().filter(|it| it.name == item.name).next() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `items.iter().find(|it| it.name == item.name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:815:50 [INFO] [stdout] | [INFO] [stdout] 815 | let value = self.pattern(&value, &value_ty)?; [INFO] [stdout] | ^^^^^^ help: change this to: `value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:871:49 [INFO] [stdout] | [INFO] [stdout] 871 | let item = self.pattern(&item, &Type::Unknown)?; [INFO] [stdout] | ^^^^^ help: change this to: `item` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:984:70 [INFO] [stdout] | [INFO] [stdout] 984 | parser::ExprKind::Assert { expr, .. } => Self::has_solve(&expr)?, [INFO] [stdout] | ^^^^^ help: change this to: `expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:985:62 [INFO] [stdout] | [INFO] [stdout] 985 | parser::ExprKind::Apply(a, b) => Self::has_solve(&a)? || Self::has_solve(&b)?, [INFO] [stdout] | ^^ help: change this to: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:985:86 [INFO] [stdout] | [INFO] [stdout] 985 | parser::ExprKind::Apply(a, b) => Self::has_solve(&a)? || Self::has_solve(&b)?, [INFO] [stdout] | ^^ help: change this to: `b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lowerer/lir.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | / match &self.branch { [INFO] [stdout] 52 | | Some(Branch(.., t)) => succs[0] = Some(t), [INFO] [stdout] 53 | | None => (), [INFO] [stdout] 54 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(Branch(.., t)) = &self.branch { succs[0] = Some(t) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> src/lowerer/lir.rs:61:27 [INFO] [stdout] | [INFO] [stdout] 61 | succs.into_iter().filter_map(|s| s) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:19:88 [INFO] [stdout] | [INFO] [stdout] 19 | value: Value::Function(Lowerer::new(module).lower(*spec, arg.as_ref(), &body)), [INFO] [stdout] | ^^^^^ help: change this to: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:136:59 [INFO] [stdout] | [INFO] [stdout] 136 | let proc = lowerer.lower(*spec, arg.as_ref(), &body); [INFO] [stdout] | ^^^^^ help: change this to: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:242:27 [INFO] [stdout] | [INFO] [stdout] 242 | self.cond(&cond, JumpCond::True(body_lab)); [INFO] [stdout] | ^^^^^ help: change this to: `cond` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:454:31 [INFO] [stdout] | [INFO] [stdout] 454 | self.expr(&arg, want_output) [INFO] [stdout] | ^^^^ help: change this to: `arg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lowerer/mod.rs:458:28 [INFO] [stdout] | [INFO] [stdout] 458 | if items.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!items.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:499:46 [INFO] [stdout] | [INFO] [stdout] 499 | let data = self.expr(&data, true).unwrap(); [INFO] [stdout] | ^^^^^ help: change this to: `data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/lowerer/mod.rs:517:53 [INFO] [stdout] | [INFO] [stdout] 517 | reifier::ExprKind::Literal(lit) => Some(match lit { [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 518 | | &reifier::Literal::Boolean(b) => self.load(Producer::ConstI(b as u64)), [INFO] [stdout] 519 | | &reifier::Literal::Integer(i) => self.load(Producer::ConstI(i)), [INFO] [stdout] 520 | | &reifier::Literal::Float(f) => self.load(Producer::ConstF(f)), [INFO] [stdout] 521 | | _ => todo!(), [INFO] [stdout] 522 | | }), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 517 ~ reifier::ExprKind::Literal(lit) => Some(match *lit { [INFO] [stdout] 518 ~ reifier::Literal::Boolean(b) => self.load(Producer::ConstI(b as u64)), [INFO] [stdout] 519 ~ reifier::Literal::Integer(i) => self.load(Producer::ConstI(i)), [INFO] [stdout] 520 ~ reifier::Literal::Float(f) => self.load(Producer::ConstF(f)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:654:21 [INFO] [stdout] | [INFO] [stdout] 654 | &e, [INFO] [stdout] | ^^ help: change this to: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/optimizers/mod.rs:6:21 [INFO] [stdout] | [INFO] [stdout] 6 | for (_, def) in &mut module.defs { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 6 - for (_, def) in &mut module.defs { [INFO] [stdout] 6 + for def in module.defs.values_mut() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/optimizers/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | / match &mut def.value { [INFO] [stdout] 8 | | Value::Function(cfg) => simplify::Simplify {}.run(cfg), [INFO] [stdout] 9 | | _ => (), [INFO] [stdout] 10 | | } [INFO] [stdout] | |_________^ help: try: `if let Value::Function(cfg) = &mut def.value { simplify::Simplify {}.run(cfg) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/backends/riscv/regalloc.rs:20:20 [INFO] [stdout] | [INFO] [stdout] 20 | if !doms[p.0].is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `doms[p.0].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/backends/riscv/regalloc.rs:21:51 [INFO] [stdout] | [INFO] [stdout] 21 | new_idom = intersect(&labels, &mut *doms, p, new_idom) [INFO] [stdout] | ^^^^^^^^^^ help: try: `&mut doms` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/backends/riscv/regalloc.rs:34:22 [INFO] [stdout] | [INFO] [stdout] 34 | fn intersect(labels: &Vec, doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 34 - fn intersect(labels: &Vec, doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] 34 + fn intersect(labels: &[usize], doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary transmute [INFO] [stdout] --> src/reifier/mod.rs:741:30 [INFO] [stdout] | [INFO] [stdout] 741 | let x = unsafe { std::mem::transmute::(0) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unnecessary_transmutes)]` on by default [INFO] [stdout] help: replace this with [INFO] [stdout] | [INFO] [stdout] 741 - let x = unsafe { std::mem::transmute::(0) }; [INFO] [stdout] 741 + let x = unsafe { u32::cast_signed(0) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cfg` [INFO] [stdout] --> src/optimizers/simplify/mod.rs:8:23 [INFO] [stdout] | [INFO] [stdout] 8 | fn run(&mut self, cfg: &mut Cfg) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_cfg` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `module` [INFO] [stdout] --> src/backends/riscv/mod.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn codegen(module: Module) -> Vec { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_module` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cfg` [INFO] [stdout] --> src/backends/riscv/mod.rs:14:23 [INFO] [stdout] | [INFO] [stdout] 14 | fn gen(&mut self, cfg: Cfg) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_cfg` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/char_reader.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl<'r, R: CharReader> CharReaderSaver<'r, R> { [INFO] [stdout] | ---------------------------------------------- associated function in this implementation [INFO] [stdout] 14 | pub fn new(chars: &'r mut R) -> CharReaderSaver<'r, R> { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `warning` and `error` are never used [INFO] [stdout] --> src/errors.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl<'s> ErrorStream<'s> { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 19 | pub fn warning(&self, warning: impl Into>) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn error(&self, error: impl Into>) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompilationError` is never constructed [INFO] [stdout] --> src/errors.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct CompilationError<'s> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CompilationErrorKind` is never used [INFO] [stdout] --> src/errors.rs:35:10 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum CompilationErrorKind<'s> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `span` are never read [INFO] [stdout] --> src/parser/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ParseError<'s> { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 15 | pub kind: ParseErrorKind<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | pub span: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/mod.rs:21:16 [INFO] [stdout] | [INFO] [stdout] 21 | Unexpected(Option>), [INFO] [stdout] | ---------- ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ParseErrorKind` has a derived impl for the trait `Debug`, but this is 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] 21 - Unexpected(Option>), [INFO] [stdout] 21 + Unexpected(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/mod.rs:22:23 [INFO] [stdout] | [INFO] [stdout] 22 | TokenizationError(TokenizationError), [INFO] [stdout] | ----------------- ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ParseErrorKind` has a derived impl for the trait `Debug`, but this is 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] 22 - TokenizationError(TokenizationError), [INFO] [stdout] 22 + TokenizationError(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `errors` is never read [INFO] [stdout] --> src/parser/mod.rs:47:5 [INFO] [stdout] | [INFO] [stdout] 45 | struct Parser<'s, R> { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 46 | tokens: Tokens<'s, R>, [INFO] [stdout] 47 | errors: &'s ErrorStream<'s>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `peek` is never used [INFO] [stdout] --> src/parser/mod.rs:626:8 [INFO] [stdout] | [INFO] [stdout] 50 | impl<'i, 's, R: CharReader> Parser<'s, R> { [INFO] [stdout] | ----------------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 626 | fn peek(&mut self, pred: impl Fn(&Token<'s>) -> Option) -> Result<'s, Option> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Recv`, `BitOr`, `BitXor`, `BitAnd`, `Shl`, and `Shr` are never constructed [INFO] [stdout] --> src/parser/ast.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub enum BinOp { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 70 | Recv, [INFO] [stdout] | ^^^^ [INFO] [stdout] 71 | BitOr, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 72 | BitXor, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 73 | BitAnd, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 74 | Shl, [INFO] [stdout] | ^^^ [INFO] [stdout] 75 | Shr, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/parser/ast.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 100 | String(Intern<'s>), [INFO] [stdout] | ------ ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Literal` 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] 100 - String(Intern<'s>), [INFO] [stdout] 100 + String(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Boolean` is never constructed [INFO] [stdout] --> src/parser/ast.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 97 | pub enum Literal<'s> { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 101 | Boolean(bool), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Literal` 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 `to_bpred` is never used [INFO] [stdout] --> src/parser/preds.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | pub fn to_bpred<'s, T>( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/tokenizer/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct TokenizationError { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 10 | pub kind: TokenizationErrorKind, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TokenizationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/tokenizer/mod.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | Io(io::Error), [INFO] [stdout] | -- ^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TokenizationErrorKind` has a derived impl for the trait `Debug`, but this is 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] 18 - Io(io::Error), [INFO] [stdout] 18 + Io(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `span` are never read [INFO] [stdout] --> src/reifier/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct ReifyError<'s> { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 20 | pub kind: ReifyErrorKind<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 21 | pub span: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReifyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/reifier/mod.rs:28:21 [INFO] [stdout] | [INFO] [stdout] 28 | UndefinedSymbol(Intern<'s>), [INFO] [stdout] | --------------- ^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ReifyErrorKind` has a derived impl for the trait `Debug`, but this is 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] 28 - UndefinedSymbol(Intern<'s>), [INFO] [stdout] 28 + UndefinedSymbol(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/reifier/mod.rs:29:22 [INFO] [stdout] | [INFO] [stdout] 29 | UnexpectedMarker(SolveMarker), [INFO] [stdout] | ---------------- ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ReifyErrorKind` has a derived impl for the trait `Debug`, but this is 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] 29 - UnexpectedMarker(SolveMarker), [INFO] [stdout] 29 + UnexpectedMarker(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidFile` and `TypeAssertionConflict` are never constructed [INFO] [stdout] --> src/reifier/mod.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum ReifyErrorKind<'s> { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 26 | InvalidFile, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | TypeAssertionConflict, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReifyErrorKind` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `x` is never used [INFO] [stdout] --> src/reifier/mod.rs:739:8 [INFO] [stdout] | [INFO] [stdout] 61 | impl<'s> Reifier<'s> { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 739 | fn x() { [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `main` is never read [INFO] [stdout] --> src/reifier/rst.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Module<'s> { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 11 | pub main: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Module` 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 `Println`, `Input`, and `Itoa` are never constructed [INFO] [stdout] --> src/reifier/rst.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum Builtin { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 22 | Println, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 23 | Input, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | Itoa, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Builtin` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TypeDef` is never constructed [INFO] [stdout] --> src/reifier/rst.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct TypeDef<'s> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_unit` is never used [INFO] [stdout] --> src/reifier/rst.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl<'s> Type<'s> { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn is_unit(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `decl_span` and `name` are never read [INFO] [stdout] --> src/reifier/rst.rs:183:9 [INFO] [stdout] | [INFO] [stdout] 182 | pub struct Local<'s> { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 183 | pub decl_span: Span, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 184 | pub name: Intern<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Local` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `decl_span` is never read [INFO] [stdout] --> src/reifier/rst.rs:191:9 [INFO] [stdout] | [INFO] [stdout] 190 | pub struct Def<'s> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] 191 | pub decl_span: Span, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Def` 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 `index` is never used [INFO] [stdout] --> src/reifier/rst.rs:200:12 [INFO] [stdout] | [INFO] [stdout] 199 | impl Symbol { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 200 | pub fn index(self) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `span` is never read [INFO] [stdout] --> src/reifier/rst.rs:214:9 [INFO] [stdout] | [INFO] [stdout] 212 | pub struct Expr<'s> { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 213 | pub kind: ExprKind<'s>, [INFO] [stdout] 214 | pub span: Span, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/reifier/rst.rs:261:12 [INFO] [stdout] | [INFO] [stdout] 261 | Symbol(Symbol), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PatternKind` has a derived impl for the trait `Debug`, but this is 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] 261 - Symbol(Symbol), [INFO] [stdout] 261 + Symbol(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VariantItem` is never constructed [INFO] [stdout] --> src/reifier/rst.rs:265:12 [INFO] [stdout] | [INFO] [stdout] 265 | pub struct VariantItem<'s> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `main` and `defs` are never read [INFO] [stdout] --> src/lowerer/lir.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Module<'s> { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 10 | pub main: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 11 | pub defs: FxHashMap>, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Module` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `value` are never read [INFO] [stdout] --> src/lowerer/lir.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Def<'s> { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 16 | pub name: Intern<'s>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 17 | pub value: Value<'s>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Def` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `temps`, `params`, `blocks`, and `entry` are never read [INFO] [stdout] --> src/lowerer/lir.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct Cfg { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 22 | pub temps: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 23 | pub params: Box<[Temp]>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 24 | pub blocks: Box<[Block]>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 25 | pub entry: BlockRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Cfg` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TempInfo` is never constructed [INFO] [stdout] --> src/lowerer/lir.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct TempInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `successors` is never used [INFO] [stdout] --> src/lowerer/lir.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl Block { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] 48 | pub fn successors(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `block` and `arguments` are never read [INFO] [stdout] --> src/lowerer/lir.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 69 | pub struct Target { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 70 | pub block: BlockRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 71 | pub arguments: Box<[Temp]>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Target` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:93:10 [INFO] [stdout] | [INFO] [stdout] 93 | Load(Temp, Producer), [INFO] [stdout] | ---- ^^^^ ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Insn` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 93 - Load(Temp, Producer), [INFO] [stdout] 93 + Load((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:94:11 [INFO] [stdout] | [INFO] [stdout] 94 | Store(MemRef, Temp), [INFO] [stdout] | ----- ^^^^^^ ^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Insn` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 94 - Store(MemRef, Temp), [INFO] [stdout] 94 + Store((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lowerer/lir.rs:99:18 [INFO] [stdout] | [INFO] [stdout] 99 | Memory(Kind, MemRef), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 99 - Memory(Kind, MemRef), [INFO] [stdout] 99 + Memory(Kind, ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lowerer/lir.rs:100:18 [INFO] [stdout] | [INFO] [stdout] 100 | Symbol(Kind, Symbol), [INFO] [stdout] | ------ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 100 - Symbol(Kind, Symbol), [INFO] [stdout] 100 + Symbol(Kind, ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:101:13 [INFO] [stdout] | [INFO] [stdout] 101 | Builtin(Builtin), [INFO] [stdout] | ------- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 101 - Builtin(Builtin), [INFO] [stdout] 101 + Builtin(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | Ir(Cfg), [INFO] [stdout] | -- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 102 - Ir(Cfg), [INFO] [stdout] 102 + Ir(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `1` and `2` are never read [INFO] [stdout] --> src/lowerer/lir.rs:104:19 [INFO] [stdout] | [INFO] [stdout] 104 | Binary(BinOp, Temp, Temp), [INFO] [stdout] | ------ ^^^^ ^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 104 - Binary(BinOp, Temp, Temp), [INFO] [stdout] 104 + Binary(BinOp, (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `1` is never read [INFO] [stdout] --> src/lowerer/lir.rs:105:17 [INFO] [stdout] | [INFO] [stdout] 105 | Unary(UnOp, Temp), [INFO] [stdout] | ----- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 105 - Unary(UnOp, Temp), [INFO] [stdout] 105 + Unary(UnOp, ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:106:10 [INFO] [stdout] | [INFO] [stdout] 106 | Call(Temp, Box<[Temp]>, Kind), [INFO] [stdout] | ---- ^^^^ ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 106 - Call(Temp, Box<[Temp]>, Kind), [INFO] [stdout] 106 + Call((), (), Kind), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 107 | ConstI(u64), [INFO] [stdout] | ------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 107 - ConstI(u64), [INFO] [stdout] 107 + ConstI(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 108 | ConstF(f64), [INFO] [stdout] | ------ ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is 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] 108 - ConstF(f64), [INFO] [stdout] 108 + ConstF(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Copy` is never constructed [INFO] [stdout] --> src/lowerer/lir.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 98 | pub enum Producer { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 103 | Copy(Temp), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Producer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/lowerer/lir.rs:152:19 [INFO] [stdout] | [INFO] [stdout] 152 | pub struct MemRef(pub Temp, pub u64); [INFO] [stdout] | ------ ^^^^^^^^ ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this struct [INFO] [stdout] | [INFO] [stdout] = help: consider removing these fields [INFO] [stdout] = note: `MemRef` 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: variant `BitNotI` is never constructed [INFO] [stdout] --> src/lowerer/lir.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 181 | pub enum UnOp { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] 182 | BoolNotI, [INFO] [stdout] 183 | BitNotI, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnOp` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/lowerer/lir.rs:218:14 [INFO] [stdout] | [INFO] [stdout] 218 | Function(Cfg), [INFO] [stdout] | -------- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Value` has a derived impl for the trait `Debug`, but this is 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] 218 - Function(Cfg), [INFO] [stdout] 218 + Function(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Integer`, `Float`, `Tuple`, and `Variant` are never constructed [INFO] [stdout] --> src/lowerer/lir.rs:214:5 [INFO] [stdout] | [INFO] [stdout] 213 | pub enum Value<'s> { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 214 | Integer(i64), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 215 | Float(f64), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 216 | Tuple(Box<[Value<'s>]>), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 217 | Variant(Intern<'s>, Option>>), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Value` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize` is never used [INFO] [stdout] --> src/optimizers/mod.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn optimize(module: &mut Module) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `OptimizationPass` is never used [INFO] [stdout] --> src/optimizers/mod.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | trait OptimizationPass { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Simplify` is never constructed [INFO] [stdout] --> src/optimizers/simplify/mod.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Simplify { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `codegen` is never used [INFO] [stdout] --> src/backends/riscv/mod.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn codegen(module: Module) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RvCodegen` is never constructed [INFO] [stdout] --> src/backends/riscv/mod.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct RvCodegen { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `gen` is never used [INFO] [stdout] --> src/backends/riscv/mod.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 13 | impl RvCodegen { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 14 | fn gen(&mut self, cfg: Cfg) { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RvInsn` is never used [INFO] [stdout] --> src/backends/riscv/mod.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | enum RvInsn { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dominators` is never used [INFO] [stdout] --> src/backends/riscv/regalloc.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn dominators(cfg: &Cfg) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `intersect` is never used [INFO] [stdout] --> src/backends/riscv/regalloc.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn intersect(labels: &Vec, doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dfs` is never used [INFO] [stdout] --> src/backends/riscv/regalloc.rs:48:4 [INFO] [stdout] | [INFO] [stdout] 48 | fn dfs(cfg: &Cfg, block: BlockRef, visited: &mut Vec, labels: &mut Vec, postorder: &mut Vec, preds: &mut Vec<... [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/parser/mod.rs:50:6 [INFO] [stdout] | [INFO] [stdout] 50 | impl<'i, 's, R: CharReader> Parser<'s, R> { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/parser/mod.rs:361:9 [INFO] [stdout] | [INFO] [stdout] 361 | / loop { [INFO] [stdout] 362 | | let Some(comma_tok) = self.eat(tpred!(TokenKind::Comma))? else { break }; [INFO] [stdout] 363 | | end = comma_tok.span.end; [INFO] [stdout] 364 | | if self.has_peek(&end_pred)? { [INFO] [stdout] ... | [INFO] [stdout] 368 | | items.push(self.expr()?); [INFO] [stdout] 369 | | } [INFO] [stdout] | |_________^ help: try: `while let Some(comma_tok) = self.eat(tpred!(TokenKind::Comma))? { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `while let` loop [INFO] [stdout] --> src/parser/mod.rs:536:9 [INFO] [stdout] | [INFO] [stdout] 536 | / loop { [INFO] [stdout] 537 | | if let Some(arg) = self.maybe_atom(true)? { [INFO] [stdout] 538 | | a = Expr { [INFO] [stdout] 539 | | span: Span { [INFO] [stdout] ... | [INFO] [stdout] 548 | | } [INFO] [stdout] | |_________^ help: try: `while let Some(arg) = self.maybe_atom(true)? { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/tokenizer/mod.rs:106:6 [INFO] [stdout] | [INFO] [stdout] 106 | impl<'i, 's, R: CharReader> Tokens<'s, R> { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/reifier/rst.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | / match self { [INFO] [stdout] 53 | | Type::Unknown => true, [INFO] [stdout] 54 | | _ => false, [INFO] [stdout] 55 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 52 - match self { [INFO] [stdout] 53 - Type::Unknown => true, [INFO] [stdout] 54 - _ => false, [INFO] [stdout] 55 - } [INFO] [stdout] 52 + matches!(self, Type::Unknown) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/reifier/scoper.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | let sym = Symbol(index); [INFO] [stdout] | ------------------------ unnecessary `let` binding [INFO] [stdout] 33 | sym [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 32 ~ [INFO] [stdout] 33 ~ Symbol(index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:156:27 [INFO] [stdout] | [INFO] [stdout] 156 | self.def(sym, &def)?; [INFO] [stdout] | ^^^^ help: change this to: `def` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:237:32 [INFO] [stdout] | [INFO] [stdout] 237 | self.type_(&ret)? [INFO] [stdout] | ^^^^ help: change this to: `ret` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:299:46 [INFO] [stdout] | [INFO] [stdout] 299 | let on_false = self.expr(&on_false, superty)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `on_false` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/reifier/mod.rs:329:21 [INFO] [stdout] | [INFO] [stdout] 329 | &**tys [INFO] [stdout] | ^^^^^^ help: try: `tys` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:339:45 [INFO] [stdout] | [INFO] [stdout] 339 | let reified = self.expr(&item, superty)?; [INFO] [stdout] | ^^^^^ help: change this to: `item` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:501:48 [INFO] [stdout] | [INFO] [stdout] 501 | let a = Box::new(self.expr(&a, &a_ty)?); [INFO] [stdout] | ^^ help: change this to: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/reifier/mod.rs:523:59 [INFO] [stdout] | [INFO] [stdout] 523 | ... let b = Box::new(self.expr(b, &*param)?); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 523 - let b = Box::new(self.expr(b, &*param)?); [INFO] [stdout] 523 + let b = Box::new(self.expr(b, param)?); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 523 | let b = Box::new(self.expr(b, &**param)?); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:550:47 [INFO] [stdout] | [INFO] [stdout] 550 | let value = self.expr(&value, &Type::Unknown)?; [INFO] [stdout] | ^^^^^^ help: change this to: `value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:690:41 [INFO] [stdout] | [INFO] [stdout] 690 | if !arg_type.is_subtype(&a_param) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `a_param` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:719:45 [INFO] [stdout] | [INFO] [stdout] 719 | ... Some(self.type_(&value)?) [INFO] [stdout] | ^^^^^^ help: change this to: `value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/reifier/mod.rs:741:40 [INFO] [stdout] | [INFO] [stdout] 741 | let x = unsafe { std::mem::transmute::(0) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider adding missing annotations: `transmute::` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:764:60 [INFO] [stdout] | [INFO] [stdout] 764 | let constructor = self.module.defs.get(&sym).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `sym` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:771:38 [INFO] [stdout] | [INFO] [stdout] 771 | let a = self.pattern(&a, &a_ty)?; [INFO] [stdout] | ^^ help: change this to: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:784:38 [INFO] [stdout] | [INFO] [stdout] 784 | let b = self.pattern(&b, ¶m)?; [INFO] [stdout] | ^^ help: change this to: `b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:784:42 [INFO] [stdout] | [INFO] [stdout] 784 | let b = self.pattern(&b, ¶m)?; [INFO] [stdout] | ^^^^^^ help: change this to: `param` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/reifier/mod.rs:801:45 [INFO] [stdout] | [INFO] [stdout] 801 | let Some(variant) = items.iter().filter(|it| it.name == item.name).next() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `items.iter().find(|it| it.name == item.name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:815:50 [INFO] [stdout] | [INFO] [stdout] 815 | let value = self.pattern(&value, &value_ty)?; [INFO] [stdout] | ^^^^^^ help: change this to: `value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:871:49 [INFO] [stdout] | [INFO] [stdout] 871 | let item = self.pattern(&item, &Type::Unknown)?; [INFO] [stdout] | ^^^^^ help: change this to: `item` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:984:70 [INFO] [stdout] | [INFO] [stdout] 984 | parser::ExprKind::Assert { expr, .. } => Self::has_solve(&expr)?, [INFO] [stdout] | ^^^^^ help: change this to: `expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:985:62 [INFO] [stdout] | [INFO] [stdout] 985 | parser::ExprKind::Apply(a, b) => Self::has_solve(&a)? || Self::has_solve(&b)?, [INFO] [stdout] | ^^ help: change this to: `a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/reifier/mod.rs:985:86 [INFO] [stdout] | [INFO] [stdout] 985 | parser::ExprKind::Apply(a, b) => Self::has_solve(&a)? || Self::has_solve(&b)?, [INFO] [stdout] | ^^ help: change this to: `b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lowerer/lir.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | / match &self.branch { [INFO] [stdout] 52 | | Some(Branch(.., t)) => succs[0] = Some(t), [INFO] [stdout] 53 | | None => (), [INFO] [stdout] 54 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(Branch(.., t)) = &self.branch { succs[0] = Some(t) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> src/lowerer/lir.rs:61:27 [INFO] [stdout] | [INFO] [stdout] 61 | succs.into_iter().filter_map(|s| s) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:19:88 [INFO] [stdout] | [INFO] [stdout] 19 | value: Value::Function(Lowerer::new(module).lower(*spec, arg.as_ref(), &body)), [INFO] [stdout] | ^^^^^ help: change this to: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:136:59 [INFO] [stdout] | [INFO] [stdout] 136 | let proc = lowerer.lower(*spec, arg.as_ref(), &body); [INFO] [stdout] | ^^^^^ help: change this to: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:242:27 [INFO] [stdout] | [INFO] [stdout] 242 | self.cond(&cond, JumpCond::True(body_lab)); [INFO] [stdout] | ^^^^^ help: change this to: `cond` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:454:31 [INFO] [stdout] | [INFO] [stdout] 454 | self.expr(&arg, want_output) [INFO] [stdout] | ^^^^ help: change this to: `arg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lowerer/mod.rs:458:28 [INFO] [stdout] | [INFO] [stdout] 458 | if items.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!items.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:499:46 [INFO] [stdout] | [INFO] [stdout] 499 | let data = self.expr(&data, true).unwrap(); [INFO] [stdout] | ^^^^^ help: change this to: `data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/lowerer/mod.rs:517:53 [INFO] [stdout] | [INFO] [stdout] 517 | reifier::ExprKind::Literal(lit) => Some(match lit { [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 518 | | &reifier::Literal::Boolean(b) => self.load(Producer::ConstI(b as u64)), [INFO] [stdout] 519 | | &reifier::Literal::Integer(i) => self.load(Producer::ConstI(i)), [INFO] [stdout] 520 | | &reifier::Literal::Float(f) => self.load(Producer::ConstF(f)), [INFO] [stdout] 521 | | _ => todo!(), [INFO] [stdout] 522 | | }), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 517 ~ reifier::ExprKind::Literal(lit) => Some(match *lit { [INFO] [stdout] 518 ~ reifier::Literal::Boolean(b) => self.load(Producer::ConstI(b as u64)), [INFO] [stdout] 519 ~ reifier::Literal::Integer(i) => self.load(Producer::ConstI(i)), [INFO] [stdout] 520 ~ reifier::Literal::Float(f) => self.load(Producer::ConstF(f)), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lowerer/mod.rs:654:21 [INFO] [stdout] | [INFO] [stdout] 654 | &e, [INFO] [stdout] | ^^ help: change this to: `e` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/optimizers/mod.rs:6:21 [INFO] [stdout] | [INFO] [stdout] 6 | for (_, def) in &mut module.defs { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 6 - for (_, def) in &mut module.defs { [INFO] [stdout] 6 + for def in module.defs.values_mut() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/optimizers/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | / match &mut def.value { [INFO] [stdout] 8 | | Value::Function(cfg) => simplify::Simplify {}.run(cfg), [INFO] [stdout] 9 | | _ => (), [INFO] [stdout] 10 | | } [INFO] [stdout] | |_________^ help: try: `if let Value::Function(cfg) = &mut def.value { simplify::Simplify {}.run(cfg) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/backends/riscv/regalloc.rs:20:20 [INFO] [stdout] | [INFO] [stdout] 20 | if !doms[p.0].is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `doms[p.0].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/backends/riscv/regalloc.rs:21:51 [INFO] [stdout] | [INFO] [stdout] 21 | new_idom = intersect(&labels, &mut *doms, p, new_idom) [INFO] [stdout] | ^^^^^^^^^^ help: try: `&mut doms` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/backends/riscv/regalloc.rs:34:22 [INFO] [stdout] | [INFO] [stdout] 34 | fn intersect(labels: &Vec, doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 34 - fn intersect(labels: &Vec, doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] 34 + fn intersect(labels: &[usize], doms: &mut [Option], b1: BlockRef, b2: BlockRef) -> BlockRef { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary transmute [INFO] [stdout] --> src/reifier/mod.rs:741:30 [INFO] [stdout] | [INFO] [stdout] 741 | let x = unsafe { std::mem::transmute::(0) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unnecessary_transmutes)]` on by default [INFO] [stdout] help: replace this with [INFO] [stdout] | [INFO] [stdout] 741 - let x = unsafe { std::mem::transmute::(0) }; [INFO] [stdout] 741 + let x = unsafe { u32::cast_signed(0) }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.54s [INFO] running `Command { std: "docker" "inspect" "6b2bb4b48dbc316039a988222b42ff9a59002c524e9fec6a5cce4ed1e396963e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6b2bb4b48dbc316039a988222b42ff9a59002c524e9fec6a5cce4ed1e396963e", kill_on_drop: false }` [INFO] [stdout] 6b2bb4b48dbc316039a988222b42ff9a59002c524e9fec6a5cce4ed1e396963e