[INFO] crate piske 0.1.0 is already in cache [INFO] extracting crate piske 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/piske/0.1.0 [INFO] extracting crate piske 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/piske/0.1.0 [INFO] validating manifest of piske-0.1.0 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 piske-0.1.0 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 piske-0.1.0 [INFO] finished frobbing piske-0.1.0 [INFO] frobbed toml for piske-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/piske/0.1.0/Cargo.toml [INFO] started frobbing piske-0.1.0 [INFO] finished frobbing piske-0.1.0 [INFO] frobbed toml for piske-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/piske/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 piske-0.1.0 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/reg/piske/0.1.0:/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] eaaf51234b3bea58db1e899a4e09ab841110cc12f09b48f57cc3ed41cd7c7eae [INFO] running `"docker" "start" "-a" "eaaf51234b3bea58db1e899a4e09ab841110cc12f09b48f57cc3ed41cd7c7eae"` [INFO] [stderr] Checking nix v0.8.1 [INFO] [stderr] Compiling sindra v0.1.0 [INFO] [stderr] Compiling piske v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking psk_std v0.1.0 [INFO] [stderr] Checking wee-rl v1.0.0 [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/ast/display.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | write!(f, "{}\n", statement.item)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast/inference.rs:103:25 [INFO] [stderr] | [INFO] [stderr] 103 | operand: operand [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `operand` [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: redundant field names in struct initialization [INFO] [stderr] --> src/symbol.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | ty: ty [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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/symbol.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/symbol.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/symbol.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | ty: ty [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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: using `writeln!(&mut state.io.stdout(), "")` [INFO] [stderr] --> src/visitor/eval.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | writeln!(&mut state.io.stdout(), "").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(&mut state.io.stdout())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/visitor/eval.rs:253:21 [INFO] [stderr] | [INFO] [stderr] 253 | end_inclusive: end_inclusive, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `end_inclusive` [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/visitor/state.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | global: global, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `global` [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/visitor/state.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | std_funcs: std_funcs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `std_funcs` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/ast/display.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | write!(f, "{}\n", statement.item)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast/inference.rs:103:25 [INFO] [stderr] | [INFO] [stderr] 103 | operand: operand [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `operand` [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: redundant field names in struct initialization [INFO] [stderr] --> src/symbol.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | ty: ty [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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/symbol.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/symbol.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/symbol.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/symbol.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | ty: ty [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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: using `writeln!(&mut state.io.stdout(), "")` [INFO] [stderr] --> src/visitor/eval.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | writeln!(&mut state.io.stdout(), "").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(&mut state.io.stdout())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/visitor/eval.rs:253:21 [INFO] [stderr] | [INFO] [stderr] 253 | end_inclusive: end_inclusive, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `end_inclusive` [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/visitor/state.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | global: global, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `global` [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/visitor/state.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | std_funcs: std_funcs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `std_funcs` [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: module has the same name as its containing module [INFO] [stderr] --> src/ast/mod.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub mod ast; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:170:49 [INFO] [stderr] | [INFO] [stderr] 170 | } ; __repeat_pos = __pos ; continue ; } } } if 1i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "<=" ) { if let Matched ( __pos , r ) = __infix_parse ( 2i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::LessThanEqual), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:174:49 [INFO] [stderr] | [INFO] [stderr] 174 | } ; __repeat_pos = __pos ; continue ; } } } if 2i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "<" ) { if let Matched ( __pos , r ) = __infix_parse ( 3i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::LessThan), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:178:49 [INFO] [stderr] | [INFO] [stderr] 178 | } ; __repeat_pos = __pos ; continue ; } } } if 3i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "+" ) { if let Matched ( __pos , r ) = __infix_parse ( 4i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Add, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:180:49 [INFO] [stderr] | [INFO] [stderr] 180 | } ; __repeat_pos = __pos ; continue ; } } } if 4i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "*" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Multiply, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:182:49 [INFO] [stderr] | [INFO] [stderr] 182 | } ; __repeat_pos = __pos ; continue ; } } } if 5i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "^" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Power, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:168:47 [INFO] [stderr] | [INFO] [stderr] 168 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "!=" ) { if let Matched ( __pos , r ) = __infix_parse ( 1i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::NotEqual), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:172:47 [INFO] [stderr] | [INFO] [stderr] 172 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , ">=" ) { if let Matched ( __pos , r ) = __infix_parse ( 2i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::GreaterThanEqual), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:176:47 [INFO] [stderr] | [INFO] [stderr] 176 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , ">" ) { if let Matched ( __pos , r ) = __infix_parse ( 3i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::GreaterThan), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:179:47 [INFO] [stderr] | [INFO] [stderr] 179 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "-" ) { if let Matched ( __pos , r ) = __infix_parse ( 4i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Subtract, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:181:47 [INFO] [stderr] | [INFO] [stderr] 181 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "/" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Divide, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/visitor/eval.rs:200:32 [INFO] [stderr] | [INFO] [stderr] 200 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 201 | | if let Some(ref eblock) = *else_block { [INFO] [stderr] 202 | | eblock.visit(state) [INFO] [stderr] 203 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 206 | | } [INFO] [stderr] 207 | | } [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] 200 | } else if let Some(ref eblock) = *else_block { [INFO] [stderr] 201 | eblock.visit(state) [INFO] [stderr] 202 | } else { [INFO] [stderr] 203 | // only if block exists; thus no value is generated [INFO] [stderr] 204 | Ok(Value::Empty) [INFO] [stderr] 205 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/ast/mod.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub mod ast; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:170:49 [INFO] [stderr] | [INFO] [stderr] 170 | } ; __repeat_pos = __pos ; continue ; } } } if 1i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "<=" ) { if let Matched ( __pos , r ) = __infix_parse ( 2i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::LessThanEqual), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:174:49 [INFO] [stderr] | [INFO] [stderr] 174 | } ; __repeat_pos = __pos ; continue ; } } } if 2i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "<" ) { if let Matched ( __pos , r ) = __infix_parse ( 3i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::LessThan), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:178:49 [INFO] [stderr] | [INFO] [stderr] 178 | } ; __repeat_pos = __pos ; continue ; } } } if 3i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "+" ) { if let Matched ( __pos , r ) = __infix_parse ( 4i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Add, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:180:49 [INFO] [stderr] | [INFO] [stderr] 180 | } ; __repeat_pos = __pos ; continue ; } } } if 4i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "*" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Multiply, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:182:49 [INFO] [stderr] | [INFO] [stderr] 182 | } ; __repeat_pos = __pos ; continue ; } } } if 5i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "^" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Power, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:168:47 [INFO] [stderr] | [INFO] [stderr] 168 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "!=" ) { if let Matched ( __pos , r ) = __infix_parse ( 1i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::NotEqual), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:172:47 [INFO] [stderr] | [INFO] [stderr] 172 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , ">=" ) { if let Matched ( __pos , r ) = __infix_parse ( 2i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::GreaterThanEqual), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:176:47 [INFO] [stderr] | [INFO] [stderr] 176 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , ">" ) { if let Matched ( __pos , r ) = __infix_parse ( 3i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::GreaterThan), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:179:47 [INFO] [stderr] | [INFO] [stderr] 179 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "-" ) { if let Matched ( __pos , r ) = __infix_parse ( 4i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Subtract, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this looks like an `else if` but the `else` is missing [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:181:47 [INFO] [stderr] | [INFO] [stderr] 181 | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "/" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Divide, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, add the missing `else` or add a new line before the second `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/visitor/eval.rs:200:32 [INFO] [stderr] | [INFO] [stderr] 200 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 201 | | if let Some(ref eblock) = *else_block { [INFO] [stderr] 202 | | eblock.visit(state) [INFO] [stderr] 203 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 206 | | } [INFO] [stderr] 207 | | } [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] 200 | } else if let Some(ref eblock) = *else_block { [INFO] [stderr] 201 | eblock.visit(state) [INFO] [stderr] 202 | } else { [INFO] [stderr] 203 | // only if block exists; thus no value is generated [INFO] [stderr] 204 | Ok(Value::Empty) [INFO] [stderr] 205 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ast/annotation.rs:37:37 [INFO] [stderr] | [INFO] [stderr] 37 | fn ty(&self) -> Option { self.ty.clone() } [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.ty` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ast/annotation.rs:39:47 [INFO] [stderr] | [INFO] [stderr] 39 | fn promote_type(&self) -> Option { self.promote_ty.clone() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.promote_ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:15:6 [INFO] [stderr] | [INFO] [stderr] 15 | ; if self . expected . len ( ) == 0 { try ! ( write ! ( fmt , "EOF" ) ) ; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self . expected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You appear to be counting bytes the naive way [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:50:46 [INFO] [stderr] | [INFO] [stderr] 50 | let before = & input [ .. pos ] ; let line = before . as_bytes ( ) . iter ( [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 51 | | ) . filter ( | && c | c == b'\n' ) . count ( ) + 1 ; let col = before . chars [INFO] [stderr] | |_______________________________________________^ help: Consider using the bytecount crate: `bytecount::count(before . as_bytes ( ), b'\n')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::naive_bytecount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ast/annotation.rs:37:37 [INFO] [stderr] | [INFO] [stderr] 37 | fn ty(&self) -> Option { self.ty.clone() } [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.ty` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ast/annotation.rs:39:47 [INFO] [stderr] | [INFO] [stderr] 39 | fn promote_type(&self) -> Option { self.promote_ty.clone() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.promote_ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:75:320 [INFO] [stderr] | [INFO] [stderr] 75 | fn __parse_parameters < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Vec> > { # ! [ allow ( non_snake_case , unused ) ] { let mut __repeat_pos = __pos ; let mut __repeat_value = vec ! ( ) ; loop { let __pos = __repeat_pos ; let __pos = if __repeat_value . len ( ) > 0 { let __sep_res = slice_eq ( __input , __state , __pos , "," ) ; match __sep_res { Matched ( __newpos , _ ) => { __newpos } , Failed => break , } } else { __pos } ; let __step_res = __parse_parameter_ws ( __input , __state , __pos ) ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; __repeat_value . push ( __value ) ; } , Failed => { break ; } } } Matched ( __repeat_pos , __repeat_value ) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!__repeat_value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:102:322 [INFO] [stderr] | [INFO] [stderr] 102 | fn __parse_expressions < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Vec> > { # ! [ allow ( non_snake_case , unused ) ] { let mut __repeat_pos = __pos ; let mut __repeat_value = vec ! ( ) ; loop { let __pos = __repeat_pos ; let __pos = if __repeat_value . len ( ) > 0 { let __sep_res = slice_eq ( __input , __state , __pos , "," ) ; match __sep_res { Matched ( __newpos , _ ) => { __newpos } , Failed => break , } } else { __pos } ; let __step_res = __parse_expression_ws ( __input , __state , __pos ) ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; __repeat_value . push ( __value ) ; } , Failed => { break ; } } } Matched ( __repeat_pos , __repeat_value ) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!__repeat_value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:313 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:476 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:635 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:794 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:955 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1116 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1278 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1442 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1603 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1766 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1928 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:142:319 [INFO] [stderr] | [INFO] [stderr] 142 | fn __parse_arg_list < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Vec> > { # ! [ allow ( non_snake_case , unused ) ] { let mut __repeat_pos = __pos ; let mut __repeat_value = vec ! ( ) ; loop { let __pos = __repeat_pos ; let __pos = if __repeat_value . len ( ) > 0 { let __sep_res = slice_eq ( __input , __state , __pos , "," ) ; match __sep_res { Matched ( __newpos , _ ) => { __newpos } , Failed => break , } } else { __pos } ; let __step_res = __parse_expression_ws ( __input , __state , __pos ) ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; __repeat_value . push ( __value ) ; } , Failed => { break ; } } } Matched ( __repeat_pos , __repeat_value ) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!__repeat_value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:166:200 [INFO] [stderr] | [INFO] [stderr] 166 | fn __parse_infix_arith < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Node > { # ! [ allow ( non_snake_case , unused ) ] { fn __infix_parse < 'input > ( __min_prec : i32 , __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Node > { if let Matched ( __pos , mut __infix_result ) = __parse_signed_or_unsigned_primary ( __input , __state , __pos ) { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; if 0i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "==" ) { if let Matched ( __pos , r ) = __infix_parse ( 1i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::Equal), [INFO] [stderr] | ________________________________________________________________________________________________________________________________________________________________________________________________________^ [INFO] [stderr] 167 | | left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] 168 | | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "!=" ) { if let Matched ( __pos , r ) = __infix_parse ( 1i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::NotEqual), [INFO] [stderr] 169 | | left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] ... | [INFO] [stderr] 182 | | } ; __repeat_pos = __pos ; continue ; } } } if 5i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "^" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Power, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] 183 | | } ; __repeat_pos = __pos ; continue ; } } } break ; } Matched ( __repeat_pos , __infix_result ) } else { Failed } } __infix_parse ( 0 , __input , __state , __pos ) } } [INFO] [stderr] | |________________________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:217:2 [INFO] [stderr] | [INFO] [stderr] 217 | / fn __parse_set_interval < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Node > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = { let __seq_res = slice_eq ( __input , __state , __pos , "[" ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_expression ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , start ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = slice_eq ( __input , __state , __pos , "," ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_expression ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , end ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = slice_eq ( __input , __state , __pos , ")" ) ; match __seq_res { Matched ( __pos , _ ) => { Matched ( __pos , { [INFO] [stderr] 218 | | Node::new(Set::Interval { [INFO] [stderr] 219 | | start: Box::new(start), [INFO] [stderr] 220 | | end: Box::new(end), [INFO] [stderr] ... | [INFO] [stderr] 244 | | }) [INFO] [stderr] 245 | | } ) } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } } } } } } } [INFO] [stderr] | |_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:15:6 [INFO] [stderr] | [INFO] [stderr] 15 | ; if self . expected . len ( ) == 0 { try ! ( write ! ( fmt , "EOF" ) ) ; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self . expected.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:247:441 [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:247:598 [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:315 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:478 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:639 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:806 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: You appear to be counting bytes the naive way [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:50:46 [INFO] [stderr] | [INFO] [stderr] 50 | let before = & input [ .. pos ] ; let line = before . as_bytes ( ) . iter ( [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 51 | | ) . filter ( | && c | c == b'\n' ) . count ( ) + 1 ; let col = before . chars [INFO] [stderr] | |_______________________________________________^ help: Consider using the bytecount crate: `bytecount::count(before . as_bytes ( ), b'\n')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::naive_bytecount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:255:331 [INFO] [stderr] | [INFO] [stderr] 255 | fn __parse_comment < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_comment_single_line ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment_multi_line ( __input , __state , __pos ) } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 255 | fn __parse_comment < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_comment_single_line ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => __parse_comment_multi_line ( __input , __state , __pos ) } } } [INFO] [stderr] | ^^ [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:277:2 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn program < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_program ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_program ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:277:174 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn program < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_program ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_program ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_program ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:75:320 [INFO] [stderr] | [INFO] [stderr] 75 | fn __parse_parameters < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Vec> > { # ! [ allow ( non_snake_case , unused ) ] { let mut __repeat_pos = __pos ; let mut __repeat_value = vec ! ( ) ; loop { let __pos = __repeat_pos ; let __pos = if __repeat_value . len ( ) > 0 { let __sep_res = slice_eq ( __input , __state , __pos , "," ) ; match __sep_res { Matched ( __newpos , _ ) => { __newpos } , Failed => break , } } else { __pos } ; let __step_res = __parse_parameter_ws ( __input , __state , __pos ) ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; __repeat_value . push ( __value ) ; } , Failed => { break ; } } } Matched ( __repeat_pos , __repeat_value ) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!__repeat_value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:279:2 [INFO] [stderr] | [INFO] [stderr] 279 | pub fn program_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_program ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:281:2 [INFO] [stderr] | [INFO] [stderr] 281 | pub fn block < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_block ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_block ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:281:170 [INFO] [stderr] | [INFO] [stderr] 281 | pub fn block < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_block ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_block ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_block ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:283:2 [INFO] [stderr] | [INFO] [stderr] 283 | pub fn block_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_block ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:285:2 [INFO] [stderr] | [INFO] [stderr] 285 | pub fn statement < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_statement ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_statement ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:285:178 [INFO] [stderr] | [INFO] [stderr] 285 | pub fn statement < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_statement ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_statement ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_statement ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:287:2 [INFO] [stderr] | [INFO] [stderr] 287 | pub fn statement_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_statement ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:289:2 [INFO] [stderr] | [INFO] [stderr] 289 | pub fn arith_expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_arith_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_arith_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:289:186 [INFO] [stderr] | [INFO] [stderr] 289 | pub fn arith_expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_arith_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_arith_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_arith_expression ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:291:2 [INFO] [stderr] | [INFO] [stderr] 291 | pub fn arith_expression_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_arith_expression ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:293:2 [INFO] [stderr] | [INFO] [stderr] 293 | pub fn expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:293:180 [INFO] [stderr] | [INFO] [stderr] 293 | pub fn expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_expression ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:295:2 [INFO] [stderr] | [INFO] [stderr] 295 | pub fn expression_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_expression ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:297:2 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn literal < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_literal ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_literal ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:297:174 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn literal < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_literal ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_literal ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_literal ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:299:2 [INFO] [stderr] | [INFO] [stderr] 299 | pub fn literal_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_literal ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:102:322 [INFO] [stderr] | [INFO] [stderr] 102 | fn __parse_expressions < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Vec> > { # ! [ allow ( non_snake_case , unused ) ] { let mut __repeat_pos = __pos ; let mut __repeat_value = vec ! ( ) ; loop { let __pos = __repeat_pos ; let __pos = if __repeat_value . len ( ) > 0 { let __sep_res = slice_eq ( __input , __state , __pos , "," ) ; match __sep_res { Matched ( __newpos , _ ) => { __newpos } , Failed => break , } } else { __pos } ; let __step_res = __parse_expression_ws ( __input , __state , __pos ) ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; __repeat_value . push ( __value ) ; } , Failed => { break ; } } } Matched ( __repeat_pos , __repeat_value ) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!__repeat_value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/symbol.rs:102:69 [INFO] [stderr] | [INFO] [stderr] 102 | Symbol::Variable { ref name, ref ty } => ("var", name, ty.clone()), [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/symbol.rs:103:75 [INFO] [stderr] | [INFO] [stderr] 103 | Symbol::Function { ref name, ref ret_ty, .. } => ("fn", name, ret_ty.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*ret_ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/symbol.rs:104:75 [INFO] [stderr] | [INFO] [stderr] 104 | Symbol::BuiltinType { ref name, ref ty } => ("bi", name, Some(ty.clone())), [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:313 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:476 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:635 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:794 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:955 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1116 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1278 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1442 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1603 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1766 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:128:1928 [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 128 | fn __parse_kw < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_kw_let ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_global ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_fn ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_if ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_else ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_true ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_false ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_iterate ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_over ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_return ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_kw_break ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => __parse_kw_print ( __input , __state , __pos ) } } } } } } } } } } } } } } } } } } } } } } } [INFO] [stderr] | ^^ [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/value.rs:258:5 [INFO] [stderr] | [INFO] [stderr] 258 | / pub fn iter<'a>(&'a self) -> Result, String> { [INFO] [stderr] 259 | | let iter = match *self { [INFO] [stderr] 260 | | ValueSet::Interval(ref interval) => { [INFO] [stderr] 261 | | // verify interval types [INFO] [stderr] ... | [INFO] [stderr] 273 | | Ok(iter) [INFO] [stderr] 274 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:142:319 [INFO] [stderr] | [INFO] [stderr] 142 | fn __parse_arg_list < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Vec> > { # ! [ allow ( non_snake_case , unused ) ] { let mut __repeat_pos = __pos ; let mut __repeat_value = vec ! ( ) ; loop { let __pos = __repeat_pos ; let __pos = if __repeat_value . len ( ) > 0 { let __sep_res = slice_eq ( __input , __state , __pos , "," ) ; match __sep_res { Matched ( __newpos , _ ) => { __newpos } , Failed => break , } } else { __pos } ; let __step_res = __parse_expression_ws ( __input , __state , __pos ) ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; __repeat_value . push ( __value ) ; } , Failed => { break ; } } } Matched ( __repeat_pos , __repeat_value ) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!__repeat_value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:53:56 [INFO] [stderr] | [INFO] [stderr] 53 | (&Statement::Declare(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_borrowed_reference)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:63:55 [INFO] [stderr] | [INFO] [stderr] 63 | (&Statement::Assign(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:166:200 [INFO] [stderr] | [INFO] [stderr] 166 | fn __parse_infix_arith < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Node > { # ! [ allow ( non_snake_case , unused ) ] { fn __infix_parse < 'input > ( __min_prec : i32 , __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Node > { if let Matched ( __pos , mut __infix_result ) = __parse_signed_or_unsigned_primary ( __input , __state , __pos ) { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; if 0i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "==" ) { if let Matched ( __pos , r ) = __infix_parse ( 1i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::Equal), [INFO] [stderr] | ________________________________________________________________________________________________________________________________________________________________________________________________________^ [INFO] [stderr] 167 | | left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] 168 | | } ; __repeat_pos = __pos ; continue ; } } if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "!=" ) { if let Matched ( __pos , r ) = __infix_parse ( 1i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Comparison(CompareOp::NotEqual), [INFO] [stderr] 169 | | left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] ... | [INFO] [stderr] 182 | | } ; __repeat_pos = __pos ; continue ; } } } if 5i32 >= __min_prec { if let Matched ( __pos , _ ) = slice_eq ( __input , __state , __pos , "^" ) { if let Matched ( __pos , r ) = __infix_parse ( 5i32 , __input , __state , __pos ) { let l = __infix_result ; __infix_result = { Node::new(Expression::Infix { op: InfixOp::Power, left: Box::new(l), right: Box::new(r) }) [INFO] [stderr] 183 | | } ; __repeat_pos = __pos ; continue ; } } } break ; } Matched ( __repeat_pos , __infix_result ) } else { Failed } } __infix_parse ( 0 , __input , __state , __pos ) } } [INFO] [stderr] | |________________________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:104:50 [INFO] [stderr] | [INFO] [stderr] 104 | (&Expression::Identifier(ref ident), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:117:21 [INFO] [stderr] | [INFO] [stderr] 117 | &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:127:57 [INFO] [stderr] | [INFO] [stderr] 127 | (&Expression::Prefix { ref op, ref right }, &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:135:57 [INFO] [stderr] | [INFO] [stderr] 135 | (&Expression::Postfix { ref op, ref left }, &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:146:63 [INFO] [stderr] | [INFO] [stderr] 146 | (&Expression::FnCall { ref name, ref args, .. } , &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/eval.rs:152:57 [INFO] [stderr] | [INFO] [stderr] 152 | let scope = annotation.borrow().scope().ok_or(format!( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 153 | | "invalid scope when calling function \ [INFO] [stderr] 154 | | '{}'", name.item))?; [INFO] [stderr] | |______________________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 152 | let scope = annotation.borrow().scope().ok_or_else(|| format!( [INFO] [stderr] 153 | "invalid scope when calling function \ [INFO] [stderr] 154 | '{}'", name.item))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/eval.rs:156:70 [INFO] [stderr] | [INFO] [stderr] 156 | let sym: Symbol = scope.borrow().resolve(&name.item).ok_or(format!( [INFO] [stderr] | ______________________________________________________________________^ [INFO] [stderr] 157 | | "symbol not found: '{}'", name.item))?; [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 156 | let sym: Symbol = scope.borrow().resolve(&name.item).ok_or_else(|| format!( [INFO] [stderr] 157 | "symbol not found: '{}'", name.item))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/eval.rs:162:73 [INFO] [stderr] | [INFO] [stderr] 162 | let fn_scope = body.annotation.borrow().scope().ok_or( [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 163 | | format!("missing function scope for function \ [INFO] [stderr] 164 | | '{}'", name) [INFO] [stderr] 165 | | )?; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 162 | let fn_scope = body.annotation.borrow().scope().ok_or_else(|| format!("missing function scope for function \ [INFO] [stderr] 163 | '{}'", name))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/eval.rs:209:30 [INFO] [stderr] | [INFO] [stderr] 209 | _ => Err(format!("conditional expression expected to be boolean")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"conditional expression expected to be boolean".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/eval.rs:220:25 [INFO] [stderr] | [INFO] [stderr] 220 | / match *variant { [INFO] [stderr] 221 | | Some(ref var) => { [INFO] [stderr] 222 | | scope.borrow_mut().set(var.item.clone(), elem.clone())?; [INFO] [stderr] 223 | | }, [INFO] [stderr] 224 | | None => {} [INFO] [stderr] 225 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 220 | if let Some(ref var) = *variant { [INFO] [stderr] 221 | scope.borrow_mut().set(var.item.clone(), elem.clone())?; [INFO] [stderr] 222 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:217:2 [INFO] [stderr] | [INFO] [stderr] 217 | / fn __parse_set_interval < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < Node > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = { let __seq_res = slice_eq ( __input , __state , __pos , "[" ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_expression ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , start ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = slice_eq ( __input , __state , __pos , "," ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = __parse_expression ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , end ) => { { let __seq_res = __parse_ws ( __input , __state , __pos ) ; match __seq_res { Matched ( __pos , _ ) => { { let __seq_res = slice_eq ( __input , __state , __pos , ")" ) ; match __seq_res { Matched ( __pos , _ ) => { Matched ( __pos , { [INFO] [stderr] 218 | | Node::new(Set::Interval { [INFO] [stderr] 219 | | start: Box::new(start), [INFO] [stderr] 220 | | end: Box::new(end), [INFO] [stderr] ... | [INFO] [stderr] 244 | | }) [INFO] [stderr] 245 | | } ) } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } Failed => Failed , } } } } } } } } } [INFO] [stderr] | |_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/visitor/symbol.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | for ref arg in args.iter() { [INFO] [stderr] | ^^^^^^^ ----------- help: try: `let arg = &args.iter();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/symbol.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | / match *variant { [INFO] [stderr] 201 | | Some(ref var) => { [INFO] [stderr] 202 | | state.scope.borrow_mut().define(var.item.clone(), [INFO] [stderr] 203 | | Symbol::variable(var.item.clone(), None)); [INFO] [stderr] 204 | | }, [INFO] [stderr] 205 | | None => {} [INFO] [stderr] 206 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 200 | if let Some(ref var) = *variant { [INFO] [stderr] 201 | state.scope.borrow_mut().define(var.item.clone(), [INFO] [stderr] 202 | Symbol::variable(var.item.clone(), None)); [INFO] [stderr] 203 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:247:441 [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:247:598 [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 247 | fn __parse_ws < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { __state . suppress_fail += 1 ; let res = { let mut __repeat_pos = __pos ; loop { let __pos = __repeat_pos ; let __step_res = { let __choice_res = __parse_ws_char ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = __parse_eol ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => __parse_comment ( __input , __state , __pos ) } } } } ; match __step_res { Matched ( __newpos , __value ) => { __repeat_pos = __newpos ; } , Failed => { break ; } } } Matched ( __repeat_pos , ( ) ) } ; __state . suppress_fail -= 1 ; res } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:315 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:478 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/type_visitor.rs:51:48 [INFO] [stderr] | [INFO] [stderr] 51 | state.logger.error(format!("return types do not match")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"return types do not match".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/visitor/type_visitor.rs:55:34 [INFO] [stderr] | [INFO] [stderr] 55 | ret_ty = last_ty.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `last_ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/type_visitor.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match ret_ty { [INFO] [stderr] 62 | | Some(_) => { [INFO] [stderr] 63 | | if last_ty != ret_ty { [INFO] [stderr] 64 | | state.logger.error("return type does not match type of \ [INFO] [stderr] ... | [INFO] [stderr] 68 | | None => {} [INFO] [stderr] 69 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 61 | if let Some(_) = ret_ty { [INFO] [stderr] 62 | if last_ty != ret_ty { [INFO] [stderr] 63 | state.logger.error("return type does not match type of \ [INFO] [stderr] 64 | final block statement".to_string()); [INFO] [stderr] 65 | } [INFO] [stderr] 66 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:639 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:249:806 [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 249 | fn __parse_eol < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = slice_eq ( __input , __state , __pos , "\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r\n" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\r" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => { let __choice_res = slice_eq ( __input , __state , __pos , "\u{2028}" ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => slice_eq ( __input , __state , __pos , "\u{2029}" ) } } } } } } } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:255:331 [INFO] [stderr] | [INFO] [stderr] 255 | fn __parse_comment < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_comment_single_line ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , __value ) , Failed => __parse_comment_multi_line ( __input , __state , __pos ) } } } [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 255 | fn __parse_comment < 'input > ( __input : & 'input str , __state : & mut ParseState < 'input > , __pos : usize ) -> RuleResult < () > { # ! [ allow ( non_snake_case , unused ) ] { let __choice_res = __parse_comment_single_line ( __input , __state , __pos ) ; match __choice_res { Matched ( __pos , __value ) => Matched ( __pos , () ) , Failed => __parse_comment_multi_line ( __input , __state , __pos ) } } } [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/type_visitor.rs:78:56 [INFO] [stderr] | [INFO] [stderr] 78 | (&Statement::Declare(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/type_visitor.rs:91:55 [INFO] [stderr] | [INFO] [stderr] 91 | (&Statement::Assign(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:95:57 [INFO] [stderr] | [INFO] [stderr] 95 | let scope = annotation.borrow().scope().ok_or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 96 | | format!("no scope associated with identifier {}", ident))?; [INFO] [stderr] | |_____________________________________________________________________________^ help: try this: `ok_or_else(|| format!("no scope associated with identifier {}", ident))` [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 `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:97:39 [INFO] [stderr] | [INFO] [stderr] 97 | let expr_ty = expr_ty.ok_or( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 98 | | format!("type computation for expression failed in assignment of {}", ident))?; [INFO] [stderr] | |_________________________________________________________________________________________________^ help: try this: `ok_or_else(|| format!("type computation for expression failed in assignment of {}", ident))` [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: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/type_visitor.rs:143:36 [INFO] [stderr] | [INFO] [stderr] 143 | ref params }), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:181:57 [INFO] [stderr] | [INFO] [stderr] 181 | let scope = annotation.borrow().scope().ok_or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 182 | | format!("no scope associated with function {}", name))?; [INFO] [stderr] | |__________________________________________________________________________^ help: try this: `ok_or_else(|| format!("no scope associated with function {}", name))` [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 `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:183:39 [INFO] [stderr] | [INFO] [stderr] 183 | let body_ty = body_ty.ok_or( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 184 | | format!("type computation for body failed in function {}", name))?; [INFO] [stderr] | |_____________________________________________________________________________________^ help: try this: `ok_or_else(|| format!("type computation for body failed in function {}", name))` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:277:2 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn program < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_program ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_program ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:277:174 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn program < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_program ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_program ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_program ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:279:2 [INFO] [stderr] | [INFO] [stderr] 279 | pub fn program_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_program ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:281:2 [INFO] [stderr] | [INFO] [stderr] 281 | pub fn block < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_block ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_block ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/visitor/type_visitor.rs:350:21 [INFO] [stderr] | [INFO] [stderr] 350 | for ref arg in args.iter() { [INFO] [stderr] | ^^^^^^^ ----------- help: try: `let arg = &args.iter();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:281:170 [INFO] [stderr] | [INFO] [stderr] 281 | pub fn block < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_block ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_block ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_block ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:283:2 [INFO] [stderr] | [INFO] [stderr] 283 | pub fn block_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_block ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:285:2 [INFO] [stderr] | [INFO] [stderr] 285 | pub fn statement < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_statement ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_statement ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:285:178 [INFO] [stderr] | [INFO] [stderr] 285 | pub fn statement < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_statement ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_statement ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_statement ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:287:2 [INFO] [stderr] | [INFO] [stderr] 287 | pub fn statement_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_statement ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/type_visitor.rs:435:17 [INFO] [stderr] | [INFO] [stderr] 435 | / match *variant { [INFO] [stderr] 436 | | Some(ref var) => { [INFO] [stderr] 437 | | body.annotation.borrow_mut().define(var.item.clone(), [INFO] [stderr] 438 | | Symbol::variable(var.item.clone(), Some(var_ty))); [INFO] [stderr] 439 | | }, [INFO] [stderr] 440 | | None => {} [INFO] [stderr] 441 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 435 | if let Some(ref var) = *variant { [INFO] [stderr] 436 | body.annotation.borrow_mut().define(var.item.clone(), [INFO] [stderr] 437 | Symbol::variable(var.item.clone(), Some(var_ty))); [INFO] [stderr] 438 | } [INFO] [stderr] | [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:289:2 [INFO] [stderr] | [INFO] [stderr] 289 | pub fn arith_expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_arith_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_arith_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:289:186 [INFO] [stderr] | [INFO] [stderr] 289 | pub fn arith_expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_arith_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_arith_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_arith_expression ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:291:2 [INFO] [stderr] | [INFO] [stderr] 291 | pub fn arith_expression_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_arith_expression ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:293:2 [INFO] [stderr] | [INFO] [stderr] 293 | pub fn expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:293:180 [INFO] [stderr] | [INFO] [stderr] 293 | pub fn expression < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_expression ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_expression ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_expression ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:295:2 [INFO] [stderr] | [INFO] [stderr] 295 | pub fn expression_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_expression ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:297:2 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn literal < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_literal ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_literal ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:297:174 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn literal < 'input > ( __input : & 'input str ) -> ParseResult < Node > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_literal ( __input , & mut __state , 0 ) { Matched ( __pos , __value ) => { if __pos == __input . len ( ) { return Ok ( __value ) } } _ => ( ) } let __err_pos = __state . max_err_pos ; __state = ParseState :: new ( ) ; __state . reparsing_on_error = true ; __state . max_err_pos = __err_pos ; __parse_literal ( __input , & mut __state , 0 ) ; let ( __line , __col ) = pos_to_line ( __input , __err_pos ) ; Err ( ParseError { line : __line , column : __col , offset : __err_pos , expected : __state . expected , } ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `if let Matched ( __pos , __value ) = __parse_literal ( __input , & mut __state , 0 ) { if __pos == __input . len ( ) { return Ok ( __value ) } }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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] --> /opt/crater/target/debug/build/piske-10a44483a5b415d9/out/piske.rs:299:2 [INFO] [stderr] | [INFO] [stderr] 299 | pub fn literal_ext < 'input > ( __input : & 'input str , __pos : usize ) -> Option < ( usize , Node ) > { # ! [ allow ( non_snake_case , unused ) ] let mut __state = ParseState :: new ( ) ; match __parse_literal ( __input , & mut __state , __pos ) { Matched ( __newpos , __value ) => Some ( ( __newpos , __value ) ) , Failed => None } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/symbol.rs:102:69 [INFO] [stderr] | [INFO] [stderr] 102 | Symbol::Variable { ref name, ref ty } => ("var", name, ty.clone()), [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/symbol.rs:103:75 [INFO] [stderr] | [INFO] [stderr] 103 | Symbol::Function { ref name, ref ret_ty, .. } => ("fn", name, ret_ty.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*ret_ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/symbol.rs:104:75 [INFO] [stderr] | [INFO] [stderr] 104 | Symbol::BuiltinType { ref name, ref ty } => ("bi", name, Some(ty.clone())), [INFO] [stderr] | ^^^^^^^^^^ help: try dereferencing it: `*ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/transpile.rs:292:55 [INFO] [stderr] | [INFO] [stderr] 292 | PType::String => { return Err(format!("invalid promotion to string")); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid promotion to string".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/transpile.rs:297:52 [INFO] [stderr] | [INFO] [stderr] 297 | PType::Set => { return Err(format!("invalid promotion to set")); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid promotion to set".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/transpile.rs:298:53 [INFO] [stderr] | [INFO] [stderr] 298 | PType::Void => { return Err(format!("invliad promotion to void")); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invliad promotion to void".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/visitor/transpile.rs:308:24 [INFO] [stderr] | [INFO] [stderr] 308 | fn infix_to_tokens(op: &InfixOp, left: &Node, right: &Node, [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `InfixOp` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:258:5 [INFO] [stderr] | [INFO] [stderr] 258 | / pub fn iter<'a>(&'a self) -> Result, String> { [INFO] [stderr] 259 | | let iter = match *self { [INFO] [stderr] 260 | | ValueSet::Interval(ref interval) => { [INFO] [stderr] 261 | | // verify interval types [INFO] [stderr] ... | [INFO] [stderr] 273 | | Ok(iter) [INFO] [stderr] 274 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:53:56 [INFO] [stderr] | [INFO] [stderr] 53 | (&Statement::Declare(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_borrowed_reference)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:63:55 [INFO] [stderr] | [INFO] [stderr] 63 | (&Statement::Assign(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/visitor/transpile.rs:341:25 [INFO] [stderr] | [INFO] [stderr] 341 | fn prefix_to_tokens(op: &PrefixOp, right: &Node, state: &mut State) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `PrefixOp` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/visitor/transpile.rs:349:26 [INFO] [stderr] | [INFO] [stderr] 349 | fn postfix_to_tokens(op: &PostfixOp, left: &Node, state: &mut State) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `PostfixOp` [INFO] [stderr] | [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: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:104:50 [INFO] [stderr] | [INFO] [stderr] 104 | (&Expression::Identifier(ref ident), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:117:21 [INFO] [stderr] | [INFO] [stderr] 117 | &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:127:57 [INFO] [stderr] | [INFO] [stderr] 127 | (&Expression::Prefix { ref op, ref right }, &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:135:57 [INFO] [stderr] | [INFO] [stderr] 135 | (&Expression::Postfix { ref op, ref left }, &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/eval.rs:146:63 [INFO] [stderr] | [INFO] [stderr] 146 | (&Expression::FnCall { ref name, ref args, .. } , &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/eval.rs:152:57 [INFO] [stderr] | [INFO] [stderr] 152 | let scope = annotation.borrow().scope().ok_or(format!( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 153 | | "invalid scope when calling function \ [INFO] [stderr] 154 | | '{}'", name.item))?; [INFO] [stderr] | |______________________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 152 | let scope = annotation.borrow().scope().ok_or_else(|| format!( [INFO] [stderr] 153 | "invalid scope when calling function \ [INFO] [stderr] 154 | '{}'", name.item))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/eval.rs:156:70 [INFO] [stderr] | [INFO] [stderr] 156 | let sym: Symbol = scope.borrow().resolve(&name.item).ok_or(format!( [INFO] [stderr] | ______________________________________________________________________^ [INFO] [stderr] 157 | | "symbol not found: '{}'", name.item))?; [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 156 | let sym: Symbol = scope.borrow().resolve(&name.item).ok_or_else(|| format!( [INFO] [stderr] 157 | "symbol not found: '{}'", name.item))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/eval.rs:162:73 [INFO] [stderr] | [INFO] [stderr] 162 | let fn_scope = body.annotation.borrow().scope().ok_or( [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 163 | | format!("missing function scope for function \ [INFO] [stderr] 164 | | '{}'", name) [INFO] [stderr] 165 | | )?; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 162 | let fn_scope = body.annotation.borrow().scope().ok_or_else(|| format!("missing function scope for function \ [INFO] [stderr] 163 | '{}'", name))?; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/eval.rs:209:30 [INFO] [stderr] | [INFO] [stderr] 209 | _ => Err(format!("conditional expression expected to be boolean")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"conditional expression expected to be boolean".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/eval.rs:220:25 [INFO] [stderr] | [INFO] [stderr] 220 | / match *variant { [INFO] [stderr] 221 | | Some(ref var) => { [INFO] [stderr] 222 | | scope.borrow_mut().set(var.item.clone(), elem.clone())?; [INFO] [stderr] 223 | | }, [INFO] [stderr] 224 | | None => {} [INFO] [stderr] 225 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 220 | if let Some(ref var) = *variant { [INFO] [stderr] 221 | scope.borrow_mut().set(var.item.clone(), elem.clone())?; [INFO] [stderr] 222 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/visitor/symbol.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | for ref arg in args.iter() { [INFO] [stderr] | ^^^^^^^ ----------- help: try: `let arg = &args.iter();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/symbol.rs:200:17 [INFO] [stderr] | [INFO] [stderr] 200 | / match *variant { [INFO] [stderr] 201 | | Some(ref var) => { [INFO] [stderr] 202 | | state.scope.borrow_mut().define(var.item.clone(), [INFO] [stderr] 203 | | Symbol::variable(var.item.clone(), None)); [INFO] [stderr] 204 | | }, [INFO] [stderr] 205 | | None => {} [INFO] [stderr] 206 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 200 | if let Some(ref var) = *variant { [INFO] [stderr] 201 | state.scope.borrow_mut().define(var.item.clone(), [INFO] [stderr] 202 | Symbol::variable(var.item.clone(), None)); [INFO] [stderr] 203 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::eval_order_dependence)] on by default [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] --> src/visitor/type_visitor.rs:51:48 [INFO] [stderr] | [INFO] [stderr] 51 | state.logger.error(format!("return types do not match")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"return types do not match".to_string()` [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/visitor/type_visitor.rs:55:34 [INFO] [stderr] | [INFO] [stderr] 55 | ret_ty = last_ty.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `last_ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/type_visitor.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match ret_ty { [INFO] [stderr] 62 | | Some(_) => { [INFO] [stderr] 63 | | if last_ty != ret_ty { [INFO] [stderr] 64 | | state.logger.error("return type does not match type of \ [INFO] [stderr] ... | [INFO] [stderr] 68 | | None => {} [INFO] [stderr] 69 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 61 | if let Some(_) = ret_ty { [INFO] [stderr] 62 | if last_ty != ret_ty { [INFO] [stderr] 63 | state.logger.error("return type does not match type of \ [INFO] [stderr] 64 | final block statement".to_string()); [INFO] [stderr] 65 | } [INFO] [stderr] 66 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/type_visitor.rs:78:56 [INFO] [stderr] | [INFO] [stderr] 78 | (&Statement::Declare(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/type_visitor.rs:91:55 [INFO] [stderr] | [INFO] [stderr] 91 | (&Statement::Assign(ref ident, ref expr), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:95:57 [INFO] [stderr] | [INFO] [stderr] 95 | let scope = annotation.borrow().scope().ok_or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 96 | | format!("no scope associated with identifier {}", ident))?; [INFO] [stderr] | |_____________________________________________________________________________^ help: try this: `ok_or_else(|| format!("no scope associated with identifier {}", ident))` [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 `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:97:39 [INFO] [stderr] | [INFO] [stderr] 97 | let expr_ty = expr_ty.ok_or( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 98 | | format!("type computation for expression failed in assignment of {}", ident))?; [INFO] [stderr] | |_________________________________________________________________________________________________^ help: try this: `ok_or_else(|| format!("type computation for expression failed in assignment of {}", ident))` [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: this pattern takes a reference on something that is being de-referenced [INFO] [stderr] --> src/visitor/type_visitor.rs:143:36 [INFO] [stderr] | [INFO] [stderr] 143 | ref params }), &ref annotation) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `&ref` part and just keep: `annotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:181:57 [INFO] [stderr] | [INFO] [stderr] 181 | let scope = annotation.borrow().scope().ok_or( [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 182 | | format!("no scope associated with function {}", name))?; [INFO] [stderr] | |__________________________________________________________________________^ help: try this: `ok_or_else(|| format!("no scope associated with function {}", name))` [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 `ok_or` followed by a function call [INFO] [stderr] --> src/visitor/type_visitor.rs:183:39 [INFO] [stderr] | [INFO] [stderr] 183 | let body_ty = body_ty.ok_or( [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 184 | | format!("type computation for body failed in function {}", name))?; [INFO] [stderr] | |_____________________________________________________________________________________^ help: try this: `ok_or_else(|| format!("type computation for body failed in function {}", name))` [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: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/visitor/interp/extfunc.rs:85:46 [INFO] [stderr] | [INFO] [stderr] 85 | add_interpreter_func!(psk_re, re, [Complex], |f| Value::Float(f)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Float` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/visitor/type_visitor.rs:350:21 [INFO] [stderr] | [INFO] [stderr] 350 | for ref arg in args.iter() { [INFO] [stderr] | ^^^^^^^ ----------- help: try: `let arg = &args.iter();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/visitor/interp/extfunc.rs:86:46 [INFO] [stderr] | [INFO] [stderr] 86 | add_interpreter_func!(psk_im, im, [Complex], |f| Value::Float(f)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Float` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/visitor/type_visitor.rs:435:17 [INFO] [stderr] | [INFO] [stderr] 435 | / match *variant { [INFO] [stderr] 436 | | Some(ref var) => { [INFO] [stderr] 437 | | body.annotation.borrow_mut().define(var.item.clone(), [INFO] [stderr] 438 | | Symbol::variable(var.item.clone(), Some(var_ty))); [INFO] [stderr] 439 | | }, [INFO] [stderr] 440 | | None => {} [INFO] [stderr] 441 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 435 | if let Some(ref var) = *variant { [INFO] [stderr] 436 | body.annotation.borrow_mut().define(var.item.clone(), [INFO] [stderr] 437 | Symbol::variable(var.item.clone(), Some(var_ty))); [INFO] [stderr] 438 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/pipeline.rs:15:28 [INFO] [stderr] | [INFO] [stderr] 15 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/pipeline.rs:27:28 [INFO] [stderr] | [INFO] [stderr] 27 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/interpret.rs:22:32 [INFO] [stderr] | [INFO] [stderr] 22 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/transpile.rs:20:32 [INFO] [stderr] | [INFO] [stderr] 20 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/transpile.rs:292:55 [INFO] [stderr] | [INFO] [stderr] 292 | PType::String => { return Err(format!("invalid promotion to string")); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid promotion to string".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/transpile.rs:297:52 [INFO] [stderr] | [INFO] [stderr] 297 | PType::Set => { return Err(format!("invalid promotion to set")); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid promotion to set".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/visitor/transpile.rs:298:53 [INFO] [stderr] | [INFO] [stderr] 298 | PType::Void => { return Err(format!("invliad promotion to void")); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invliad promotion to void".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/visitor/transpile.rs:308:24 [INFO] [stderr] | [INFO] [stderr] 308 | fn infix_to_tokens(op: &InfixOp, left: &Node, right: &Node, [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `InfixOp` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/visitor/transpile.rs:341:25 [INFO] [stderr] | [INFO] [stderr] 341 | fn prefix_to_tokens(op: &PrefixOp, right: &Node, state: &mut State) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `PrefixOp` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/visitor/transpile.rs:349:26 [INFO] [stderr] | [INFO] [stderr] 349 | fn postfix_to_tokens(op: &PostfixOp, left: &Node, state: &mut State) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `PostfixOp` [INFO] [stderr] | [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: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::eval_order_dependence)] on by default [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | add_interpreter_func!(psk_set_image_dims, set_image_dims, [i64, i64], |_| Value::Empty); [INFO] [stderr] | ---------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | add_interpreter_func!(psk_set_pixel_data, set_pixel_data, [i64, i64, f64], |_| Value::Empty); [INFO] [stderr] | --------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:23:43 [INFO] [stderr] | [INFO] [stderr] 23 | let result: $vtype = args[arg_num].extract()?; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/visitor/interp/macros.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | arg_num += 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/visitor/interp/extfunc.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / add_interpreter_func!(psk_project, project, [i64, i64, Complex, Complex], [INFO] [stderr] 84 | | |c| Value::Complex(c.re, c.im)); [INFO] [stderr] | |____________________________________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/visitor/interp/extfunc.rs:85:46 [INFO] [stderr] | [INFO] [stderr] 85 | add_interpreter_func!(psk_re, re, [Complex], |f| Value::Float(f)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Float` [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/visitor/interp/extfunc.rs:86:46 [INFO] [stderr] | [INFO] [stderr] 86 | add_interpreter_func!(psk_im, im, [Complex], |f| Value::Float(f)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Float` [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: useless use of `format!` [INFO] [stderr] --> src/glue/pipeline.rs:15:28 [INFO] [stderr] | [INFO] [stderr] 15 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/pipeline.rs:27:28 [INFO] [stderr] | [INFO] [stderr] 27 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/interpret.rs:22:32 [INFO] [stderr] | [INFO] [stderr] 22 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/glue/transpile.rs:20:32 [INFO] [stderr] | [INFO] [stderr] 20 | return Err(format!("stopping due to previous error(s)")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"stopping due to previous error(s)".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bin/piske.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | cout: cout, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `cout` [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: redundant field names in struct initialization [INFO] [stderr] --> src/bin/piske.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | cerr: cerr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `cerr` [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/bin/piske.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | state: state, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:114:29 [INFO] [stderr] | [INFO] [stderr] 114 | writeln!(::std::io::stderr(), "interpreting failed: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | writeln!(::std::io::stderr(), "file error: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | writeln!(::std::io::stderr(), "file error: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:140:17 [INFO] [stderr] | [INFO] [stderr] 140 | writeln!(::std::io::stderr(), "Error: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | writeln!(::std::io::stderr(), "Usage: {} []", args[0]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/complex.rs:75:56 [INFO] [stderr] | [INFO] [stderr] 75 | expect_prog_approx_complex(r#"1 + 2i / (2 + 3i)"#, 1.4615384615384617, 0.3076923076923077); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `1.461_538_461_538_461_7` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/complex.rs:75:76 [INFO] [stderr] | [INFO] [stderr] 75 | expect_prog_approx_complex(r#"1 + 2i / (2 + 3i)"#, 1.4615384615384617, 0.3076923076923077); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.307_692_307_692_307_7` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/complex.rs:76:58 [INFO] [stderr] | [INFO] [stderr] 76 | expect_prog_approx_complex(r#"(1 + 2i) / (2 + 3i)"#, 0.6153846153846154, 0.07692307692307691); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.615_384_615_384_615_4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/complex.rs:76:78 [INFO] [stderr] | [INFO] [stderr] 76 | expect_prog_approx_complex(r#"(1 + 2i) / (2 + 3i)"#, 0.6153846153846154, 0.07692307692307691); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `0.076_923_076_923_076_91` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bin/piske.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | cout: cout, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `cout` [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: redundant field names in struct initialization [INFO] [stderr] --> src/bin/piske.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | cerr: cerr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `cerr` [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/bin/piske.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | state: state, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:114:29 [INFO] [stderr] | [INFO] [stderr] 114 | writeln!(::std::io::stderr(), "interpreting failed: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | writeln!(::std::io::stderr(), "file error: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | writeln!(::std::io::stderr(), "file error: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:140:17 [INFO] [stderr] | [INFO] [stderr] 140 | writeln!(::std::io::stderr(), "Error: {}", e).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/bin/piske.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | writeln!(::std::io::stderr(), "Usage: {} []", args[0]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 34.30s [INFO] running `"docker" "inspect" "eaaf51234b3bea58db1e899a4e09ab841110cc12f09b48f57cc3ed41cd7c7eae"` [INFO] running `"docker" "rm" "-f" "eaaf51234b3bea58db1e899a4e09ab841110cc12f09b48f57cc3ed41cd7c7eae"` [INFO] [stdout] eaaf51234b3bea58db1e899a4e09ab841110cc12f09b48f57cc3ed41cd7c7eae