[INFO] updating cached repository sinesc/itsy [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/sinesc/itsy [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/sinesc/itsy" "work/ex/clippy-test-run/sources/stable/gh/sinesc/itsy"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/sinesc/itsy'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/sinesc/itsy" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sinesc/itsy"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sinesc/itsy'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] cd0495427df417e870ec19152097e47aa3c82ce0 [INFO] sha for GitHub repo sinesc/itsy: cd0495427df417e870ec19152097e47aa3c82ce0 [INFO] validating manifest of sinesc/itsy on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of sinesc/itsy on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing sinesc/itsy [INFO] finished frobbing sinesc/itsy [INFO] frobbed toml for sinesc/itsy written to work/ex/clippy-test-run/sources/stable/gh/sinesc/itsy/Cargo.toml [INFO] started frobbing sinesc/itsy [INFO] finished frobbing sinesc/itsy [INFO] frobbed toml for sinesc/itsy written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sinesc/itsy/Cargo.toml [INFO] crate sinesc/itsy has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting sinesc/itsy against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/sinesc/itsy:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 4976765865bb01197da845e1d7e70d0e955bd32e8f95b5a5d63bf58acece1599 [INFO] running `"docker" "start" "-a" "4976765865bb01197da845e1d7e70d0e955bd32e8f95b5a5d63bf58acece1599"` [INFO] [stderr] Checking memchr v2.0.1 [INFO] [stderr] Checking nom v4.1.1 [INFO] [stderr] Checking itsy v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frontend/ast.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | name : name, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/frontend/resolver/scopes.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bytecode/vm.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | program : program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `program` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frontend/ast.rs:98:13 [INFO] [stderr] | [INFO] [stderr] 98 | name : name, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/frontend/resolver/scopes.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bytecode/vm.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | program : program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `program` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/frontend/parser.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 86 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 87 | | if let Ok(integer) = str::parse::(*n) { [INFO] [stderr] 88 | | return Ok((n, Literal { [INFO] [stderr] 89 | | value : LiteralValue::Numeric(Numeric::Unsigned(integer)), [INFO] [stderr] ... | [INFO] [stderr] 93 | | } [INFO] [stderr] 94 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 86 | } else if let Ok(integer) = str::parse::(*n) { [INFO] [stderr] 87 | return Ok((n, Literal { [INFO] [stderr] 88 | value : LiteralValue::Numeric(Numeric::Unsigned(integer)), [INFO] [stderr] 89 | type_id : None, [INFO] [stderr] 90 | type_name : None, // todo: see above [INFO] [stderr] 91 | })) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/frontend/parser.rs:86:12 [INFO] [stderr] | [INFO] [stderr] 86 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 87 | | if let Ok(integer) = str::parse::(*n) { [INFO] [stderr] 88 | | return Ok((n, Literal { [INFO] [stderr] 89 | | value : LiteralValue::Numeric(Numeric::Unsigned(integer)), [INFO] [stderr] ... | [INFO] [stderr] 93 | | } [INFO] [stderr] 94 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 86 | } else if let Ok(integer) = str::parse::(*n) { [INFO] [stderr] 87 | return Ok((n, Literal { [INFO] [stderr] 88 | value : LiteralValue::Numeric(Numeric::Unsigned(integer)), [INFO] [stderr] 89 | type_id : None, [INFO] [stderr] 90 | type_name : None, // todo: see above [INFO] [stderr] 91 | })) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/frontend/resolver.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Struct` [INFO] [stderr] --> src/frontend/resolver.rs:11:82 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::frontend::util::{ScopeId, TypeId, BindingId, FunctionId, Type, Array, Struct}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/frontend/resolver.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Struct` [INFO] [stderr] --> src/frontend/resolver.rs:11:82 [INFO] [stderr] | [INFO] [stderr] 11 | use crate::frontend::util::{ScopeId, TypeId, BindingId, FunctionId, Type, Array, Struct}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bytecode/vm.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bytecode/vm.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/bytecode/macros.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | map [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/lib.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | extern_rust!(@trait Standalone); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/bytecode/macros.rs:45:31 [INFO] [stderr] | [INFO] [stderr] 45 | let mut map = ::std::collections::HashMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/lib.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | extern_rust!(@trait Standalone); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/bytecode/macros.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | map [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/lib.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | extern_rust!(@trait Standalone); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/bytecode/macros.rs:45:31 [INFO] [stderr] | [INFO] [stderr] 45 | let mut map = ::std::collections::HashMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/lib.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | extern_rust!(@trait Standalone); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/frontend/ast.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | ForLoop(ForLoop<'a>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 11 | ForLoop(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/frontend/ast.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | self.args.iter().fold(true, |acc, arg| acc && arg.type_id.is_some()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.all(|arg| arg.type_id.is_some())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/frontend/ast.rs:292:25 [INFO] [stderr] | [INFO] [stderr] 292 | self.args.iter().fold(true, |acc, arg| acc && arg.get_type_id().is_some()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.all(|arg| arg.get_type_id().is_some())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/frontend/parser.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | m.into_iter().map(|s| *s).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `m.into_iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/frontend/parser.rs:70:19 [INFO] [stderr] | [INFO] [stderr] 70 | if n.contains(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/frontend/parser.rs:78:29 [INFO] [stderr] | [INFO] [stderr] 78 | } else if n.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/frontend/ast.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | ForLoop(ForLoop<'a>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 11 | ForLoop(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/frontend/ast.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | self.args.iter().fold(true, |acc, arg| acc && arg.type_id.is_some()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.all(|arg| arg.type_id.is_some())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/frontend/ast.rs:292:25 [INFO] [stderr] | [INFO] [stderr] 292 | self.args.iter().fold(true, |acc, arg| acc && arg.get_type_id().is_some()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.all(|arg| arg.get_type_id().is_some())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/frontend/parser.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | m.into_iter().map(|s| *s).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `m.into_iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/frontend/parser.rs:70:19 [INFO] [stderr] | [INFO] [stderr] 70 | if n.contains(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/frontend/parser.rs:78:29 [INFO] [stderr] | [INFO] [stderr] 78 | } else if n.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:172:19 [INFO] [stderr] | [INFO] [stderr] 172 | map!(boolean, |m| Expression::Literal(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | | map!(string, |m| Expression::Literal(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:179:23 [INFO] [stderr] | [INFO] [stderr] 179 | | map!(numerical, |m| Expression::Literal(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:172:19 [INFO] [stderr] | [INFO] [stderr] 172 | map!(boolean, |m| Expression::Literal(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | | map!(string, |m| Expression::Literal(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:179:23 [INFO] [stderr] | [INFO] [stderr] 179 | | map!(numerical, |m| Expression::Literal(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:263:65 [INFO] [stderr] | [INFO] [stderr] 263 | named!(array_expression, Expression<'_>>, map!(array, |m| Expression::Literal(m))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:274:31 [INFO] [stderr] | [INFO] [stderr] 274 | type_name : m.2.map(|t| TypeName::unknown(t)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `TypeName::unknown` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:263:65 [INFO] [stderr] | [INFO] [stderr] 263 | named!(array_expression, Expression<'_>>, map!(array, |m| Expression::Literal(m))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Expression::Literal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:391:22 [INFO] [stderr] | [INFO] [stderr] 391 | | map!(if_block, |m| Statement::IfBlock(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::IfBlock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:394:22 [INFO] [stderr] | [INFO] [stderr] 394 | | map!(for_loop, |m| Statement::ForLoop(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::ForLoop` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:395:24 [INFO] [stderr] | [INFO] [stderr] 395 | | map!(while_loop, |m| Statement::WhileLoop(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::WhileLoop` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:396:49 [INFO] [stderr] | [INFO] [stderr] 396 | | map!(terminated!(expression, char!(';')), |m| Statement::Expression(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::Expression` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:397:19 [INFO] [stderr] | [INFO] [stderr] 397 | | map!(block, |m| Statement::Block(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::Block` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:42:44 [INFO] [stderr] | [INFO] [stderr] 42 | min: Numeric::Unsigned(u8::MIN as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u8::MIN)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:43:44 [INFO] [stderr] | [INFO] [stderr] 43 | max: Numeric::Unsigned(u8::MAX as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u8::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:47:44 [INFO] [stderr] | [INFO] [stderr] 47 | min: Numeric::Unsigned(u16::MIN as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u16::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:48:44 [INFO] [stderr] | [INFO] [stderr] 48 | max: Numeric::Unsigned(u16::MAX as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u16::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:52:44 [INFO] [stderr] | [INFO] [stderr] 52 | min: Numeric::Unsigned(u32::MIN as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:53:44 [INFO] [stderr] | [INFO] [stderr] 53 | max: Numeric::Unsigned(u32::MAX as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:64:42 [INFO] [stderr] | [INFO] [stderr] 64 | min: Numeric::Signed(i8::MIN as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(i8::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:65:42 [INFO] [stderr] | [INFO] [stderr] 65 | max: Numeric::Signed(i8::MAX as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(i8::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | min: Numeric::Signed(i16::MIN as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i16::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:70:42 [INFO] [stderr] | [INFO] [stderr] 70 | max: Numeric::Signed(i16::MAX as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i16::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:74:42 [INFO] [stderr] | [INFO] [stderr] 74 | min: Numeric::Signed(i32::MIN as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:75:42 [INFO] [stderr] | [INFO] [stderr] 75 | max: Numeric::Signed(i32::MAX as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/frontend/resolver/primitives.rs:128:118 [INFO] [stderr] | [INFO] [stderr] 128 | } else if self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | ______________________________________________________________________________________________________________________^ [INFO] [stderr] 129 | | true [INFO] [stderr] 130 | | } else { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/frontend/resolver/primitives.rs:125:120 [INFO] [stderr] | [INFO] [stderr] 125 | } else if self.is_signed(source_type_id) && self.is_signed(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | ________________________________________________________________________________________________________________________^ [INFO] [stderr] 126 | | // signed -> signed: valid if target has equal or more bits (primitive type_ids are ordered) [INFO] [stderr] 127 | | true [INFO] [stderr] 128 | | } else if self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/frontend/resolver/primitives.rs:128:16 [INFO] [stderr] | [INFO] [stderr] 128 | } else if self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | ________________^ [INFO] [stderr] 129 | | true [INFO] [stderr] 130 | | } else { [INFO] [stderr] 131 | | // everything else: invalid [INFO] [stderr] 132 | | false [INFO] [stderr] 133 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:274:31 [INFO] [stderr] | [INFO] [stderr] 274 | type_name : m.2.map(|t| TypeName::unknown(t)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `TypeName::unknown` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:71:22 [INFO] [stderr] | [INFO] [stderr] 71 | .expect(&format!("Unknown argument type encountered: {}", &arg_type_name)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unknown argument type encountered: {}", &arg_type_name))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/resolver.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | / if let &mut Some(scope_id) = scope_id { [INFO] [stderr] 139 | | self.scope_id = scope_id; [INFO] [stderr] 140 | | } else { [INFO] [stderr] 141 | | self.scope_id = self.scopes.create_scope(parent_scope_id); [INFO] [stderr] 142 | | *scope_id = Some(self.scope_id); [INFO] [stderr] 143 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 138 | if let Some(scope_id) = *scope_id { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:464:51 [INFO] [stderr] | [INFO] [stderr] 464 | self.resolve_expression(expr, lhs.or(self.scopes.binding_type(binding_id))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| self.scopes.binding_type(binding_id))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:613:59 [INFO] [stderr] | [INFO] [stderr] 613 | self.resolve_expression(&mut item.left, type_hint.or(item.right.get_type_id())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| item.right.get_type_id())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:614:60 [INFO] [stderr] | [INFO] [stderr] 614 | self.resolve_expression(&mut item.right, type_hint.or(item.left.get_type_id())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| item.left.get_type_id())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/frontend/util/repository.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | self.map.get(name).map(|i| *i) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.map.get(name).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:60:40 [INFO] [stderr] | [INFO] [stderr] 60 | Numeric::Signed(v) => Some(*v as i128), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i128::from(*v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:61:42 [INFO] [stderr] | [INFO] [stderr] 61 | Numeric::Unsigned(v) => Some(*v as i128), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i128::from(*v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:136:41 [INFO] [stderr] | [INFO] [stderr] 136 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:138:48 [INFO] [stderr] | [INFO] [stderr] 138 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:154:41 [INFO] [stderr] | [INFO] [stderr] 154 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:156:48 [INFO] [stderr] | [INFO] [stderr] 156 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:172:41 [INFO] [stderr] | [INFO] [stderr] 172 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:174:48 [INFO] [stderr] | [INFO] [stderr] 174 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:190:41 [INFO] [stderr] | [INFO] [stderr] 190 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:192:48 [INFO] [stderr] | [INFO] [stderr] 192 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:208:41 [INFO] [stderr] | [INFO] [stderr] 208 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:210:48 [INFO] [stderr] | [INFO] [stderr] 210 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: item `bytecode::writer::Writer` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/bytecode/writer.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / impl Writer where T: ExternRust { [INFO] [stderr] 16 | | /// Creates a new writer instance. [INFO] [stderr] 17 | | pub fn new() -> Self { [INFO] [stderr] 18 | | Writer { [INFO] [stderr] ... | [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bytecode::writer::Writer` [INFO] [stderr] --> src/bytecode/writer.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Writer { [INFO] [stderr] 19 | | program: Program::::new(), [INFO] [stderr] 20 | | position: 0, [INFO] [stderr] 21 | | } [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | impl Default for bytecode::writer::Writer { [INFO] [stderr] 16 | fn default() -> Self { [INFO] [stderr] 17 | Self::new() [INFO] [stderr] 18 | } [INFO] [stderr] 19 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | impl_write_const!(small, u8); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | impl_write_const!(small, i8); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | impl_write_const!(small, u16); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | impl_write_const!(small, i16); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | impl_write_const!(normal, i32); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:44 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[3])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:74 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:104 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:132 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:101:21 [INFO] [stderr] | [INFO] [stderr] 101 | (chunk[0] as Value) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:102:45 [INFO] [stderr] | [INFO] [stderr] 102 | | if chunk.len() > 1 { ((chunk[1] as Value) << 8) } else { 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:103:45 [INFO] [stderr] | [INFO] [stderr] 103 | | if chunk.len() > 2 { ((chunk[2] as Value) << 16) } else { 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bytecode/writer.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | self.write(buf).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:139:40 [INFO] [stderr] | [INFO] [stderr] 139 | SeekFrom::Current(pos) => (self.position as i64 + pos) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.position)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:141:12 [INFO] [stderr] | [INFO] [stderr] 141 | Ok(self.position as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.position)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/opcodes.rs:140:23 [INFO] [stderr] | [INFO] [stderr] 140 | let num_ret = num_ret as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(num_ret)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/opcodes.rs:149:43 [INFO] [stderr] | [INFO] [stderr] 149 | let ret_pos = self.stack.fp - 3 - prev_num_args as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(prev_num_args)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:391:22 [INFO] [stderr] | [INFO] [stderr] 391 | | map!(if_block, |m| Statement::IfBlock(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::IfBlock` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:394:22 [INFO] [stderr] | [INFO] [stderr] 394 | | map!(for_loop, |m| Statement::ForLoop(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::ForLoop` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:395:24 [INFO] [stderr] | [INFO] [stderr] 395 | | map!(while_loop, |m| Statement::WhileLoop(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::WhileLoop` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:396:49 [INFO] [stderr] | [INFO] [stderr] 396 | | map!(terminated!(expression, char!(';')), |m| Statement::Expression(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::Expression` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/frontend/parser.rs:397:19 [INFO] [stderr] | [INFO] [stderr] 397 | | map!(block, |m| Statement::Block(m)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Statement::Block` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bytecode/compiler.rs:43:37 [INFO] [stderr] | [INFO] [stderr] 43 | fn lookup(self: &Self, binding: &BindingId) -> Option { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `BindingId` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode/compiler.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | self.0.last().expect("Attempted to lookup stack item without LocalsStack").map.get(binding).map(|b| *b) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.0.last().expect("Attempted to lookup stack item without LocalsStack").map.get(binding).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bytecode::compiler::Compiler` [INFO] [stderr] --> src/bytecode/compiler.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn new() -> Self { [INFO] [stderr] 124 | | Compiler { [INFO] [stderr] 125 | | writer : Writer::new(), [INFO] [stderr] 126 | | types : Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 130 | | } [INFO] [stderr] 131 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 120 | impl Default for bytecode::compiler::Compiler { [INFO] [stderr] 121 | fn default() -> Self { [INFO] [stderr] 122 | Self::new() [INFO] [stderr] 123 | } [INFO] [stderr] 124 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `compound_assign @ _` pattern can be written as just `compound_assign` [INFO] [stderr] --> src/bytecode/compiler.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | compound_assign @ _ => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:241:38 [INFO] [stderr] | [INFO] [stderr] 241 | frame.next_arg -= max(0, self.get_type(arg.type_id).size() as i32 / 4 - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(arg.type_id).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:250:42 [INFO] [stderr] | [INFO] [stderr] 250 | frame.next_var += max(1, self.get_type(binding.type_id).size() as i32 / 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(binding.type_id).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:260:64 [INFO] [stderr] | [INFO] [stderr] 260 | self.writer.ret(item.sig.ret.as_ref().map_or(0, |ret| (self.get_type(ret.type_id).size() as i32 / 4) as u8 )); // todo: skip if last statement was "return" [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(ret.type_id).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/bytecode/compiler.rs:280:48 [INFO] [stderr] | [INFO] [stderr] 280 | let function_id = item.function_id.expect(&format!("Unresolved function \"{}\" encountered", item.path.0[0])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unresolved function \"{}\" encountered", item.path.0[0]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/bytecode/compiler.rs:286:52 [INFO] [stderr] | [INFO] [stderr] 286 | self.unresolved.entry(function_id).or_insert(Vec::new()).push(call_position); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:371:62 [INFO] [stderr] | [INFO] [stderr] 371 | self.writer.ret(item.fn_ret_type_id.map_or(0, |ret| (self.get_type(Some(ret)).size() as i32 / 4) as u8 )); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(Some(ret)).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:556:13 [INFO] [stderr] | [INFO] [stderr] 556 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.preinci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:557:13 [INFO] [stderr] | [INFO] [stderr] 557 | ty @ _ => panic!("Unsupported Inc operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:563:13 [INFO] [stderr] | [INFO] [stderr] 563 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.predeci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:564:13 [INFO] [stderr] | [INFO] [stderr] 564 | ty @ _ => panic!("Unsupported Dec operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:570:13 [INFO] [stderr] | [INFO] [stderr] 570 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.postinci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:571:13 [INFO] [stderr] | [INFO] [stderr] 571 | ty @ _ => panic!("Unsupported Inc operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:577:13 [INFO] [stderr] | [INFO] [stderr] 577 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.postdeci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:578:13 [INFO] [stderr] | [INFO] [stderr] 578 | ty @ _ => panic!("Unsupported Dec operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:586:13 [INFO] [stderr] | [INFO] [stderr] 586 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.subi(), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | ty @ _ => panic!("Unsupported Sub operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:595:13 [INFO] [stderr] | [INFO] [stderr] 595 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.addi(), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:596:13 [INFO] [stderr] | [INFO] [stderr] 596 | ty @ _ => panic!("Unsupported Add operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:604:13 [INFO] [stderr] | [INFO] [stderr] 604 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.muli(), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:605:13 [INFO] [stderr] | [INFO] [stderr] 605 | ty @ _ => panic!("Unsupported Mul operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/bytecode/compiler.rs:688:1 [INFO] [stderr] | [INFO] [stderr] 688 | / pub fn compile<'a, T>(program: ResolvedProgram<'a, T>) -> Program where T: ExternRust+Debug { [INFO] [stderr] 689 | | let mut compiler = Compiler::new(); [INFO] [stderr] 690 | | compiler.compile(program); [INFO] [stderr] 691 | | compiler.into_program() [INFO] [stderr] 692 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `bytecode::stack::Stack` [INFO] [stderr] --> src/bytecode/stack.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Stack { [INFO] [stderr] 16 | | data: Vec::with_capacity(256), [INFO] [stderr] 17 | | fp : 0, [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/stack.rs:94:10 [INFO] [stderr] | [INFO] [stderr] 94 | (self.fp as i64 + offset as i64) as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(self.fp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/stack.rs:94:27 [INFO] [stderr] | [INFO] [stderr] 94 | (self.fp as i64 + offset as i64) as u32 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:42:44 [INFO] [stderr] | [INFO] [stderr] 42 | min: Numeric::Unsigned(u8::MIN as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u8::MIN)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:43:44 [INFO] [stderr] | [INFO] [stderr] 43 | max: Numeric::Unsigned(u8::MAX as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u8::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:176:1 [INFO] [stderr] | [INFO] [stderr] 176 | impl_stack!(Stack, small, u8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] help: try [INFO] [stderr] --> src/frontend/resolver/primitives.rs:47:44 [INFO] [stderr] | [INFO] [stderr] 47 | min: Numeric::Unsigned(u16::MIN as Unsigned), [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u16::MIN)` [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:48:44 [INFO] [stderr] | [INFO] [stderr] 48 | max: Numeric::Unsigned(u16::MAX as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u16::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:52:44 [INFO] [stderr] | [INFO] [stderr] 52 | min: Numeric::Unsigned(u32::MIN as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:53:44 [INFO] [stderr] | [INFO] [stderr] 53 | max: Numeric::Unsigned(u32::MAX as Unsigned), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(u32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:176:1 [INFO] [stderr] | [INFO] [stderr] 176 | impl_stack!(Stack, small, u8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:64:42 [INFO] [stderr] | [INFO] [stderr] 64 | min: Numeric::Signed(i8::MIN as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(i8::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:65:42 [INFO] [stderr] | [INFO] [stderr] 65 | max: Numeric::Signed(i8::MAX as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(i8::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | min: Numeric::Signed(i16::MIN as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i16::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:70:42 [INFO] [stderr] | [INFO] [stderr] 70 | max: Numeric::Signed(i16::MAX as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i16::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:74:42 [INFO] [stderr] | [INFO] [stderr] 74 | min: Numeric::Signed(i32::MIN as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:177:1 [INFO] [stderr] | [INFO] [stderr] 177 | impl_stack!(Stack, small, i8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/frontend/resolver/primitives.rs:75:42 [INFO] [stderr] | [INFO] [stderr] 75 | max: Numeric::Signed(i32::MAX as Signed), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:177:1 [INFO] [stderr] | [INFO] [stderr] 177 | impl_stack!(Stack, small, i8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:178:1 [INFO] [stderr] | [INFO] [stderr] 178 | impl_stack!(Stack, small, u16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:178:1 [INFO] [stderr] | [INFO] [stderr] 178 | impl_stack!(Stack, small, u16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:179:1 [INFO] [stderr] | [INFO] [stderr] 179 | impl_stack!(Stack, small, i16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:179:1 [INFO] [stderr] | [INFO] [stderr] 179 | impl_stack!(Stack, small, i16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a `i32` to a `f32` [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:182:1 [INFO] [stderr] | [INFO] [stderr] 182 | impl_stack!(Stack, normal, f32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] help: consider using [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { f32::from_bits($stack.data.pop().expect("Stack underflow")) }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // load operations [INFO] [stderr] 96 | (@load large, $type:tt, $stack: ident, $pos:expr) => { { [INFO] [stderr] 97 | let low: u32 = impl_stack!(@load normal, u32, $stack, $pos); [INFO] [stderr] 98 | let high: u32 = impl_stack!(@load normal, u32, $stack, $pos + 1); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a `i32` to a `f32` [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:182:1 [INFO] [stderr] | [INFO] [stderr] 182 | impl_stack!(Stack, normal, f32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] help: consider using [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { f32::from_bits(*$stack.data.get($pos as usize).expect("Stack bounds exceeded")) [INFO] [stderr] 94 | }; [INFO] [stderr] 95 | [INFO] [stderr] 96 | // top operations [INFO] [stderr] 97 | (@top large, $stack: ident) => { { [INFO] [stderr] 98 | $stack.load($stack.sp() - 2) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `bytecode::Program` [INFO] [stderr] --> src/bytecode.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn new() -> Self { [INFO] [stderr] 36 | | Program { [INFO] [stderr] 37 | | rust_fn : PhantomData, [INFO] [stderr] 38 | | instructions: Vec::new(), [INFO] [stderr] 39 | | consts : Vec::new(), [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/frontend/resolver/primitives.rs:128:118 [INFO] [stderr] | [INFO] [stderr] 128 | } else if self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | ______________________________________________________________________________________________________________________^ [INFO] [stderr] 129 | | true [INFO] [stderr] 130 | | } else { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/frontend/resolver/primitives.rs:125:120 [INFO] [stderr] | [INFO] [stderr] 125 | } else if self.is_signed(source_type_id) && self.is_signed(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | ________________________________________________________________________________________________________________________^ [INFO] [stderr] 126 | | // signed -> signed: valid if target has equal or more bits (primitive type_ids are ordered) [INFO] [stderr] 127 | | true [INFO] [stderr] 128 | | } else if self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/frontend/resolver/primitives.rs:128:16 [INFO] [stderr] | [INFO] [stderr] 128 | } else if self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id { [INFO] [stderr] | ________________^ [INFO] [stderr] 129 | | true [INFO] [stderr] 130 | | } else { [INFO] [stderr] 131 | | // everything else: invalid [INFO] [stderr] 132 | | false [INFO] [stderr] 133 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.is_float(source_type_id) && self.is_float(target_type_id) && source_type_id <= target_type_id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:71:22 [INFO] [stderr] | [INFO] [stderr] 71 | .expect(&format!("Unknown argument type encountered: {}", &arg_type_name)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unknown argument type encountered: {}", &arg_type_name))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/frontend/resolver.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | / if let &mut Some(scope_id) = scope_id { [INFO] [stderr] 139 | | self.scope_id = scope_id; [INFO] [stderr] 140 | | } else { [INFO] [stderr] 141 | | self.scope_id = self.scopes.create_scope(parent_scope_id); [INFO] [stderr] 142 | | *scope_id = Some(self.scope_id); [INFO] [stderr] 143 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 138 | if let Some(scope_id) = *scope_id { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `itsy`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:464:51 [INFO] [stderr] | [INFO] [stderr] 464 | self.resolve_expression(expr, lhs.or(self.scopes.binding_type(binding_id))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| self.scopes.binding_type(binding_id))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:613:59 [INFO] [stderr] | [INFO] [stderr] 613 | self.resolve_expression(&mut item.left, type_hint.or(item.right.get_type_id())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| item.right.get_type_id())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/frontend/resolver.rs:614:60 [INFO] [stderr] | [INFO] [stderr] 614 | self.resolve_expression(&mut item.right, type_hint.or(item.left.get_type_id())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| item.left.get_type_id())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/frontend/util/repository.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | self.map.get(name).map(|i| *i) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.map.get(name).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:60:40 [INFO] [stderr] | [INFO] [stderr] 60 | Numeric::Signed(v) => Some(*v as i128), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i128::from(*v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:61:42 [INFO] [stderr] | [INFO] [stderr] 61 | Numeric::Unsigned(v) => Some(*v as i128), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i128::from(*v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:136:41 [INFO] [stderr] | [INFO] [stderr] 136 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:138:48 [INFO] [stderr] | [INFO] [stderr] 138 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:154:41 [INFO] [stderr] | [INFO] [stderr] 154 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:156:48 [INFO] [stderr] | [INFO] [stderr] 156 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:172:41 [INFO] [stderr] | [INFO] [stderr] 172 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:174:48 [INFO] [stderr] | [INFO] [stderr] 174 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:190:41 [INFO] [stderr] | [INFO] [stderr] 190 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:192:48 [INFO] [stderr] | [INFO] [stderr] 192 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:208:41 [INFO] [stderr] | [INFO] [stderr] 208 | if result >= 0 && result <= std::u64::MAX as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::u64::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/frontend/util/numeric.rs:210:48 [INFO] [stderr] | [INFO] [stderr] 210 | } else if result <= 0 && result >= std::i64::MIN as i128 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(std::i64::MIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: item `bytecode::writer::Writer` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/bytecode/writer.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / impl Writer where T: ExternRust { [INFO] [stderr] 16 | | /// Creates a new writer instance. [INFO] [stderr] 17 | | pub fn new() -> Self { [INFO] [stderr] 18 | | Writer { [INFO] [stderr] ... | [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bytecode::writer::Writer` [INFO] [stderr] --> src/bytecode/writer.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Writer { [INFO] [stderr] 19 | | program: Program::::new(), [INFO] [stderr] 20 | | position: 0, [INFO] [stderr] 21 | | } [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | impl Default for bytecode::writer::Writer { [INFO] [stderr] 16 | fn default() -> Self { [INFO] [stderr] 17 | Self::new() [INFO] [stderr] 18 | } [INFO] [stderr] 19 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:80:1 [INFO] [stderr] | [INFO] [stderr] 80 | impl_write_const!(small, u8); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | impl_write_const!(small, i8); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | impl_write_const!(small, u16); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | impl_write_const!(small, i16); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // implement const write operations for Writer [INFO] [stderr] 95 | ($size:tt, $type:tt) => { [INFO] [stderr] 96 | impl

WriteConst<$type> for Writer

where P: ExternRust

{ [INFO] [stderr] 97 | fn write_const(self: &mut Self, value: $type) -> u32 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/writer.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | impl_write_const!(normal, i32); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:44 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[3])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:74 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:104 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:98:132 [INFO] [stderr] | [INFO] [stderr] 98 | self.program.consts.push( ((chunk[3] as Value) << 24) | ((chunk[2] as Value) << 16) | ((chunk[1] as Value) << 8) | chunk[0] as Value ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:101:21 [INFO] [stderr] | [INFO] [stderr] 101 | (chunk[0] as Value) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:102:45 [INFO] [stderr] | [INFO] [stderr] 102 | | if chunk.len() > 1 { ((chunk[1] as Value) << 8) } else { 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:103:45 [INFO] [stderr] | [INFO] [stderr] 103 | | if chunk.len() > 2 { ((chunk[2] as Value) << 16) } else { 0 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(chunk[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bytecode/writer.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | self.write(buf).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:139:40 [INFO] [stderr] | [INFO] [stderr] 139 | SeekFrom::Current(pos) => (self.position as i64 + pos) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.position)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/writer.rs:141:12 [INFO] [stderr] | [INFO] [stderr] 141 | Ok(self.position as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.position)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/opcodes.rs:140:23 [INFO] [stderr] | [INFO] [stderr] 140 | let num_ret = num_ret as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(num_ret)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/opcodes.rs:149:43 [INFO] [stderr] | [INFO] [stderr] 149 | let ret_pos = self.stack.fp - 3 - prev_num_args as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(prev_num_args)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bytecode/compiler.rs:43:37 [INFO] [stderr] | [INFO] [stderr] 43 | fn lookup(self: &Self, binding: &BindingId) -> Option { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `BindingId` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode/compiler.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | self.0.last().expect("Attempted to lookup stack item without LocalsStack").map.get(binding).map(|b| *b) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.0.last().expect("Attempted to lookup stack item without LocalsStack").map.get(binding).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bytecode::compiler::Compiler` [INFO] [stderr] --> src/bytecode/compiler.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn new() -> Self { [INFO] [stderr] 124 | | Compiler { [INFO] [stderr] 125 | | writer : Writer::new(), [INFO] [stderr] 126 | | types : Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 130 | | } [INFO] [stderr] 131 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 120 | impl Default for bytecode::compiler::Compiler { [INFO] [stderr] 121 | fn default() -> Self { [INFO] [stderr] 122 | Self::new() [INFO] [stderr] 123 | } [INFO] [stderr] 124 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `compound_assign @ _` pattern can be written as just `compound_assign` [INFO] [stderr] --> src/bytecode/compiler.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | compound_assign @ _ => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:241:38 [INFO] [stderr] | [INFO] [stderr] 241 | frame.next_arg -= max(0, self.get_type(arg.type_id).size() as i32 / 4 - 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(arg.type_id).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:250:42 [INFO] [stderr] | [INFO] [stderr] 250 | frame.next_var += max(1, self.get_type(binding.type_id).size() as i32 / 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(binding.type_id).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:260:64 [INFO] [stderr] | [INFO] [stderr] 260 | self.writer.ret(item.sig.ret.as_ref().map_or(0, |ret| (self.get_type(ret.type_id).size() as i32 / 4) as u8 )); // todo: skip if last statement was "return" [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(ret.type_id).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/bytecode/compiler.rs:280:48 [INFO] [stderr] | [INFO] [stderr] 280 | let function_id = item.function_id.expect(&format!("Unresolved function \"{}\" encountered", item.path.0[0])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Unresolved function \"{}\" encountered", item.path.0[0]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/bytecode/compiler.rs:286:52 [INFO] [stderr] | [INFO] [stderr] 286 | self.unresolved.entry(function_id).or_insert(Vec::new()).push(call_position); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/compiler.rs:371:62 [INFO] [stderr] | [INFO] [stderr] 371 | self.writer.ret(item.fn_ret_type_id.map_or(0, |ret| (self.get_type(Some(ret)).size() as i32 / 4) as u8 )); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.get_type(Some(ret)).size())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:556:13 [INFO] [stderr] | [INFO] [stderr] 556 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.preinci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:557:13 [INFO] [stderr] | [INFO] [stderr] 557 | ty @ _ => panic!("Unsupported Inc operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:563:13 [INFO] [stderr] | [INFO] [stderr] 563 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.predeci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:564:13 [INFO] [stderr] | [INFO] [stderr] 564 | ty @ _ => panic!("Unsupported Dec operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:570:13 [INFO] [stderr] | [INFO] [stderr] 570 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.postinci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:571:13 [INFO] [stderr] | [INFO] [stderr] 571 | ty @ _ => panic!("Unsupported Inc operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:577:13 [INFO] [stderr] | [INFO] [stderr] 577 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.postdeci(index), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:578:13 [INFO] [stderr] | [INFO] [stderr] 578 | ty @ _ => panic!("Unsupported Dec operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:586:13 [INFO] [stderr] | [INFO] [stderr] 586 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.subi(), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | ty @ _ => panic!("Unsupported Sub operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:595:13 [INFO] [stderr] | [INFO] [stderr] 595 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.addi(), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:596:13 [INFO] [stderr] | [INFO] [stderr] 596 | ty @ _ => panic!("Unsupported Add operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:604:13 [INFO] [stderr] | [INFO] [stderr] 604 | ref ty @ _ if ty.is_integer() && ty.size() <= 4 => self.writer.muli(), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `ty @ _` pattern can be written as just `ty` [INFO] [stderr] --> src/bytecode/compiler.rs:605:13 [INFO] [stderr] | [INFO] [stderr] 605 | ty @ _ => panic!("Unsupported Mul operand {:?}", ty), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/bytecode/compiler.rs:688:1 [INFO] [stderr] | [INFO] [stderr] 688 | / pub fn compile<'a, T>(program: ResolvedProgram<'a, T>) -> Program where T: ExternRust+Debug { [INFO] [stderr] 689 | | let mut compiler = Compiler::new(); [INFO] [stderr] 690 | | compiler.compile(program); [INFO] [stderr] 691 | | compiler.into_program() [INFO] [stderr] 692 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `bytecode::stack::Stack` [INFO] [stderr] --> src/bytecode/stack.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Stack { [INFO] [stderr] 16 | | data: Vec::with_capacity(256), [INFO] [stderr] 17 | | fp : 0, [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/stack.rs:94:10 [INFO] [stderr] | [INFO] [stderr] 94 | (self.fp as i64 + offset as i64) as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(self.fp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/stack.rs:94:27 [INFO] [stderr] | [INFO] [stderr] 94 | (self.fp as i64 + offset as i64) as u32 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:176:1 [INFO] [stderr] | [INFO] [stderr] 176 | impl_stack!(Stack, small, u8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:176:1 [INFO] [stderr] | [INFO] [stderr] 176 | impl_stack!(Stack, small, u8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:177:1 [INFO] [stderr] | [INFO] [stderr] 177 | impl_stack!(Stack, small, i8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:177:1 [INFO] [stderr] | [INFO] [stderr] 177 | impl_stack!(Stack, small, i8); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:178:1 [INFO] [stderr] | [INFO] [stderr] 178 | impl_stack!(Stack, small, u16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:178:1 [INFO] [stderr] | [INFO] [stderr] 178 | impl_stack!(Stack, small, u16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:179:1 [INFO] [stderr] | [INFO] [stderr] 179 | impl_stack!(Stack, small, i16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var) ); }; [INFO] [stderr] 93 | [INFO] [stderr] 94 | // store operations [INFO] [stderr] 95 | (@store large, $type:tt, $stack: ident, $pos:expr, $var:ident) => { { [INFO] [stderr] 96 | let (low, high): (u32, u32) = unsafe { transmute($var) }; [INFO] [stderr] 97 | impl_stack!(@store normal, u32, $stack, $pos, low); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/bytecode/macros.rs:92:41 [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { $input as $type }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:179:1 [INFO] [stderr] | [INFO] [stderr] 179 | impl_stack!(Stack, small, i16); [INFO] [stderr] | ------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | (small, $type:tt, $input:expr) => { i32::from($var); [INFO] [stderr] 93 | }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // pop operations [INFO] [stderr] 96 | (@pop large, $type:tt, $stack: ident) => { { [INFO] [stderr] 97 | let high: u32 = impl_stack!(@pop normal, u32, $stack); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a type (`i32`) to itself [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | impl_stack!(Stack, normal, i32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a `i32` to a `f32` [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:182:1 [INFO] [stderr] | [INFO] [stderr] 182 | impl_stack!(Stack, normal, f32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] help: consider using [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { f32::from_bits($stack.data.pop().expect("Stack underflow")) }; [INFO] [stderr] 94 | [INFO] [stderr] 95 | // load operations [INFO] [stderr] 96 | (@load large, $type:tt, $stack: ident, $pos:expr) => { { [INFO] [stderr] 97 | let low: u32 = impl_stack!(@load normal, u32, $stack, $pos); [INFO] [stderr] 98 | let high: u32 = impl_stack!(@load normal, u32, $stack, $pos + 1); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a `i32` to a `f32` [INFO] [stderr] --> src/bytecode/macros.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { transmute($input) } }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/bytecode/stack.rs:182:1 [INFO] [stderr] | [INFO] [stderr] 182 | impl_stack!(Stack, normal, f32); [INFO] [stderr] | -------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] help: consider using [INFO] [stderr] | [INFO] [stderr] 93 | (normal, $type:tt, $input:expr) => { unsafe { f32::from_bits(*$stack.data.get($pos as usize).expect("Stack bounds exceeded")) [INFO] [stderr] 94 | }; [INFO] [stderr] 95 | [INFO] [stderr] 96 | // top operations [INFO] [stderr] 97 | (@top large, $stack: ident) => { { [INFO] [stderr] 98 | $stack.load($stack.sp() - 2) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `bytecode::Program` [INFO] [stderr] --> src/bytecode.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn new() -> Self { [INFO] [stderr] 36 | | Program { [INFO] [stderr] 37 | | rust_fn : PhantomData, [INFO] [stderr] 38 | | instructions: Vec::new(), [INFO] [stderr] 39 | | consts : Vec::new(), [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `itsy`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4976765865bb01197da845e1d7e70d0e955bd32e8f95b5a5d63bf58acece1599"` [INFO] running `"docker" "rm" "-f" "4976765865bb01197da845e1d7e70d0e955bd32e8f95b5a5d63bf58acece1599"` [INFO] [stdout] 4976765865bb01197da845e1d7e70d0e955bd32e8f95b5a5d63bf58acece1599