[INFO] crate ucg 0.2.6 is already in cache [INFO] extracting crate ucg 0.2.6 into work/ex/clippy-test-run/sources/stable/reg/ucg/0.2.6 [INFO] extracting crate ucg 0.2.6 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ucg/0.2.6 [INFO] validating manifest of ucg-0.2.6 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 ucg-0.2.6 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 ucg-0.2.6 [INFO] finished frobbing ucg-0.2.6 [INFO] frobbed toml for ucg-0.2.6 written to work/ex/clippy-test-run/sources/stable/reg/ucg/0.2.6/Cargo.toml [INFO] started frobbing ucg-0.2.6 [INFO] finished frobbing ucg-0.2.6 [INFO] frobbed toml for ucg-0.2.6 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ucg/0.2.6/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 ucg-0.2.6 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/ucg/0.2.6:/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] 171c988740dee8f1ee8bc50b4095c1b55b864dacef07a3101c21cd5cc68c1e35 [INFO] running `"docker" "start" "-a" "171c988740dee8f1ee8bc50b4095c1b55b864dacef07a3101c21cd5cc68c1e35"` [INFO] [stderr] Checking simple-error v0.1.13 [INFO] [stderr] Checking abortable_parser v0.2.2 [INFO] [stderr] Checking term_size v0.3.1 [INFO] [stderr] Checking toml v0.4.10 [INFO] [stderr] Checking serde_yaml v0.8.8 [INFO] [stderr] Checking backtrace v0.2.3 [INFO] [stderr] Checking textwrap v0.8.0 [INFO] [stderr] Checking error-chain v0.5.0 [INFO] [stderr] Checking clap v2.26.2 [INFO] [stderr] Checking cpuprofiler v0.0.3 [INFO] [stderr] Checking ucg v0.2.6 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast/mod.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [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/ast/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | column: column, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `column` [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/ast/mod.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | offset: offset, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `offset` [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/ast/mod.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | typ: typ, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `typ` [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/ast/mod.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/ast/mod.rs:334:13 [INFO] [stderr] | [INFO] [stderr] 334 | sel: sel, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sel` [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/ast/mod.rs:474:26 [INFO] [stderr] | [INFO] [stderr] 474 | PositionedItem { pos: pos, val: v } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/ast/mod.rs:729:13 [INFO] [stderr] | [INFO] [stderr] 729 | arg_set: arg_set, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `arg_set` [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/tokenizer/mod.rs:419:46 [INFO] [stderr] | [INFO] [stderr] 419 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/tokenizer/mod.rs:428:46 [INFO] [stderr] | [INFO] [stderr] 428 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/tokenizer/mod.rs:434:46 [INFO] [stderr] | [INFO] [stderr] 434 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/build/mod.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | env: env, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [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/error.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/iter.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | line_offset: line_offset, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_offset` [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/iter.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | col_offset: col_offset, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `col_offset` [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/parse/mod.rs:508:9 [INFO] [stderr] | [INFO] [stderr] 508 | fields: fields, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `fields` [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/parse/mod.rs:509:9 [INFO] [stderr] | [INFO] [stderr] 509 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/parse/mod.rs:546:13 [INFO] [stderr] | [INFO] [stderr] 546 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/parse/mod.rs:984:54 [INFO] [stderr] | [INFO] [stderr] 984 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/parse/precedence.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/parse/precedence.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/parse/precedence.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/parse/precedence.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/format.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | args: args, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [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/ast/mod.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [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/ast/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | column: column, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `column` [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/ast/mod.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | offset: offset, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `offset` [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/ast/mod.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | typ: typ, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `typ` [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/ast/mod.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/ast/mod.rs:334:13 [INFO] [stderr] | [INFO] [stderr] 334 | sel: sel, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sel` [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/ast/mod.rs:474:26 [INFO] [stderr] | [INFO] [stderr] 474 | PositionedItem { pos: pos, val: v } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/ast/mod.rs:729:13 [INFO] [stderr] | [INFO] [stderr] 729 | arg_set: arg_set, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `arg_set` [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/tokenizer/mod.rs:419:46 [INFO] [stderr] | [INFO] [stderr] 419 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/tokenizer/mod.rs:428:46 [INFO] [stderr] | [INFO] [stderr] 428 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/tokenizer/mod.rs:434:46 [INFO] [stderr] | [INFO] [stderr] 434 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/build/mod.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | env: env, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [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/error.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/iter.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | line_offset: line_offset, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_offset` [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/iter.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | col_offset: col_offset, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `col_offset` [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/parse/mod.rs:508:9 [INFO] [stderr] | [INFO] [stderr] 508 | fields: fields, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `fields` [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/parse/mod.rs:509:9 [INFO] [stderr] | [INFO] [stderr] 509 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/parse/mod.rs:546:13 [INFO] [stderr] | [INFO] [stderr] 546 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/parse/mod.rs:984:54 [INFO] [stderr] | [INFO] [stderr] 984 | let ctx_err = StackPrinter { err: err }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [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/parse/precedence.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/parse/precedence.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/parse/precedence.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/parse/precedence.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/format.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | args: args, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [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: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:313:9 [INFO] [stderr] | [INFO] [stderr] 313 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:380:9 [INFO] [stderr] | [INFO] [stderr] 380 | return buf; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:541:9 [INFO] [stderr] | [INFO] [stderr] 541 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | return bad_symbols; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `bad_symbols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:633:9 [INFO] [stderr] | [INFO] [stderr] 633 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | return Result::Incomplete(_input.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Incomplete(_input.clone())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:315:21 [INFO] [stderr] | [INFO] [stderr] 315 | return Result::Complete(rest, make_tok!(CMT => cmt.to_string(), input)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Complete(rest, make_tok!(CMT => cmt.to_string(), input))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:319:21 [INFO] [stderr] | [INFO] [stderr] 319 | / return Result::Abort(Error::new( [INFO] [stderr] 320 | | "Unparsable comment".to_string(), [INFO] [stderr] 321 | | Box::new(rest.clone()), [INFO] [stderr] 322 | | )); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 319 | Result::Abort(Error::new( [INFO] [stderr] 320 | "Unparsable comment".to_string(), [INFO] [stderr] 321 | Box::new(rest.clone()), [INFO] [stderr] 322 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:326:36 [INFO] [stderr] | [INFO] [stderr] 326 | Result::Incomplete(ctx) => return Result::Incomplete(ctx), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Incomplete(ctx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:327:28 [INFO] [stderr] | [INFO] [stderr] 327 | Result::Fail(e) => return Result::Fail(e), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Fail(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:328:29 [INFO] [stderr] | [INFO] [stderr] 328 | Result::Abort(e) => return Result::Abort(e), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Abort(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:175:9 [INFO] [stderr] | [INFO] [stderr] 175 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:182:9 [INFO] [stderr] | [INFO] [stderr] 182 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:268:29 [INFO] [stderr] | [INFO] [stderr] 268 | None => return Ok(Rc::new(Val::Empty)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Rc::new(Val::Empty))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:360:9 [INFO] [stderr] | [INFO] [stderr] 360 | return Ok(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:464:9 [INFO] [stderr] | [INFO] [stderr] 464 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 465 | | format!("Environment Variable {} not set", search.fragment), [INFO] [stderr] 466 | | error::ErrorType::NoSuchSymbol, [INFO] [stderr] 467 | | search.pos.clone(), [INFO] [stderr] 468 | | ))); [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 464 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 465 | format!("Environment Variable {} not set", search.fragment), [INFO] [stderr] 466 | error::ErrorType::NoSuchSymbol, [INFO] [stderr] 467 | search.pos.clone(), [INFO] [stderr] 468 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:603:21 [INFO] [stderr] | [INFO] [stderr] 603 | return Ok(Rc::new(Val::Str([s.to_string(), ss.clone()].concat()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Rc::new(Val::Str([s.to_string(), ss.clone()].concat())))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:606:21 [INFO] [stderr] | [INFO] [stderr] 606 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 607 | | format!( [INFO] [stderr] 608 | | "Expected \ [INFO] [stderr] 609 | | String \ [INFO] [stderr] ... | [INFO] [stderr] 615 | | pos.clone(), [INFO] [stderr] 616 | | ))) [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 606 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 607 | format!( [INFO] [stderr] 608 | "Expected \ [INFO] [stderr] 609 | String \ [INFO] [stderr] 610 | but got \ [INFO] [stderr] 611 | {:?}", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:624:21 [INFO] [stderr] | [INFO] [stderr] 624 | return Ok(Rc::new(Val::List(new_vec))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Rc::new(Val::List(new_vec)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:627:21 [INFO] [stderr] | [INFO] [stderr] 627 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 628 | | format!( [INFO] [stderr] 629 | | "Expected \ [INFO] [stderr] 630 | | List \ [INFO] [stderr] ... | [INFO] [stderr] 636 | | pos.clone(), [INFO] [stderr] 637 | | ))) [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 627 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 628 | format!( [INFO] [stderr] 629 | "Expected \ [INFO] [stderr] 630 | List \ [INFO] [stderr] 631 | but got \ [INFO] [stderr] 632 | {:?}", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:641:17 [INFO] [stderr] | [INFO] [stderr] 641 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 642 | | format!("{} does not support the '+' operation", expr.type_name()), [INFO] [stderr] 643 | | error::ErrorType::Unsupported, [INFO] [stderr] 644 | | pos.clone(), [INFO] [stderr] 645 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 641 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 642 | format!("{} does not support the '+' operation", expr.type_name()), [INFO] [stderr] 643 | error::ErrorType::Unsupported, [INFO] [stderr] 644 | pos.clone(), [INFO] [stderr] 645 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:664:17 [INFO] [stderr] | [INFO] [stderr] 664 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 665 | | format!("{} does not support the '-' operation", expr.type_name()), [INFO] [stderr] 666 | | error::ErrorType::Unsupported, [INFO] [stderr] 667 | | pos.clone(), [INFO] [stderr] 668 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 664 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 665 | format!("{} does not support the '-' operation", expr.type_name()), [INFO] [stderr] 666 | error::ErrorType::Unsupported, [INFO] [stderr] 667 | pos.clone(), [INFO] [stderr] 668 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:687:17 [INFO] [stderr] | [INFO] [stderr] 687 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 688 | | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 689 | | error::ErrorType::Unsupported, [INFO] [stderr] 690 | | pos.clone(), [INFO] [stderr] 691 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 687 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 688 | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 689 | error::ErrorType::Unsupported, [INFO] [stderr] 690 | pos.clone(), [INFO] [stderr] 691 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:710:17 [INFO] [stderr] | [INFO] [stderr] 710 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 711 | | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 712 | | error::ErrorType::Unsupported, [INFO] [stderr] 713 | | pos.clone(), [INFO] [stderr] 714 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 710 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 711 | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 712 | error::ErrorType::Unsupported, [INFO] [stderr] 713 | pos.clone(), [INFO] [stderr] 714 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:970:9 [INFO] [stderr] | [INFO] [stderr] 970 | / return Ok(Rc::new(Val::Tuple( [INFO] [stderr] 971 | | new_fields [INFO] [stderr] 972 | | .iter() [INFO] [stderr] 973 | | .map(|a| { [INFO] [stderr] ... | [INFO] [stderr] 977 | | }).collect(), [INFO] [stderr] 978 | | ))); [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 970 | Ok(Rc::new(Val::Tuple( [INFO] [stderr] 971 | new_fields [INFO] [stderr] 972 | .iter() [INFO] [stderr] 973 | .map(|a| { [INFO] [stderr] 974 | let first = a.0.clone(); [INFO] [stderr] 975 | let t = a.1.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:1097:9 [INFO] [stderr] | [INFO] [stderr] 1097 | / return if self.file.is_file() { [INFO] [stderr] 1098 | | // Only use the dirname portion if the root is a file. [INFO] [stderr] 1099 | | self.file.parent().unwrap().to_path_buf() [INFO] [stderr] 1100 | | } else { [INFO] [stderr] 1101 | | // otherwise use clone of the root.. [INFO] [stderr] 1102 | | self.file.clone() [INFO] [stderr] 1103 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1097 | if self.file.is_file() { [INFO] [stderr] 1098 | // Only use the dirname portion if the root is a file. [INFO] [stderr] 1099 | self.file.parent().unwrap().to_path_buf() [INFO] [stderr] 1100 | } else { [INFO] [stderr] 1101 | // otherwise use clone of the root.. [INFO] [stderr] 1102 | self.file.clone() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:1202:9 [INFO] [stderr] | [INFO] [stderr] 1202 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 1203 | | format!("Expected macro but got {:?}", mac), [INFO] [stderr] 1204 | | error::ErrorType::TypeFail, [INFO] [stderr] 1205 | | def.pos.clone(), [INFO] [stderr] 1206 | | ))); [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1202 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 1203 | format!("Expected macro but got {:?}", mac), [INFO] [stderr] 1204 | error::ErrorType::TypeFail, [INFO] [stderr] 1205 | def.pos.clone(), [INFO] [stderr] 1206 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert/flags.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert/flags.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | return Ok(Value::Float(value_node!(f, pref_pos))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::Float(value_node!(f, pref_pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:425:25 [INFO] [stderr] | [INFO] [stderr] 425 | / return Result::Fail(Error::new( [INFO] [stderr] 426 | | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 427 | | Box::new(rest.clone()), [INFO] [stderr] 428 | | )); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 425 | Result::Fail(Error::new( [INFO] [stderr] 426 | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 427 | Box::new(rest.clone()), [INFO] [stderr] 428 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:435:25 [INFO] [stderr] | [INFO] [stderr] 435 | / return Result::Fail(Error::new( [INFO] [stderr] 436 | | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 437 | | Box::new(rest.clone()), [INFO] [stderr] 438 | | )); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 435 | Result::Fail(Error::new( [INFO] [stderr] 436 | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 437 | Box::new(rest.clone()), [INFO] [stderr] 438 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:497:5 [INFO] [stderr] | [INFO] [stderr] 497 | return Result::Complete(rest, sel_list); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Complete(rest, sel_list)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:799:5 [INFO] [stderr] | [INFO] [stderr] 799 | / return Err(Error::new( [INFO] [stderr] 800 | | format!("Expected a selector but got {}", macroname.type_name()), [INFO] [stderr] 801 | | Box::new(input.clone()), [INFO] [stderr] 802 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 799 | Err(Error::new( [INFO] [stderr] 800 | format!("Expected a selector but got {}", macroname.type_name()), [INFO] [stderr] 801 | Box::new(input.clone()), [INFO] [stderr] 802 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:996:13 [INFO] [stderr] | [INFO] [stderr] 996 | return Ok(out); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(out)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:999:13 [INFO] [stderr] | [INFO] [stderr] 999 | return Err(e); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / return Result::Fail(Error::new( [INFO] [stderr] 62 | | format!( [INFO] [stderr] 63 | | "Error while parsing Binary Expression Expected Expression got {:?}", [INFO] [stderr] 64 | | el [INFO] [stderr] 65 | | ), [INFO] [stderr] 66 | | Box::new(i_), [INFO] [stderr] 67 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 61 | Result::Fail(Error::new( [INFO] [stderr] 62 | format!( [INFO] [stderr] 63 | "Error while parsing Binary Expression Expected Expression got {:?}", [INFO] [stderr] 64 | el [INFO] [stderr] 65 | ), [INFO] [stderr] 66 | Box::new(i_), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / return Result::Fail(Error::new( [INFO] [stderr] 93 | | format!( [INFO] [stderr] 94 | | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 95 | | el [INFO] [stderr] 96 | | ), [INFO] [stderr] 97 | | Box::new(i_), [INFO] [stderr] 98 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 92 | Result::Fail(Error::new( [INFO] [stderr] 93 | format!( [INFO] [stderr] 94 | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 95 | el [INFO] [stderr] 96 | ), [INFO] [stderr] 97 | Box::new(i_), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / return Result::Fail(Error::new( [INFO] [stderr] 138 | | format!( [INFO] [stderr] 139 | | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 140 | | el [INFO] [stderr] 141 | | ), [INFO] [stderr] 142 | | Box::new(i_), [INFO] [stderr] 143 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 137 | Result::Fail(Error::new( [INFO] [stderr] 138 | format!( [INFO] [stderr] 139 | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 140 | el [INFO] [stderr] 141 | ), [INFO] [stderr] 142 | Box::new(i_), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / return Result::Fail(Error::new( [INFO] [stderr] 238 | | format!( [INFO] [stderr] 239 | | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 240 | | el [INFO] [stderr] 241 | | ), [INFO] [stderr] 242 | | Box::new(i), [INFO] [stderr] 243 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 237 | Result::Fail(Error::new( [INFO] [stderr] 238 | format!( [INFO] [stderr] 239 | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 240 | el [INFO] [stderr] 241 | ), [INFO] [stderr] 242 | Box::new(i), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | return Result::Complete(_i, list); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Complete(_i, list)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/format.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | return Ok(buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(buf)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:313:9 [INFO] [stderr] | [INFO] [stderr] 313 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:380:9 [INFO] [stderr] | [INFO] [stderr] 380 | return buf; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `buf` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:541:9 [INFO] [stderr] | [INFO] [stderr] 541 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | return bad_symbols; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `bad_symbols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast/mod.rs:633:9 [INFO] [stderr] | [INFO] [stderr] 633 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | return Result::Incomplete(_input.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Incomplete(_input.clone())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:315:21 [INFO] [stderr] | [INFO] [stderr] 315 | return Result::Complete(rest, make_tok!(CMT => cmt.to_string(), input)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Complete(rest, make_tok!(CMT => cmt.to_string(), input))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:319:21 [INFO] [stderr] | [INFO] [stderr] 319 | / return Result::Abort(Error::new( [INFO] [stderr] 320 | | "Unparsable comment".to_string(), [INFO] [stderr] 321 | | Box::new(rest.clone()), [INFO] [stderr] 322 | | )); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 319 | Result::Abort(Error::new( [INFO] [stderr] 320 | "Unparsable comment".to_string(), [INFO] [stderr] 321 | Box::new(rest.clone()), [INFO] [stderr] 322 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:326:36 [INFO] [stderr] | [INFO] [stderr] 326 | Result::Incomplete(ctx) => return Result::Incomplete(ctx), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Incomplete(ctx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:327:28 [INFO] [stderr] | [INFO] [stderr] 327 | Result::Fail(e) => return Result::Fail(e), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Fail(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer/mod.rs:328:29 [INFO] [stderr] | [INFO] [stderr] 328 | Result::Abort(e) => return Result::Abort(e), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Abort(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:175:9 [INFO] [stderr] | [INFO] [stderr] 175 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:182:9 [INFO] [stderr] | [INFO] [stderr] 182 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/ir.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:268:29 [INFO] [stderr] | [INFO] [stderr] 268 | None => return Ok(Rc::new(Val::Empty)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Rc::new(Val::Empty))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:360:9 [INFO] [stderr] | [INFO] [stderr] 360 | return Ok(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:442:9 [INFO] [stderr] | [INFO] [stderr] 442 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:464:9 [INFO] [stderr] | [INFO] [stderr] 464 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 465 | | format!("Environment Variable {} not set", search.fragment), [INFO] [stderr] 466 | | error::ErrorType::NoSuchSymbol, [INFO] [stderr] 467 | | search.pos.clone(), [INFO] [stderr] 468 | | ))); [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 464 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 465 | format!("Environment Variable {} not set", search.fragment), [INFO] [stderr] 466 | error::ErrorType::NoSuchSymbol, [INFO] [stderr] 467 | search.pos.clone(), [INFO] [stderr] 468 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:603:21 [INFO] [stderr] | [INFO] [stderr] 603 | return Ok(Rc::new(Val::Str([s.to_string(), ss.clone()].concat()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Rc::new(Val::Str([s.to_string(), ss.clone()].concat())))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:606:21 [INFO] [stderr] | [INFO] [stderr] 606 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 607 | | format!( [INFO] [stderr] 608 | | "Expected \ [INFO] [stderr] 609 | | String \ [INFO] [stderr] ... | [INFO] [stderr] 615 | | pos.clone(), [INFO] [stderr] 616 | | ))) [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 606 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 607 | format!( [INFO] [stderr] 608 | "Expected \ [INFO] [stderr] 609 | String \ [INFO] [stderr] 610 | but got \ [INFO] [stderr] 611 | {:?}", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:624:21 [INFO] [stderr] | [INFO] [stderr] 624 | return Ok(Rc::new(Val::List(new_vec))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Rc::new(Val::List(new_vec)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:627:21 [INFO] [stderr] | [INFO] [stderr] 627 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 628 | | format!( [INFO] [stderr] 629 | | "Expected \ [INFO] [stderr] 630 | | List \ [INFO] [stderr] ... | [INFO] [stderr] 636 | | pos.clone(), [INFO] [stderr] 637 | | ))) [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 627 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 628 | format!( [INFO] [stderr] 629 | "Expected \ [INFO] [stderr] 630 | List \ [INFO] [stderr] 631 | but got \ [INFO] [stderr] 632 | {:?}", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:641:17 [INFO] [stderr] | [INFO] [stderr] 641 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 642 | | format!("{} does not support the '+' operation", expr.type_name()), [INFO] [stderr] 643 | | error::ErrorType::Unsupported, [INFO] [stderr] 644 | | pos.clone(), [INFO] [stderr] 645 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 641 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 642 | format!("{} does not support the '+' operation", expr.type_name()), [INFO] [stderr] 643 | error::ErrorType::Unsupported, [INFO] [stderr] 644 | pos.clone(), [INFO] [stderr] 645 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:664:17 [INFO] [stderr] | [INFO] [stderr] 664 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 665 | | format!("{} does not support the '-' operation", expr.type_name()), [INFO] [stderr] 666 | | error::ErrorType::Unsupported, [INFO] [stderr] 667 | | pos.clone(), [INFO] [stderr] 668 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 664 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 665 | format!("{} does not support the '-' operation", expr.type_name()), [INFO] [stderr] 666 | error::ErrorType::Unsupported, [INFO] [stderr] 667 | pos.clone(), [INFO] [stderr] 668 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:687:17 [INFO] [stderr] | [INFO] [stderr] 687 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 688 | | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 689 | | error::ErrorType::Unsupported, [INFO] [stderr] 690 | | pos.clone(), [INFO] [stderr] 691 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 687 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 688 | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 689 | error::ErrorType::Unsupported, [INFO] [stderr] 690 | pos.clone(), [INFO] [stderr] 691 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:710:17 [INFO] [stderr] | [INFO] [stderr] 710 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 711 | | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 712 | | error::ErrorType::Unsupported, [INFO] [stderr] 713 | | pos.clone(), [INFO] [stderr] 714 | | ))) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 710 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 711 | format!("{} does not support the '*' operation", expr.type_name()), [INFO] [stderr] 712 | error::ErrorType::Unsupported, [INFO] [stderr] 713 | pos.clone(), [INFO] [stderr] 714 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:970:9 [INFO] [stderr] | [INFO] [stderr] 970 | / return Ok(Rc::new(Val::Tuple( [INFO] [stderr] 971 | | new_fields [INFO] [stderr] 972 | | .iter() [INFO] [stderr] 973 | | .map(|a| { [INFO] [stderr] ... | [INFO] [stderr] 977 | | }).collect(), [INFO] [stderr] 978 | | ))); [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 970 | Ok(Rc::new(Val::Tuple( [INFO] [stderr] 971 | new_fields [INFO] [stderr] 972 | .iter() [INFO] [stderr] 973 | .map(|a| { [INFO] [stderr] 974 | let first = a.0.clone(); [INFO] [stderr] 975 | let t = a.1.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:1097:9 [INFO] [stderr] | [INFO] [stderr] 1097 | / return if self.file.is_file() { [INFO] [stderr] 1098 | | // Only use the dirname portion if the root is a file. [INFO] [stderr] 1099 | | self.file.parent().unwrap().to_path_buf() [INFO] [stderr] 1100 | | } else { [INFO] [stderr] 1101 | | // otherwise use clone of the root.. [INFO] [stderr] 1102 | | self.file.clone() [INFO] [stderr] 1103 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1097 | if self.file.is_file() { [INFO] [stderr] 1098 | // Only use the dirname portion if the root is a file. [INFO] [stderr] 1099 | self.file.parent().unwrap().to_path_buf() [INFO] [stderr] 1100 | } else { [INFO] [stderr] 1101 | // otherwise use clone of the root.. [INFO] [stderr] 1102 | self.file.clone() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/build/mod.rs:1202:9 [INFO] [stderr] | [INFO] [stderr] 1202 | / return Err(Box::new(error::BuildError::new( [INFO] [stderr] 1203 | | format!("Expected macro but got {:?}", mac), [INFO] [stderr] 1204 | | error::ErrorType::TypeFail, [INFO] [stderr] 1205 | | def.pos.clone(), [INFO] [stderr] 1206 | | ))); [INFO] [stderr] | |____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 1202 | Err(Box::new(error::BuildError::new( [INFO] [stderr] 1203 | format!("Expected macro but got {:?}", mac), [INFO] [stderr] 1204 | error::ErrorType::TypeFail, [INFO] [stderr] 1205 | def.pos.clone(), [INFO] [stderr] 1206 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert/flags.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert/flags.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | return Ok(Value::Float(value_node!(f, pref_pos))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::Float(value_node!(f, pref_pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:425:25 [INFO] [stderr] | [INFO] [stderr] 425 | / return Result::Fail(Error::new( [INFO] [stderr] 426 | | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 427 | | Box::new(rest.clone()), [INFO] [stderr] 428 | | )); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 425 | Result::Fail(Error::new( [INFO] [stderr] 426 | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 427 | Box::new(rest.clone()), [INFO] [stderr] 428 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:435:25 [INFO] [stderr] | [INFO] [stderr] 435 | / return Result::Fail(Error::new( [INFO] [stderr] 436 | | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 437 | | Box::new(rest.clone()), [INFO] [stderr] 438 | | )); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 435 | Result::Fail(Error::new( [INFO] [stderr] 436 | "Expected (.) but no dot found".to_string(), [INFO] [stderr] 437 | Box::new(rest.clone()), [INFO] [stderr] 438 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:497:5 [INFO] [stderr] | [INFO] [stderr] 497 | return Result::Complete(rest, sel_list); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Complete(rest, sel_list)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:799:5 [INFO] [stderr] | [INFO] [stderr] 799 | / return Err(Error::new( [INFO] [stderr] 800 | | format!("Expected a selector but got {}", macroname.type_name()), [INFO] [stderr] 801 | | Box::new(input.clone()), [INFO] [stderr] 802 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 799 | Err(Error::new( [INFO] [stderr] 800 | format!("Expected a selector but got {}", macroname.type_name()), [INFO] [stderr] 801 | Box::new(input.clone()), [INFO] [stderr] 802 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:996:13 [INFO] [stderr] | [INFO] [stderr] 996 | return Ok(out); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(out)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:999:13 [INFO] [stderr] | [INFO] [stderr] 999 | return Err(e); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / return Result::Fail(Error::new( [INFO] [stderr] 62 | | format!( [INFO] [stderr] 63 | | "Error while parsing Binary Expression Expected Expression got {:?}", [INFO] [stderr] 64 | | el [INFO] [stderr] 65 | | ), [INFO] [stderr] 66 | | Box::new(i_), [INFO] [stderr] 67 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 61 | Result::Fail(Error::new( [INFO] [stderr] 62 | format!( [INFO] [stderr] 63 | "Error while parsing Binary Expression Expected Expression got {:?}", [INFO] [stderr] 64 | el [INFO] [stderr] 65 | ), [INFO] [stderr] 66 | Box::new(i_), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / return Result::Fail(Error::new( [INFO] [stderr] 93 | | format!( [INFO] [stderr] 94 | | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 95 | | el [INFO] [stderr] 96 | | ), [INFO] [stderr] 97 | | Box::new(i_), [INFO] [stderr] 98 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 92 | Result::Fail(Error::new( [INFO] [stderr] 93 | format!( [INFO] [stderr] 94 | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 95 | el [INFO] [stderr] 96 | ), [INFO] [stderr] 97 | Box::new(i_), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / return Result::Fail(Error::new( [INFO] [stderr] 138 | | format!( [INFO] [stderr] 139 | | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 140 | | el [INFO] [stderr] 141 | | ), [INFO] [stderr] 142 | | Box::new(i_), [INFO] [stderr] 143 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 137 | Result::Fail(Error::new( [INFO] [stderr] 138 | format!( [INFO] [stderr] 139 | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 140 | el [INFO] [stderr] 141 | ), [INFO] [stderr] 142 | Box::new(i_), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / return Result::Fail(Error::new( [INFO] [stderr] 238 | | format!( [INFO] [stderr] 239 | | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 240 | | el [INFO] [stderr] 241 | | ), [INFO] [stderr] 242 | | Box::new(i), [INFO] [stderr] 243 | | )); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 237 | Result::Fail(Error::new( [INFO] [stderr] 238 | format!( [INFO] [stderr] 239 | "Error while parsing Binary Expression Unexpected Operator {:?}", [INFO] [stderr] 240 | el [INFO] [stderr] 241 | ), [INFO] [stderr] 242 | Box::new(i), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/precedence.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | return Result::Complete(_i, list); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Result::Complete(_i, list)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/format.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | return Ok(buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(buf)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:358:9 [INFO] [stderr] | [INFO] [stderr] 358 | / match self { [INFO] [stderr] 359 | | &Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 360 | | &Value::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 361 | | &Value::Int(_) => "Integer".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 367 | | &Value::Selector(_) => "Selector".to_string(), [INFO] [stderr] 368 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 358 | match *self { [INFO] [stderr] 359 | Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 360 | Value::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 361 | Value::Int(_) => "Integer".to_string(), [INFO] [stderr] 362 | Value::Float(_) => "Float".to_string(), [INFO] [stderr] 363 | Value::Str(_) => "String".to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/mod.rs:371:28 [INFO] [stderr] | [INFO] [stderr] 371 | fn fields_to_string(v: &FieldList) -> String { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ast/mod.rs:374:13 [INFO] [stderr] | [INFO] [stderr] 374 | for ref t in v.iter() { [INFO] [stderr] | ^^^^^ -------- help: try: `let t = &v.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/mod.rs:383:27 [INFO] [stderr] | [INFO] [stderr] 383 | fn elems_to_string(v: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Expression]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:389:9 [INFO] [stderr] | [INFO] [stderr] 389 | / match self { [INFO] [stderr] 390 | | &Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 391 | | &Value::Boolean(ref b) => format!("{}", b.val), [INFO] [stderr] 392 | | &Value::Int(ref i) => format!("{}", i.val), [INFO] [stderr] ... | [INFO] [stderr] 398 | | &Value::Selector(ref v) => v.sel.to_string(), [INFO] [stderr] 399 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 389 | match *self { [INFO] [stderr] 390 | Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 391 | Value::Boolean(ref b) => format!("{}", b.val), [INFO] [stderr] 392 | Value::Int(ref i) => format!("{}", i.val), [INFO] [stderr] 393 | Value::Float(ref f) => format!("{}", f.val), [INFO] [stderr] 394 | Value::Str(ref s) => format!("{}", s.val), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ast/mod.rs:394:35 [INFO] [stderr] | [INFO] [stderr] 394 | &Value::Str(ref s) => format!("{}", s.val), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.val.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ast/mod.rs:395:38 [INFO] [stderr] | [INFO] [stderr] 395 | &Value::Symbol(ref s) => format!("{}", s.val), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.val.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ast/mod.rs:396:38 [INFO] [stderr] | [INFO] [stderr] 396 | &Value::Tuple(ref fs) => format!("{}", Self::fields_to_string(&fs.val)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `Self::fields_to_string(&fs.val).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:404:9 [INFO] [stderr] | [INFO] [stderr] 404 | / match self { [INFO] [stderr] 405 | | &Value::Empty(ref pos) => pos, [INFO] [stderr] 406 | | &Value::Boolean(ref b) => &b.pos, [INFO] [stderr] 407 | | &Value::Int(ref i) => &i.pos, [INFO] [stderr] ... | [INFO] [stderr] 413 | | &Value::Selector(ref v) => &v.pos, [INFO] [stderr] 414 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 404 | match *self { [INFO] [stderr] 405 | Value::Empty(ref pos) => pos, [INFO] [stderr] 406 | Value::Boolean(ref b) => &b.pos, [INFO] [stderr] 407 | Value::Int(ref i) => &i.pos, [INFO] [stderr] 408 | Value::Float(ref f) => &f.pos, [INFO] [stderr] 409 | Value::Str(ref s) => &s.pos, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match $slf { [INFO] [stderr] 37 | | $( [INFO] [stderr] 38 | | $l => { [INFO] [stderr] 39 | | if let $l = $r { [INFO] [stderr] ... | [INFO] [stderr] 45 | | )* [INFO] [stderr] 46 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 419 | / enum_type_equality!( [INFO] [stderr] 420 | | self, [INFO] [stderr] 421 | | target, [INFO] [stderr] 422 | | &Value::Empty(_), [INFO] [stderr] ... | [INFO] [stderr] 430 | | &Value::Selector(_) [INFO] [stderr] 431 | | ) [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | / if let $l = $r { [INFO] [stderr] 40 | | true [INFO] [stderr] 41 | | } else { [INFO] [stderr] 42 | | false [INFO] [stderr] 43 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 419 | / enum_type_equality!( [INFO] [stderr] 420 | | self, [INFO] [stderr] 421 | | target, [INFO] [stderr] 422 | | &Value::Empty(_), [INFO] [stderr] ... | [INFO] [stderr] 430 | | &Value::Selector(_) [INFO] [stderr] 431 | | ) [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/ast/mod.rs:535:38 [INFO] [stderr] | [INFO] [stderr] 535 | fn symbol_is_in_args(&self, sym: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:550:9 [INFO] [stderr] | [INFO] [stderr] 550 | / if let &Value::Symbol(ref name) = val { [INFO] [stderr] 551 | | if !self.symbol_is_in_args(&name.val) { [INFO] [stderr] 552 | | bad_symbols.insert(name.val.clone()); [INFO] [stderr] 553 | | } [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 550 | if let Value::Symbol(ref name) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:554:16 [INFO] [stderr] | [INFO] [stderr] 554 | } else if let &Value::Selector(ref sel_node) = val { [INFO] [stderr] | ________________^ [INFO] [stderr] 555 | | stack.push(&sel_node.sel.head); [INFO] [stderr] 556 | | } else if let &Value::Tuple(ref tuple_node) = val { [INFO] [stderr] 557 | | let fields = &tuple_node.val; [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 554 | } else if let Value::Selector(ref sel_node) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:556:16 [INFO] [stderr] | [INFO] [stderr] 556 | } else if let &Value::Tuple(ref tuple_node) = val { [INFO] [stderr] | ________________^ [INFO] [stderr] 557 | | let fields = &tuple_node.val; [INFO] [stderr] 558 | | for &(_, ref expr) in fields.iter() { [INFO] [stderr] 559 | | stack.push(expr); [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 556 | } else if let Value::Tuple(ref tuple_node) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:561:16 [INFO] [stderr] | [INFO] [stderr] 561 | } else if let &Value::List(ref def) = val { [INFO] [stderr] | ________________^ [INFO] [stderr] 562 | | for elem in def.elems.iter() { [INFO] [stderr] 563 | | stack.push(elem); [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 561 | } else if let Value::List(ref def) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ast/mod.rs:576:19 [INFO] [stderr] | [INFO] [stderr] 576 | while stack.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!stack.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 don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:577:17 [INFO] [stderr] | [INFO] [stderr] 577 | / match stack.pop().unwrap() { [INFO] [stderr] 578 | | &Expression::Binary(ref bexpr) => { [INFO] [stderr] 579 | | stack.push(&bexpr.left); [INFO] [stderr] 580 | | stack.push(&bexpr.right); [INFO] [stderr] ... | [INFO] [stderr] 626 | | } [INFO] [stderr] 627 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 577 | match *stack.pop().unwrap() { [INFO] [stderr] 578 | Expression::Binary(ref bexpr) => { [INFO] [stderr] 579 | stack.push(&bexpr.left); [INFO] [stderr] 580 | stack.push(&bexpr.right); [INFO] [stderr] 581 | } [INFO] [stderr] 582 | Expression::Compare(ref cexpr) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ast/mod.rs:630:12 [INFO] [stderr] | [INFO] [stderr] 630 | if bad_symbols.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bad_symbols.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:738:13 [INFO] [stderr] | [INFO] [stderr] 738 | / if let &mut Statement::Import(ref mut def) = stmt { [INFO] [stderr] 739 | | let mut path = PathBuf::from(&def.path.fragment); [INFO] [stderr] 740 | | if path.is_relative() { [INFO] [stderr] 741 | | def.path.fragment = base [INFO] [stderr] ... | [INFO] [stderr] 747 | | } [INFO] [stderr] 748 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 738 | if let Statement::Import(ref mut def) = *stmt { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:778:9 [INFO] [stderr] | [INFO] [stderr] 778 | / match self { [INFO] [stderr] 779 | | &Expression::Simple(ref v) => v.pos(), [INFO] [stderr] 780 | | &Expression::Binary(ref def) => &def.pos, [INFO] [stderr] 781 | | &Expression::Compare(ref def) => &def.pos, [INFO] [stderr] ... | [INFO] [stderr] 789 | | &Expression::ListOp(ref def) => &def.pos, [INFO] [stderr] 790 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 778 | match *self { [INFO] [stderr] 779 | Expression::Simple(ref v) => v.pos(), [INFO] [stderr] 780 | Expression::Binary(ref def) => &def.pos, [INFO] [stderr] 781 | Expression::Compare(ref def) => &def.pos, [INFO] [stderr] 782 | Expression::Copy(ref def) => &def.pos, [INFO] [stderr] 783 | Expression::Grouped(ref expr) => expr.pos(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:796:9 [INFO] [stderr] | [INFO] [stderr] 796 | / match self { [INFO] [stderr] 797 | | &Expression::Simple(ref v) => { [INFO] [stderr] 798 | | try!(write!(w, "{}", v.to_string())); [INFO] [stderr] 799 | | } [INFO] [stderr] ... | [INFO] [stderr] 829 | | } [INFO] [stderr] 830 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 796 | match *self { [INFO] [stderr] 797 | Expression::Simple(ref v) => { [INFO] [stderr] 798 | try!(write!(w, "{}", v.to_string())); [INFO] [stderr] 799 | } [INFO] [stderr] 800 | Expression::Binary(_) => { [INFO] [stderr] 801 | try!(write!(w, "")); [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/tokenizer/mod.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | / fn is_symbol_char<'a>(i: OffsetStrIter<'a>) -> Result, u8> { [INFO] [stderr] 27 | | let mut _i = i.clone(); [INFO] [stderr] 28 | | let c = match _i.next() { [INFO] [stderr] 29 | | Some(c) => *c, [INFO] [stderr] ... | [INFO] [stderr] 44 | | } [INFO] [stderr] 45 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokenizer/mod.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / fn escapequoted<'a>(input: OffsetStrIter<'a>) -> Result, String> { [INFO] [stderr] 48 | | // loop until we find a " that is not preceded by \. [INFO] [stderr] 49 | | // Collapse all \ to just char for escaping. [INFO] [stderr] 50 | | let mut frag = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 71 | | return Result::Incomplete(_input.clone()); [INFO] [stderr] 72 | | } [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 loop could be written as a `while let` loop [INFO] [stderr] --> src/tokenizer/mod.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | / loop { [INFO] [stderr] 54 | | let c = match _input.next() { [INFO] [stderr] 55 | | Some(c) => *c, [INFO] [stderr] 56 | | None => break, [INFO] [stderr] ... | [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(c) = _input.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/tokenizer/mod.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | if c == '\\' as u8 && !escape { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\\' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/tokenizer/mod.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | } else if c == '"' as u8 && !escape { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'"' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | / make_fn!(pipequotetok, [INFO] [stderr] 88 | | do_each!( [INFO] [stderr] 89 | | p => input!(), [INFO] [stderr] 90 | | _ => text_token!("|"), [INFO] [stderr] ... | [INFO] [stderr] 98 | | ) [INFO] [stderr] 99 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | / make_fn!(barewordtok, [INFO] [stderr] 102 | | do_each!( [INFO] [stderr] 103 | | span => input!(), [INFO] [stderr] 104 | | _ => peek!(ascii_alpha), [INFO] [stderr] ... | [INFO] [stderr] 111 | | ) [INFO] [stderr] 112 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | / make_fn!(digittok, [INFO] [stderr] 115 | | do_each!( [INFO] [stderr] 116 | | span => input!(), [INFO] [stderr] 117 | | _ => peek!(ascii_digit), [INFO] [stderr] ... | [INFO] [stderr] 124 | | ) [INFO] [stderr] 125 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:306:19 [INFO] [stderr] | [INFO] [stderr] 306 | match until!( [INFO] [stderr] | ___________________^ [INFO] [stderr] 307 | | rest, [INFO] [stderr] 308 | | either!( [INFO] [stderr] 309 | | eoi, [INFO] [stderr] ... | [INFO] [stderr] 312 | | ) [INFO] [stderr] 313 | | ) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/tokenizer/mod.rs:357:1 [INFO] [stderr] | [INFO] [stderr] 357 | / fn token<'a>(input: OffsetStrIter<'a>) -> Result, Token> { [INFO] [stderr] 358 | | either!( [INFO] [stderr] 359 | | input, [INFO] [stderr] 360 | | strtok, [INFO] [stderr] ... | [INFO] [stderr] 401 | | ) [INFO] [stderr] 402 | | } [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: the function has a cyclomatic complexity of 42 [INFO] [stderr] --> src/tokenizer/mod.rs:357:1 [INFO] [stderr] | [INFO] [stderr] 357 | / fn token<'a>(input: OffsetStrIter<'a>) -> Result, Token> { [INFO] [stderr] 358 | | either!( [INFO] [stderr] 359 | | input, [INFO] [stderr] 360 | | strtok, [INFO] [stderr] ... | [INFO] [stderr] 401 | | ) [INFO] [stderr] 402 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokenizer/mod.rs:405:1 [INFO] [stderr] | [INFO] [stderr] 405 | / pub fn tokenize<'a>(input: OffsetStrIter<'a>) -> std::result::Result, String> { [INFO] [stderr] 406 | | let mut out = Vec::new(); [INFO] [stderr] 407 | | let mut i = input.clone(); [INFO] [stderr] 408 | | loop { [INFO] [stderr] ... | [INFO] [stderr] 453 | | Ok(out) [INFO] [stderr] 454 | | } [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] --> src/tokenizer/mod.rs:625:1 [INFO] [stderr] | [INFO] [stderr] 625 | / pub fn pos<'a>(i: SliceIter<'a, Token>) -> Result, Position> { [INFO] [stderr] 626 | | let mut _i = i.clone(); [INFO] [stderr] 627 | | let tok = _i.next().unwrap(); [INFO] [stderr] 628 | | let line = tok.pos.line; [INFO] [stderr] 629 | | let column = tok.pos.column; [INFO] [stderr] 630 | | Result::Complete(i.clone(), Position::new(line, column, i.get_offset())) [INFO] [stderr] 631 | | } [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 should consider deriving a `Default` implementation for `build::assets::MemoryCache` [INFO] [stderr] --> src/build/assets.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / pub fn new() -> Self { [INFO] [stderr] 46 | | MemoryCache { [INFO] [stderr] 47 | | map: HashMap::new(), [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 40 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/assets.rs:60:12 [INFO] [stderr] | [INFO] [stderr] 60 | Ok(self.map.get(&new_path).map(|v| v.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.map.get(&new_path).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / match self { [INFO] [stderr] 31 | | &Val::Empty => "EmptyValue".to_string(), [INFO] [stderr] 32 | | &Val::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 33 | | &Val::Int(_) => "Integer".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 40 | | &Val::Module(_) => "Module".to_string(), [INFO] [stderr] 41 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 30 | match *self { [INFO] [stderr] 31 | Val::Empty => "EmptyValue".to_string(), [INFO] [stderr] 32 | Val::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 33 | Val::Int(_) => "Integer".to_string(), [INFO] [stderr] 34 | Val::Float(_) => "Float".to_string(), [INFO] [stderr] 35 | Val::Str(_) => "String".to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match $slf { [INFO] [stderr] 37 | | $( [INFO] [stderr] 38 | | $l => { [INFO] [stderr] 39 | | if let $l = $r { [INFO] [stderr] ... | [INFO] [stderr] 45 | | )* [INFO] [stderr] 46 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/build/ir.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / enum_type_equality!( [INFO] [stderr] 47 | | self, [INFO] [stderr] 48 | | target, [INFO] [stderr] 49 | | &Val::Empty, [INFO] [stderr] ... | [INFO] [stderr] 58 | | &Val::Module(_) [INFO] [stderr] 59 | | ) [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | / if let $l = $r { [INFO] [stderr] 40 | | true [INFO] [stderr] 41 | | } else { [INFO] [stderr] 42 | | false [INFO] [stderr] 43 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] ::: src/build/ir.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / enum_type_equality!( [INFO] [stderr] 47 | | self, [INFO] [stderr] 48 | | target, [INFO] [stderr] 49 | | &Val::Empty, [INFO] [stderr] ... | [INFO] [stderr] 58 | | &Val::Module(_) [INFO] [stderr] 59 | | ) [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/build/ir.rs:73:61 [INFO] [stderr] | [INFO] [stderr] 73 | (&Val::Float(ref f), &Val::Float(ref ff)) => Ok(f == ff), [INFO] [stderr] | ^^^^^^^ help: consider comparing them within some error: `(f - ff).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/build/ir.rs:73:61 [INFO] [stderr] | [INFO] [stderr] 73 | (&Val::Float(ref f), &Val::Float(ref ff)) => Ok(f == ff), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / if let &Val::Tuple(ref fs) = self { [INFO] [stderr] 130 | | Some(fs) [INFO] [stderr] 131 | | } else { [INFO] [stderr] 132 | | None [INFO] [stderr] 133 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 129 | if let Val::Tuple(ref fs) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / if let &Val::Int(_) = self { [INFO] [stderr] 138 | | return true; [INFO] [stderr] 139 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 137 | if let Val::Int(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | / if let &Val::Empty = self { [INFO] [stderr] 145 | | return true; [INFO] [stderr] 146 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 144 | if let Val::Empty = *self { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | / if let &Val::Float(_) = self { [INFO] [stderr] 152 | | return true; [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 151 | if let Val::Float(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / if let &Val::Str(_) = self { [INFO] [stderr] 159 | | return true; [INFO] [stderr] 160 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 158 | if let Val::Str(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:165:9 [INFO] [stderr] | [INFO] [stderr] 165 | / if let &Val::Tuple(_) = self { [INFO] [stderr] 166 | | return true; [INFO] [stderr] 167 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 165 | if let Val::Tuple(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:172:9 [INFO] [stderr] | [INFO] [stderr] 172 | / if let &Val::Env(_) = self { [INFO] [stderr] 173 | | return true; [INFO] [stderr] 174 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 172 | if let Val::Env(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | / if let &Val::List(_) = self { [INFO] [stderr] 180 | | return true; [INFO] [stderr] 181 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 179 | if let Val::List(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:186:9 [INFO] [stderr] | [INFO] [stderr] 186 | / if let &Val::Macro(_) = self { [INFO] [stderr] 187 | | return true; [INFO] [stderr] 188 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 186 | if let Val::Macro(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | / match self { [INFO] [stderr] 196 | | &Val::Boolean(b) => write!(f, "Boolean({})", b), [INFO] [stderr] 197 | | &Val::Empty => write!(f, "EmptyValue"), [INFO] [stderr] 198 | | &Val::Float(ref ff) => write!(f, "Float({})", ff), [INFO] [stderr] ... | [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 195 | match *self { [INFO] [stderr] 196 | Val::Boolean(b) => write!(f, "Boolean({})", b), [INFO] [stderr] 197 | Val::Empty => write!(f, "EmptyValue"), [INFO] [stderr] 198 | Val::Float(ref ff) => write!(f, "Float({})", ff), [INFO] [stderr] 199 | Val::Int(ref i) => write!(f, "Int({})", i), [INFO] [stderr] 200 | Val::Str(ref s) => write!(f, "String({})", s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/build/mod.rs:49:10 [INFO] [stderr] | [INFO] [stderr] 49 | ) -> Result, Rc)>, Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/mod.rs:68:50 [INFO] [stderr] | [INFO] [stderr] 68 | scope.entry(self.argdefs[i].clone()).or_insert(arg.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| arg.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:190:40 [INFO] [stderr] | [INFO] [stderr] 190 | fn tuple_to_val(&mut self, fields: &Vec<(Token, Expression)>) -> Result, Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Token, Expression)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:208:9 [INFO] [stderr] | [INFO] [stderr] 208 | / match v { [INFO] [stderr] 209 | | &Value::Empty(_) => Ok(Rc::new(Val::Empty)), [INFO] [stderr] 210 | | &Value::Boolean(ref b) => Ok(Rc::new(Val::Boolean(b.val))), [INFO] [stderr] 211 | | &Value::Int(ref i) => Ok(Rc::new(Val::Int(i.val))), [INFO] [stderr] ... | [INFO] [stderr] 230 | | } [INFO] [stderr] 231 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 208 | match *v { [INFO] [stderr] 209 | Value::Empty(_) => Ok(Rc::new(Val::Empty)), [INFO] [stderr] 210 | Value::Boolean(ref b) => Ok(Rc::new(Val::Boolean(b.val))), [INFO] [stderr] 211 | Value::Int(ref i) => Ok(Rc::new(Val::Int(i.val))), [INFO] [stderr] 212 | Value::Float(ref f) => Ok(Rc::new(Val::Float(f.val))), [INFO] [stderr] 213 | Value::Str(ref s) => Ok(Rc::new(Val::Str(s.val.to_string()))), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:216:22 [INFO] [stderr] | [INFO] [stderr] 216 | .ok_or(Box::new(error::BuildError::new( [INFO] [stderr] | ______________________^ [INFO] [stderr] 217 | | format!( [INFO] [stderr] 218 | | "Unable to find {} in file: {}", [INFO] [stderr] 219 | | s.val, [INFO] [stderr] ... | [INFO] [stderr] 223 | | v.pos().clone(), [INFO] [stderr] 224 | | ))) [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] 216 | .ok_or_else(|| Box::new(error::BuildError::new( [INFO] [stderr] 217 | format!( [INFO] [stderr] 218 | "Unable to find {} in file: {}", [INFO] [stderr] 219 | s.val, [INFO] [stderr] 220 | self.file.to_string_lossy() [INFO] [stderr] 221 | ), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:252:34 [INFO] [stderr] | [INFO] [stderr] 252 | pub fn build(&mut self, ast: &Vec) -> BuildResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Statement]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:273:17 [INFO] [stderr] | [INFO] [stderr] 273 | format!("{}", err,), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/build/mod.rs:344:32 [INFO] [stderr] | [INFO] [stderr] 344 | let filepath = normalized.to_str().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 344 | let filepath = &(*normalized.to_str().unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 344 | let filepath = &str::clone(normalized.to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:396:9 [INFO] [stderr] | [INFO] [stderr] 396 | / match stmt { [INFO] [stderr] 397 | | &Statement::Assert(ref expr) => self.build_assert(&expr), [INFO] [stderr] 398 | | &Statement::Let(ref def) => self.build_let(def), [INFO] [stderr] 399 | | &Statement::Import(ref def) => self.build_import(def), [INFO] [stderr] ... | [INFO] [stderr] 415 | | } [INFO] [stderr] 416 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 396 | match *stmt { [INFO] [stderr] 397 | Statement::Assert(ref expr) => self.build_assert(&expr), [INFO] [stderr] 398 | Statement::Let(ref def) => self.build_let(def), [INFO] [stderr] 399 | Statement::Import(ref def) => self.build_import(def), [INFO] [stderr] 400 | Statement::Expression(ref expr) => self.eval_expr(expr), [INFO] [stderr] 401 | // Only one output can be used per file. Right now we enforce this by [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/build/mod.rs:404:24 [INFO] [stderr] | [INFO] [stderr] 404 | if let None = self.out_lock { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 405 | | let val = try!(self.eval_expr(expr)); [INFO] [stderr] 406 | | self.out_lock = Some((typ.fragment.to_string(), val.clone())); [INFO] [stderr] 407 | | Ok(val) [INFO] [stderr] ... | [INFO] [stderr] 413 | | ))) [INFO] [stderr] 414 | | } [INFO] [stderr] | |_________________- help: try this: `if self.out_lock.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | format!("You can only have one output per file."), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"You can only have one output per file.".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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:435:13 [INFO] [stderr] | [INFO] [stderr] 435 | fs: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/build/mod.rs:438:16 [INFO] [stderr] | [INFO] [stderr] 438 | if target == &key.val { [INFO] [stderr] | ^^^^^^^^^^-------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `key.val` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:449:13 [INFO] [stderr] | [INFO] [stderr] 449 | fs: &Vec<(String, String)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:476:13 [INFO] [stderr] | [INFO] [stderr] 476 | fs: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:502:16 [INFO] [stderr] | [INFO] [stderr] 502 | elems: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:528:9 [INFO] [stderr] | [INFO] [stderr] 528 | / match first.as_ref() { [INFO] [stderr] 529 | | &Val::Tuple(_) => { [INFO] [stderr] 530 | | stack.push_back(first.clone()); [INFO] [stderr] 531 | | } [INFO] [stderr] ... | [INFO] [stderr] 540 | | } [INFO] [stderr] 541 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 528 | match *first.as_ref() { [INFO] [stderr] 529 | Val::Tuple(_) => { [INFO] [stderr] 530 | stack.push_back(first.clone()); [INFO] [stderr] 531 | } [INFO] [stderr] 532 | Val::List(_) => { [INFO] [stderr] 533 | stack.push_back(first.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/build/mod.rs:543:9 [INFO] [stderr] | [INFO] [stderr] 543 | / if let &Some(ref tail) = &sl.tail { [INFO] [stderr] 544 | | if tail.len() == 0 { [INFO] [stderr] 545 | | return Ok(first); [INFO] [stderr] 546 | | } [INFO] [stderr] ... | [INFO] [stderr] 584 | | return Ok(first); [INFO] [stderr] 585 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 543 | if let Some(ref tail) = sl.tail { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:544:16 [INFO] [stderr] | [INFO] [stderr] 544 | if tail.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tail.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:556:17 [INFO] [stderr] | [INFO] [stderr] 556 | / match vref.as_ref() { [INFO] [stderr] 557 | | &Val::Tuple(ref fs) => { [INFO] [stderr] 558 | | try!(self.lookup_in_tuple(&mut stack, sl, (&next.pos, &next.fragment), fs)); [INFO] [stderr] 559 | | continue; [INFO] [stderr] ... | [INFO] [stderr] 580 | | } [INFO] [stderr] 581 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 556 | match *vref.as_ref() { [INFO] [stderr] 557 | Val::Tuple(ref fs) => { [INFO] [stderr] 558 | try!(self.lookup_in_tuple(&mut stack, sl, (&next.pos, &next.fragment), fs)); [INFO] [stderr] 559 | continue; [INFO] [stderr] 560 | } [INFO] [stderr] 561 | Val::Env(ref fs) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:747:9 [INFO] [stderr] | [INFO] [stderr] 747 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 748 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 749 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 750 | | } [INFO] [stderr] 751 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 747 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:748:13 [INFO] [stderr] | [INFO] [stderr] 748 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 749 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 750 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 748 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:752:9 [INFO] [stderr] | [INFO] [stderr] 752 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 753 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 754 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 755 | | } [INFO] [stderr] 756 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 752 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:753:13 [INFO] [stderr] | [INFO] [stderr] 753 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 754 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 755 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 753 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:770:9 [INFO] [stderr] | [INFO] [stderr] 770 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 771 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 772 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 773 | | } [INFO] [stderr] 774 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 770 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:771:13 [INFO] [stderr] | [INFO] [stderr] 771 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 772 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 773 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 771 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:775:9 [INFO] [stderr] | [INFO] [stderr] 775 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 776 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 777 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 778 | | } [INFO] [stderr] 779 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 775 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:776:13 [INFO] [stderr] | [INFO] [stderr] 776 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 777 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 778 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 776 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:797:9 [INFO] [stderr] | [INFO] [stderr] 797 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 798 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 799 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 800 | | } [INFO] [stderr] 801 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 797 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:798:13 [INFO] [stderr] | [INFO] [stderr] 798 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 799 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 800 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 798 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:802:9 [INFO] [stderr] | [INFO] [stderr] 802 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 803 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 804 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 805 | | } [INFO] [stderr] 806 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 802 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:803:13 [INFO] [stderr] | [INFO] [stderr] 803 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 804 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 805 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 803 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:824:9 [INFO] [stderr] | [INFO] [stderr] 824 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 825 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 826 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 827 | | } [INFO] [stderr] 828 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 824 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:825:13 [INFO] [stderr] | [INFO] [stderr] 825 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 826 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 827 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 825 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:829:9 [INFO] [stderr] | [INFO] [stderr] 829 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 830 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 831 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 832 | | } [INFO] [stderr] 833 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 829 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:830:13 [INFO] [stderr] | [INFO] [stderr] 830 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 831 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 832 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 830 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:849:9 [INFO] [stderr] | [INFO] [stderr] 849 | / match kind { [INFO] [stderr] 850 | | &BinaryExprType::Add => self.add_vals(&def.pos, left, right), [INFO] [stderr] 851 | | &BinaryExprType::Sub => self.subtract_vals(&def.pos, left, right), [INFO] [stderr] 852 | | &BinaryExprType::Mul => self.multiply_vals(&def.pos, left, right), [INFO] [stderr] 853 | | &BinaryExprType::Div => self.divide_vals(&def.pos, left, right), [INFO] [stderr] 854 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 849 | match *kind { [INFO] [stderr] 850 | BinaryExprType::Add => self.add_vals(&def.pos, left, right), [INFO] [stderr] 851 | BinaryExprType::Sub => self.subtract_vals(&def.pos, left, right), [INFO] [stderr] 852 | BinaryExprType::Mul => self.multiply_vals(&def.pos, left, right), [INFO] [stderr] 853 | BinaryExprType::Div => self.divide_vals(&def.pos, left, right), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:861:9 [INFO] [stderr] | [INFO] [stderr] 861 | / match kind { [INFO] [stderr] 862 | | &CompareType::Equal => self.do_deep_equal(&def.pos, left, right), [INFO] [stderr] 863 | | &CompareType::GT => self.do_gt(&def.pos, left, right), [INFO] [stderr] 864 | | &CompareType::LT => self.do_lt(&def.pos, left, right), [INFO] [stderr] ... | [INFO] [stderr] 867 | | &CompareType::NotEqual => self.do_not_deep_equal(&def.pos, left, right), [INFO] [stderr] 868 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 861 | match *kind { [INFO] [stderr] 862 | CompareType::Equal => self.do_deep_equal(&def.pos, left, right), [INFO] [stderr] 863 | CompareType::GT => self.do_gt(&def.pos, left, right), [INFO] [stderr] 864 | CompareType::LT => self.do_lt(&def.pos, left, right), [INFO] [stderr] 865 | CompareType::GTEqual => self.do_gtequal(&def.pos, left, right), [INFO] [stderr] 866 | CompareType::LTEqual => self.do_ltequal(&def.pos, left, right), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:891:13 [INFO] [stderr] | [INFO] [stderr] 891 | v.first().map(|v| v.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:904:21 [INFO] [stderr] | [INFO] [stderr] 904 | src_fields: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:905:20 [INFO] [stderr] | [INFO] [stderr] 905 | overrides: &Vec<(Token, Expression)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Token, Expression)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/build/mod.rs:962:29 [INFO] [stderr] | [INFO] [stderr] 962 | let mut new_fields: Vec<(PositionedItem, (i32, Rc))> = m.drain().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:983:9 [INFO] [stderr] | [INFO] [stderr] 983 | / if let &Val::Tuple(ref src_fields) = v.as_ref() { [INFO] [stderr] 984 | | self.push_val(v.clone()); [INFO] [stderr] 985 | | return self.copy_from_base(&src_fields, &def.fields); [INFO] [stderr] 986 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 983 | if let Val::Tuple(ref src_fields) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:987:9 [INFO] [stderr] | [INFO] [stderr] 987 | / if let &Val::Module(ref mod_def) = v.as_ref() { [INFO] [stderr] 988 | | let maybe_tpl = mod_def.clone().arg_tuple.unwrap().clone(); [INFO] [stderr] 989 | | if let &Val::Tuple(ref src_fields) = maybe_tpl.as_ref() { [INFO] [stderr] 990 | | // 1. First we create a builder. [INFO] [stderr] ... | [INFO] [stderr] 1033 | | } [INFO] [stderr] 1034 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 987 | if let Val::Module(ref mod_def) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:989:13 [INFO] [stderr] | [INFO] [stderr] 989 | / if let &Val::Tuple(ref src_fields) = maybe_tpl.as_ref() { [INFO] [stderr] 990 | | // 1. First we create a builder. [INFO] [stderr] 991 | | let mut b = Self::new(self.file.clone(), self.assets.clone()); [INFO] [stderr] 992 | | b.is_module = true; [INFO] [stderr] ... | [INFO] [stderr] 1032 | | ))); [INFO] [stderr] 1033 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 989 | if let Val::Tuple(ref src_fields) = *maybe_tpl.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1059:9 [INFO] [stderr] | [INFO] [stderr] 1059 | / if let &Val::Macro(ref m) = v.deref() { [INFO] [stderr] 1060 | | // Congratulations this is actually a macro. [INFO] [stderr] 1061 | | let mut argvals: Vec> = Vec::new(); [INFO] [stderr] 1062 | | for arg in args.iter() { [INFO] [stderr] ... | [INFO] [stderr] 1071 | | return Ok(Rc::new(Val::Tuple(fields))); [INFO] [stderr] 1072 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1059 | if let Val::Macro(ref m) = *v.deref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1125:9 [INFO] [stderr] | [INFO] [stderr] 1125 | / if let &Val::Str(ref name) = v.deref() { [INFO] [stderr] 1126 | | // Third find the field with that name in the tuple. [INFO] [stderr] 1127 | | for &(ref fname, ref val_expr) in fields.iter() { [INFO] [stderr] 1128 | | if &fname.fragment == name { [INFO] [stderr] ... | [INFO] [stderr] 1155 | | ))); [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1125 | if let Val::Str(ref name) = *v.deref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1135:16 [INFO] [stderr] | [INFO] [stderr] 1135 | } else if let &Val::Boolean(b) = v.deref() { [INFO] [stderr] | ________________^ [INFO] [stderr] 1136 | | for &(ref fname, ref val_expr) in fields.iter() { [INFO] [stderr] 1137 | | if &fname.fragment == "true" && b { [INFO] [stderr] 1138 | | // Fourth return the result of evaluating that field. [INFO] [stderr] ... | [INFO] [stderr] 1155 | | ))); [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1135 | } else if let Val::Boolean(b) = *v.deref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/build/mod.rs:1140:60 [INFO] [stderr] | [INFO] [stderr] 1140 | } else if &fname.fragment == "false" && !b { [INFO] [stderr] | ____________________________________________________________^ [INFO] [stderr] 1141 | | return self.eval_expr(val_expr); [INFO] [stderr] 1142 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/build/mod.rs:1137:51 [INFO] [stderr] | [INFO] [stderr] 1137 | if &fname.fragment == "true" && b { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 1138 | | // Fourth return the result of evaluating that field. [INFO] [stderr] 1139 | | return self.eval_expr(val_expr); [INFO] [stderr] 1140 | | } else if &fname.fragment == "false" && !b { [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1172:9 [INFO] [stderr] | [INFO] [stderr] 1172 | / if let &Val::Macro(ref macdef) = try!(self.lookup_selector(&mac.sel)).as_ref() { [INFO] [stderr] 1173 | | let mut out = Vec::new(); [INFO] [stderr] 1174 | | for item in l.iter() { [INFO] [stderr] 1175 | | let argvals = vec![item.clone()]; [INFO] [stderr] ... | [INFO] [stderr] 1200 | | return Ok(Rc::new(Val::List(out))); [INFO] [stderr] 1201 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1172 | if let Val::Macro(ref macdef) = *try!(self.lookup_selector(&mac.sel)).as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1188:29 [INFO] [stderr] | [INFO] [stderr] 1188 | / if let &Val::Empty = v.as_ref() { [INFO] [stderr] 1189 | | // noop [INFO] [stderr] 1190 | | continue; [INFO] [stderr] 1191 | | } else if let &Val::Boolean(false) = v.as_ref() { [INFO] [stderr] 1192 | | // noop [INFO] [stderr] 1193 | | continue; [INFO] [stderr] 1194 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1188 | if let Val::Empty = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1191:36 [INFO] [stderr] | [INFO] [stderr] 1191 | } else if let &Val::Boolean(false) = v.as_ref() { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 1192 | | // noop [INFO] [stderr] 1193 | | continue; [INFO] [stderr] 1194 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1191 | } else if let Val::Boolean(false) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1232:9 [INFO] [stderr] | [INFO] [stderr] 1232 | / if let &Val::Boolean(b) = ok.as_ref() { [INFO] [stderr] 1233 | | // record the assertion result. [INFO] [stderr] 1234 | | if b { [INFO] [stderr] 1235 | | // success! [INFO] [stderr] ... | [INFO] [stderr] 1259 | | self.assert_collector.summary.push_str(&msg); [INFO] [stderr] 1260 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1232 | if let Val::Boolean(b) = *ok.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1267:9 [INFO] [stderr] | [INFO] [stderr] 1267 | / match expr { [INFO] [stderr] 1268 | | &Expression::Simple(ref val) => self.value_to_val(val), [INFO] [stderr] 1269 | | &Expression::Binary(ref def) => self.eval_binary(def), [INFO] [stderr] 1270 | | &Expression::Compare(ref def) => self.eval_compare(def), [INFO] [stderr] ... | [INFO] [stderr] 1278 | | &Expression::ListOp(ref def) => self.eval_list_op(def), [INFO] [stderr] 1279 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1267 | match *expr { [INFO] [stderr] 1268 | Expression::Simple(ref val) => self.value_to_val(val), [INFO] [stderr] 1269 | Expression::Binary(ref def) => self.eval_binary(def), [INFO] [stderr] 1270 | Expression::Compare(ref def) => self.eval_compare(def), [INFO] [stderr] 1271 | Expression::Copy(ref def) => self.eval_copy(def), [INFO] [stderr] 1272 | Expression::Grouped(ref expr) => self.eval_expr(expr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::env::EnvConverter` [INFO] [stderr] --> src/convert/env.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> Self { [INFO] [stderr] 29 | | EnvConverter {} [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/env.rs:34:15 [INFO] [stderr] | [INFO] [stderr] 34 | flds: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/env.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / if let &Val::Empty = val.as_ref() { [INFO] [stderr] 43 | | eprintln!("Skipping empty variable: {}", name); [INFO] [stderr] 44 | | return Ok(()); [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | if let Val::Empty = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/env.rs:52:36 [INFO] [stderr] | [INFO] [stderr] 52 | fn convert_list(&self, _items: &Vec>, _w: &mut Write) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/env.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | / match v { [INFO] [stderr] 59 | | &Val::Empty => { [INFO] [stderr] 60 | | // Empty is a noop. [INFO] [stderr] 61 | | return Ok(()); [INFO] [stderr] ... | [INFO] [stderr] 92 | | } [INFO] [stderr] 93 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 58 | match *v { [INFO] [stderr] 59 | Val::Empty => { [INFO] [stderr] 60 | // Empty is a noop. [INFO] [stderr] 61 | return Ok(()); [INFO] [stderr] 62 | } [INFO] [stderr] 63 | Val::Boolean(b) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::exec::ExecConverter` [INFO] [stderr] --> src/convert/exec.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / pub fn new() -> Self { [INFO] [stderr] 37 | | ExecConverter {} [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / if let &Tuple(ref fields) = v { [INFO] [stderr] 44 | | // We expect no more than three fields in our exec tuple. [INFO] [stderr] 45 | | if fields.len() > 3 { [INFO] [stderr] 46 | | return Err(Box::new(BuildError::new( [INFO] [stderr] ... | [INFO] [stderr] 170 | | return Ok(()); [INFO] [stderr] 171 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 43 | if let Tuple(ref fields) = *v { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:65:21 [INFO] [stderr] | [INFO] [stderr] 65 | / if let &Val::Str(ref s) = val.as_ref() { [INFO] [stderr] 66 | | command = Some(s); [INFO] [stderr] 67 | | continue; [INFO] [stderr] 68 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | if let Val::Str(ref s) = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | / if let &Val::Tuple(ref l) = val.as_ref() { [INFO] [stderr] 78 | | if env.is_some() { [INFO] [stderr] 79 | | return Err(Box::new(BuildError::new( [INFO] [stderr] 80 | | "There can only be one env field in an exec tuple", [INFO] [stderr] ... | [INFO] [stderr] 86 | | continue; [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 77 | if let Val::Tuple(ref l) = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:96:21 [INFO] [stderr] | [INFO] [stderr] 96 | / if let &Val::List(ref l) = val.as_ref() { [INFO] [stderr] 97 | | if args.is_some() { [INFO] [stderr] 98 | | return Err(Box::new(BuildError::new( [INFO] [stderr] 99 | | "There can only be one args field of an exec tuple", [INFO] [stderr] ... | [INFO] [stderr] 105 | | continue; [INFO] [stderr] 106 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 96 | if let Val::List(ref l) = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:132:21 [INFO] [stderr] | [INFO] [stderr] 132 | / if let &Val::Str(ref s) = v.as_ref() { [INFO] [stderr] 133 | | try!(write!(script, "{}=\"{}\"\n", name.val, s)); [INFO] [stderr] 134 | | continue; [INFO] [stderr] 135 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 132 | if let Val::Str(ref s) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:151:21 [INFO] [stderr] | [INFO] [stderr] 151 | / match v.as_ref() { [INFO] [stderr] 152 | | &Val::Str(ref s) => { [INFO] [stderr] 153 | | try!(write!(script, "{} ", s)); [INFO] [stderr] 154 | | } [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 151 | match *v.as_ref() { [INFO] [stderr] 152 | Val::Str(ref s) => { [INFO] [stderr] 153 | try!(write!(script, "{} ", s)); [INFO] [stderr] 154 | } [INFO] [stderr] 155 | Val::Tuple(_) => try!(flag_converter.convert(v.clone(), &mut script)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::flags::FlagConverter` [INFO] [stderr] --> src/convert/flags.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Self { [INFO] [stderr] 28 | | FlagConverter {} [INFO] [stderr] 29 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 24 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/flags.rs:40:59 [INFO] [stderr] | [INFO] [stderr] 40 | fn write_list_flag(&self, pfx: &str, name: &str, def: &Vec>, w: &mut Write) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/flags.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | / match v { [INFO] [stderr] 59 | | &Val::Empty => { [INFO] [stderr] 60 | | // Empty is a noop. [INFO] [stderr] 61 | | return Ok(()); [INFO] [stderr] ... | [INFO] [stderr] 108 | | } [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 58 | match *v { [INFO] [stderr] 59 | Val::Empty => { [INFO] [stderr] 60 | // Empty is a noop. [INFO] [stderr] 61 | return Ok(()); [INFO] [stderr] 62 | } [INFO] [stderr] 63 | Val::Boolean(b) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/flags.rs:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | / if let &Val::Empty = val.as_ref() { [INFO] [stderr] 80 | | try!(self.write_flag_name(pfx, &name.val, w)); [INFO] [stderr] 81 | | continue; [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 79 | if let Val::Empty = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/flags.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | / match val.as_ref() { [INFO] [stderr] 84 | | &Val::Tuple(_) => { [INFO] [stderr] 85 | | let new_pfx = format!("{}{}.", pfx, name); [INFO] [stderr] 86 | | try!(self.write(&new_pfx, val, w)); [INFO] [stderr] ... | [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 83 | match *val.as_ref() { [INFO] [stderr] 84 | Val::Tuple(_) => { [INFO] [stderr] 85 | let new_pfx = format!("{}{}.", pfx, name); [INFO] [stderr] 86 | try!(self.write(&new_pfx, val, w)); [INFO] [stderr] 87 | } [INFO] [stderr] 88 | Val::List(ref def) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::json::JsonConverter` [INFO] [stderr] --> src/convert/json.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new() -> Self { [INFO] [stderr] 26 | | JsonConverter {} [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/json.rs:29:35 [INFO] [stderr] | [INFO] [stderr] 29 | fn convert_list(&self, items: &Vec>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/json.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | items: &Vec<(ast::PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ast::PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/json.rs:49:34 [INFO] [stderr] | [INFO] [stderr] 49 | fn convert_env(&self, items: &Vec<(String, String)>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/json.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | let jsn_val = match v { [INFO] [stderr] | _______________________^ [INFO] [stderr] 60 | | &Val::Boolean(b) => serde_json::Value::Bool(b), [INFO] [stderr] 61 | | &Val::Empty => serde_json::Value::Null, [INFO] [stderr] 62 | | &Val::Float(f) => { [INFO] [stderr] ... | [INFO] [stderr] 89 | | &Val::Tuple(ref t) => try!(self.convert_tuple(t)), [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 59 | let jsn_val = match *v { [INFO] [stderr] 60 | Val::Boolean(b) => serde_json::Value::Bool(b), [INFO] [stderr] 61 | Val::Empty => serde_json::Value::Null, [INFO] [stderr] 62 | Val::Float(f) => { [INFO] [stderr] 63 | let n = match serde_json::Number::from_f64(f) { [INFO] [stderr] 64 | Some(n) => n, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::toml::TomlConverter` [INFO] [stderr] --> src/convert/toml.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | / pub fn new() -> Self { [INFO] [stderr] 33 | | TomlConverter {} [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/toml.rs:36:35 [INFO] [stderr] | [INFO] [stderr] 36 | fn convert_list(&self, items: &Vec>) -> ConvertResult { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/toml.rs:44:36 [INFO] [stderr] | [INFO] [stderr] 44 | fn convert_tuple(&self, items: &Vec<(ast::PositionedItem, Rc)>) -> ConvertResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ast::PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/toml.rs:53:34 [INFO] [stderr] | [INFO] [stderr] 53 | fn convert_env(&self, items: &Vec<(String, String)>) -> ConvertResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/convert/toml.rs:57:18 [INFO] [stderr] | [INFO] [stderr] 57 | .or_insert(toml::Value::String(v.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| toml::Value::String(v.clone()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/toml.rs:63:24 [INFO] [stderr] | [INFO] [stderr] 63 | let toml_val = match v { [INFO] [stderr] | ________________________^ [INFO] [stderr] 64 | | &Val::Boolean(b) => toml::Value::Boolean(b), [INFO] [stderr] 65 | | // TODO(jwall): This is an error apparently [INFO] [stderr] 66 | | &Val::Empty => { [INFO] [stderr] ... | [INFO] [stderr] 83 | | &Val::Tuple(ref t) => try!(self.convert_tuple(t)), [INFO] [stderr] 84 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 63 | let toml_val = match *v { [INFO] [stderr] 64 | Val::Boolean(b) => toml::Value::Boolean(b), [INFO] [stderr] 65 | // TODO(jwall): This is an error apparently [INFO] [stderr] 66 | Val::Empty => { [INFO] [stderr] 67 | let err = SimpleError::new("Nulls are not allowed in Toml Conversions!"); [INFO] [stderr] 68 | return Err(Box::new(err)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::yaml::YamlConverter` [INFO] [stderr] --> src/convert/yaml.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | YamlConverter {} [INFO] [stderr] 16 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/yaml.rs:18:35 [INFO] [stderr] | [INFO] [stderr] 18 | fn convert_list(&self, items: &Vec>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/yaml.rs:26:34 [INFO] [stderr] | [INFO] [stderr] 26 | fn convert_env(&self, items: &Vec<(String, String)>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/yaml.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | items: &Vec<(ast::PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ast::PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/yaml.rs:52:24 [INFO] [stderr] | [INFO] [stderr] 52 | let yaml_val = match v { [INFO] [stderr] | ________________________^ [INFO] [stderr] 53 | | &Val::Boolean(b) => serde_yaml::Value::Bool(b), [INFO] [stderr] 54 | | &Val::Empty => serde_yaml::Value::Null, [INFO] [stderr] 55 | | &Val::Float(f) => match serde_yaml::to_value(f) { [INFO] [stderr] ... | [INFO] [stderr] 74 | | &Val::Tuple(ref t) => try!(self.convert_tuple(t)), [INFO] [stderr] 75 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 52 | let yaml_val = match *v { [INFO] [stderr] 53 | Val::Boolean(b) => serde_yaml::Value::Bool(b), [INFO] [stderr] 54 | Val::Empty => serde_yaml::Value::Null, [INFO] [stderr] 55 | Val::Float(f) => match serde_yaml::to_value(f) { [INFO] [stderr] 56 | Ok(v) => v, [INFO] [stderr] 57 | _ => panic!("Float is too large or not a Number {}", f), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/convert/mod.rs:63:55 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn get_converter_list(&self) -> Vec<(&String, &Box)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&traits::Converter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/error.rs:42:20 [INFO] [stderr] | [INFO] [stderr] 42 | let name = match self { [INFO] [stderr] | ____________________^ [INFO] [stderr] 43 | | &ErrorType::TypeFail => "TypeFail", [INFO] [stderr] 44 | | &ErrorType::DuplicateBinding => "DuplicateBinding", [INFO] [stderr] 45 | | &ErrorType::Unsupported => "Unsupported", [INFO] [stderr] ... | [INFO] [stderr] 51 | | &ErrorType::AssertError => "AssertError", [INFO] [stderr] 52 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | let name = match *self { [INFO] [stderr] 43 | ErrorType::TypeFail => "TypeFail", [INFO] [stderr] 44 | ErrorType::DuplicateBinding => "DuplicateBinding", [INFO] [stderr] 45 | ErrorType::Unsupported => "Unsupported", [INFO] [stderr] 46 | ErrorType::NoSuchSymbol => "NoSuchSymbol", [INFO] [stderr] 47 | ErrorType::BadArgLen => "BadArgLen", [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/parse/mod.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | / fn triple_to_number<'a>( [INFO] [stderr] 99 | | input: SliceIter<'a, Token>, [INFO] [stderr] 100 | | v: (Option, Option, Option), [INFO] [stderr] 101 | | ) -> ParseResult<'a, Value> { [INFO] [stderr] ... | [INFO] [stderr] 141 | | return Ok(Value::Float(value_node!(f, pref_pos))); [INFO] [stderr] 142 | | } [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: the function has a cyclomatic complexity of 45 [INFO] [stderr] --> src/parse/mod.rs:244:1 [INFO] [stderr] | [INFO] [stderr] 244 | / fn number(input: SliceIter) -> Result, Value> { [INFO] [stderr] 245 | | let parsed = do_each!(input, [INFO] [stderr] 246 | | num => either!( [INFO] [stderr] 247 | | complete!( [INFO] [stderr] ... | [INFO] [stderr] 286 | | } [INFO] [stderr] 287 | | } [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/parse/mod.rs:314:30 [INFO] [stderr] | [INFO] [stderr] 314 | Value::Tuple(value_node!(fields.unwrap_or(Vec::new()), pos)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `fields.unwrap_or_default()` [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: redundant closure found [INFO] [stderr] --> src/parse/mod.rs:336:37 [INFO] [stderr] | [INFO] [stderr] 336 | elems: elems.unwrap_or_else(|| Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [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: identical conversion [INFO] [stderr] --> src/parse/mod.rs:357:23 [INFO] [stderr] | [INFO] [stderr] 357 | (Value::Empty(pos.into())) [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 43 [INFO] [stderr] --> src/parse/mod.rs:447:1 [INFO] [stderr] | [INFO] [stderr] 447 | / fn selector_list(input: SliceIter) -> NomResult { [INFO] [stderr] 448 | | let (rest, head) = match symbol_or_expression(input) { [INFO] [stderr] 449 | | Result::Complete(rest, val) => (rest, val), [INFO] [stderr] 450 | | Result::Fail(e) => { [INFO] [stderr] ... | [INFO] [stderr] 497 | | return Result::Complete(rest, sel_list); [INFO] [stderr] 498 | | } [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: the function has a cyclomatic complexity of 39 [INFO] [stderr] --> src/parse/mod.rs:560:1 [INFO] [stderr] | [INFO] [stderr] 560 | / fn module_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 561 | | let parsed = do_each!(input, [INFO] [stderr] 562 | | pos => pos, [INFO] [stderr] 563 | | _ => word!("module"), [INFO] [stderr] ... | [INFO] [stderr] 588 | | } [INFO] [stderr] 589 | | } [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: redundant closure found [INFO] [stderr] --> src/parse/mod.rs:579:61 [INFO] [stderr] | [INFO] [stderr] 579 | let def = ModuleDef::new(arglist.unwrap_or_else(|| Vec::new()), stmt_list, pos); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [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: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/parse/mod.rs:591:1 [INFO] [stderr] | [INFO] [stderr] 591 | / fn macro_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 592 | | let parsed = do_each!(input, [INFO] [stderr] 593 | | pos => pos, [INFO] [stderr] 594 | | _ => word!("macro"), [INFO] [stderr] ... | [INFO] [stderr] 616 | | } [INFO] [stderr] 617 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parse/mod.rs:619:1 [INFO] [stderr] | [INFO] [stderr] 619 | / fn tuple_to_select<'a>( [INFO] [stderr] 620 | | input: SliceIter<'a, Token>, [INFO] [stderr] 621 | | e1: Expression, [INFO] [stderr] 622 | | e2: Expression, [INFO] [stderr] ... | [INFO] [stderr] 636 | | } [INFO] [stderr] 637 | | } [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: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/parse/mod.rs:639:1 [INFO] [stderr] | [INFO] [stderr] 639 | / fn select_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 640 | | let parsed = do_each!(input, [INFO] [stderr] 641 | | _ => word!("select"), [INFO] [stderr] 642 | | val => do_each!( [INFO] [stderr] ... | [INFO] [stderr] 669 | | } [INFO] [stderr] 670 | | } [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: redundant closure found [INFO] [stderr] --> src/parse/mod.rs:700:43 [INFO] [stderr] | [INFO] [stderr] 700 | arglist: exprs.unwrap_or_else(|| Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [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: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/parse/mod.rs:723:1 [INFO] [stderr] | [INFO] [stderr] 723 | / fn call_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 724 | | let parsed = do_each!(input.clone(), [INFO] [stderr] 725 | | callee_name => trace_nom!(selector_value), [INFO] [stderr] 726 | | _ => punct!("("), [INFO] [stderr] ... | [INFO] [stderr] 743 | | } [INFO] [stderr] 744 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parse/mod.rs:755:33 [INFO] [stderr] | [INFO] [stderr] 755 | let fieldname: String = match &mut def.sel.tail { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 756 | | &mut None => { [INFO] [stderr] 757 | | if ENABLE_TRACE { [INFO] [stderr] 758 | | eprintln!( [INFO] [stderr] ... | [INFO] [stderr] 783 | | } [INFO] [stderr] 784 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 755 | let fieldname: String = match *(&mut def.sel.tail) { [INFO] [stderr] 756 | None => { [INFO] [stderr] 757 | if ENABLE_TRACE { [INFO] [stderr] 758 | eprintln!( [INFO] [stderr] 759 | "tuple_to_list_op had error {}", [INFO] [stderr] 760 | "Missing a result field for the macro" [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parse/mod.rs:764:21 [INFO] [stderr] | [INFO] [stderr] 764 | format!("Missing a result field for the macro"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Missing a result field for the macro".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: length comparison to one [INFO] [stderr] --> src/parse/mod.rs:769:20 [INFO] [stderr] | [INFO] [stderr] 769 | if tl.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tl.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: useless use of `format!` [INFO] [stderr] --> src/parse/mod.rs:777:25 [INFO] [stderr] | [INFO] [stderr] 777 | format!("Missing a result field for the macro"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Missing a result field for the macro".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: the function has a cyclomatic complexity of 51 [INFO] [stderr] --> src/parse/mod.rs:946:1 [INFO] [stderr] | [INFO] [stderr] 946 | / fn statement(i: SliceIter) -> Result, Statement> { [INFO] [stderr] 947 | | return alt_peek!(i, [INFO] [stderr] 948 | | word!("assert") => trace_nom!(assert_statement) | [INFO] [stderr] 949 | | word!("import") => trace_nom!(import_statement) | [INFO] [stderr] ... | [INFO] [stderr] 953 | | ); [INFO] [stderr] 954 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parse/mod.rs:958:1 [INFO] [stderr] | [INFO] [stderr] 958 | / pub fn parse<'a>(input: OffsetStrIter<'a>) -> std::result::Result, String> { [INFO] [stderr] 959 | | match tokenize(input.clone()) { [INFO] [stderr] 960 | | Ok(tokenized) => { [INFO] [stderr] 961 | | let mut out = Vec::new(); [INFO] [stderr] ... | [INFO] [stderr] 1001 | | } [INFO] [stderr] 1002 | | } [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: useless use of `format!` [INFO] [stderr] --> src/parse/precedence.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | format!("Expected Expression found End Of Input"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expected Expression found End Of Input".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/parse/precedence.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | format!("Expected Expression found End Of Input"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expected Expression found End Of Input".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/parse/precedence.rs:229:13 [INFO] [stderr] | [INFO] [stderr] 229 | format!("Expected Expression found End Of Input"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expected Expression found End Of Input".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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parse/precedence.rs:315:1 [INFO] [stderr] | [INFO] [stderr] 315 | / pub fn op_expression<'a>(i: SliceIter<'a, Token>) -> Result, Expression> { [INFO] [stderr] 316 | | let preparse = parse_operand_list(i.clone()); [INFO] [stderr] 317 | | match preparse { [INFO] [stderr] 318 | | Result::Fail(e) => { [INFO] [stderr] ... | [INFO] [stderr] 363 | | } [INFO] [stderr] 364 | | } [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] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ucg`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:358:9 [INFO] [stderr] | [INFO] [stderr] 358 | / match self { [INFO] [stderr] 359 | | &Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 360 | | &Value::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 361 | | &Value::Int(_) => "Integer".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 367 | | &Value::Selector(_) => "Selector".to_string(), [INFO] [stderr] 368 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 358 | match *self { [INFO] [stderr] 359 | Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 360 | Value::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 361 | Value::Int(_) => "Integer".to_string(), [INFO] [stderr] 362 | Value::Float(_) => "Float".to_string(), [INFO] [stderr] 363 | Value::Str(_) => "String".to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/mod.rs:371:28 [INFO] [stderr] | [INFO] [stderr] 371 | fn fields_to_string(v: &FieldList) -> String { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ast/mod.rs:374:13 [INFO] [stderr] | [INFO] [stderr] 374 | for ref t in v.iter() { [INFO] [stderr] | ^^^^^ -------- help: try: `let t = &v.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast/mod.rs:383:27 [INFO] [stderr] | [INFO] [stderr] 383 | fn elems_to_string(v: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Expression]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:389:9 [INFO] [stderr] | [INFO] [stderr] 389 | / match self { [INFO] [stderr] 390 | | &Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 391 | | &Value::Boolean(ref b) => format!("{}", b.val), [INFO] [stderr] 392 | | &Value::Int(ref i) => format!("{}", i.val), [INFO] [stderr] ... | [INFO] [stderr] 398 | | &Value::Selector(ref v) => v.sel.to_string(), [INFO] [stderr] 399 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 389 | match *self { [INFO] [stderr] 390 | Value::Empty(_) => "EmptyValue".to_string(), [INFO] [stderr] 391 | Value::Boolean(ref b) => format!("{}", b.val), [INFO] [stderr] 392 | Value::Int(ref i) => format!("{}", i.val), [INFO] [stderr] 393 | Value::Float(ref f) => format!("{}", f.val), [INFO] [stderr] 394 | Value::Str(ref s) => format!("{}", s.val), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ast/mod.rs:394:35 [INFO] [stderr] | [INFO] [stderr] 394 | &Value::Str(ref s) => format!("{}", s.val), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.val.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ast/mod.rs:395:38 [INFO] [stderr] | [INFO] [stderr] 395 | &Value::Symbol(ref s) => format!("{}", s.val), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.val.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/ast/mod.rs:396:38 [INFO] [stderr] | [INFO] [stderr] 396 | &Value::Tuple(ref fs) => format!("{}", Self::fields_to_string(&fs.val)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `Self::fields_to_string(&fs.val).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:404:9 [INFO] [stderr] | [INFO] [stderr] 404 | / match self { [INFO] [stderr] 405 | | &Value::Empty(ref pos) => pos, [INFO] [stderr] 406 | | &Value::Boolean(ref b) => &b.pos, [INFO] [stderr] 407 | | &Value::Int(ref i) => &i.pos, [INFO] [stderr] ... | [INFO] [stderr] 413 | | &Value::Selector(ref v) => &v.pos, [INFO] [stderr] 414 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 404 | match *self { [INFO] [stderr] 405 | Value::Empty(ref pos) => pos, [INFO] [stderr] 406 | Value::Boolean(ref b) => &b.pos, [INFO] [stderr] 407 | Value::Int(ref i) => &i.pos, [INFO] [stderr] 408 | Value::Float(ref f) => &f.pos, [INFO] [stderr] 409 | Value::Str(ref s) => &s.pos, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match $slf { [INFO] [stderr] 37 | | $( [INFO] [stderr] 38 | | $l => { [INFO] [stderr] 39 | | if let $l = $r { [INFO] [stderr] ... | [INFO] [stderr] 45 | | )* [INFO] [stderr] 46 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 419 | / enum_type_equality!( [INFO] [stderr] 420 | | self, [INFO] [stderr] 421 | | target, [INFO] [stderr] 422 | | &Value::Empty(_), [INFO] [stderr] ... | [INFO] [stderr] 430 | | &Value::Selector(_) [INFO] [stderr] 431 | | ) [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | / if let $l = $r { [INFO] [stderr] 40 | | true [INFO] [stderr] 41 | | } else { [INFO] [stderr] 42 | | false [INFO] [stderr] 43 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 419 | / enum_type_equality!( [INFO] [stderr] 420 | | self, [INFO] [stderr] 421 | | target, [INFO] [stderr] 422 | | &Value::Empty(_), [INFO] [stderr] ... | [INFO] [stderr] 430 | | &Value::Selector(_) [INFO] [stderr] 431 | | ) [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/ast/mod.rs:535:38 [INFO] [stderr] | [INFO] [stderr] 535 | fn symbol_is_in_args(&self, sym: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:550:9 [INFO] [stderr] | [INFO] [stderr] 550 | / if let &Value::Symbol(ref name) = val { [INFO] [stderr] 551 | | if !self.symbol_is_in_args(&name.val) { [INFO] [stderr] 552 | | bad_symbols.insert(name.val.clone()); [INFO] [stderr] 553 | | } [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 550 | if let Value::Symbol(ref name) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:554:16 [INFO] [stderr] | [INFO] [stderr] 554 | } else if let &Value::Selector(ref sel_node) = val { [INFO] [stderr] | ________________^ [INFO] [stderr] 555 | | stack.push(&sel_node.sel.head); [INFO] [stderr] 556 | | } else if let &Value::Tuple(ref tuple_node) = val { [INFO] [stderr] 557 | | let fields = &tuple_node.val; [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 554 | } else if let Value::Selector(ref sel_node) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:556:16 [INFO] [stderr] | [INFO] [stderr] 556 | } else if let &Value::Tuple(ref tuple_node) = val { [INFO] [stderr] | ________________^ [INFO] [stderr] 557 | | let fields = &tuple_node.val; [INFO] [stderr] 558 | | for &(_, ref expr) in fields.iter() { [INFO] [stderr] 559 | | stack.push(expr); [INFO] [stderr] ... | [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 556 | } else if let Value::Tuple(ref tuple_node) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:561:16 [INFO] [stderr] | [INFO] [stderr] 561 | } else if let &Value::List(ref def) = val { [INFO] [stderr] | ________________^ [INFO] [stderr] 562 | | for elem in def.elems.iter() { [INFO] [stderr] 563 | | stack.push(elem); [INFO] [stderr] 564 | | } [INFO] [stderr] 565 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 561 | } else if let Value::List(ref def) = *val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ast/mod.rs:576:19 [INFO] [stderr] | [INFO] [stderr] 576 | while stack.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!stack.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 don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:577:17 [INFO] [stderr] | [INFO] [stderr] 577 | / match stack.pop().unwrap() { [INFO] [stderr] 578 | | &Expression::Binary(ref bexpr) => { [INFO] [stderr] 579 | | stack.push(&bexpr.left); [INFO] [stderr] 580 | | stack.push(&bexpr.right); [INFO] [stderr] ... | [INFO] [stderr] 626 | | } [INFO] [stderr] 627 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 577 | match *stack.pop().unwrap() { [INFO] [stderr] 578 | Expression::Binary(ref bexpr) => { [INFO] [stderr] 579 | stack.push(&bexpr.left); [INFO] [stderr] 580 | stack.push(&bexpr.right); [INFO] [stderr] 581 | } [INFO] [stderr] 582 | Expression::Compare(ref cexpr) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ast/mod.rs:630:12 [INFO] [stderr] | [INFO] [stderr] 630 | if bad_symbols.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bad_symbols.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:738:13 [INFO] [stderr] | [INFO] [stderr] 738 | / if let &mut Statement::Import(ref mut def) = stmt { [INFO] [stderr] 739 | | let mut path = PathBuf::from(&def.path.fragment); [INFO] [stderr] 740 | | if path.is_relative() { [INFO] [stderr] 741 | | def.path.fragment = base [INFO] [stderr] ... | [INFO] [stderr] 747 | | } [INFO] [stderr] 748 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 738 | if let Statement::Import(ref mut def) = *stmt { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:778:9 [INFO] [stderr] | [INFO] [stderr] 778 | / match self { [INFO] [stderr] 779 | | &Expression::Simple(ref v) => v.pos(), [INFO] [stderr] 780 | | &Expression::Binary(ref def) => &def.pos, [INFO] [stderr] 781 | | &Expression::Compare(ref def) => &def.pos, [INFO] [stderr] ... | [INFO] [stderr] 789 | | &Expression::ListOp(ref def) => &def.pos, [INFO] [stderr] 790 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 778 | match *self { [INFO] [stderr] 779 | Expression::Simple(ref v) => v.pos(), [INFO] [stderr] 780 | Expression::Binary(ref def) => &def.pos, [INFO] [stderr] 781 | Expression::Compare(ref def) => &def.pos, [INFO] [stderr] 782 | Expression::Copy(ref def) => &def.pos, [INFO] [stderr] 783 | Expression::Grouped(ref expr) => expr.pos(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:796:9 [INFO] [stderr] | [INFO] [stderr] 796 | / match self { [INFO] [stderr] 797 | | &Expression::Simple(ref v) => { [INFO] [stderr] 798 | | try!(write!(w, "{}", v.to_string())); [INFO] [stderr] 799 | | } [INFO] [stderr] ... | [INFO] [stderr] 829 | | } [INFO] [stderr] 830 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 796 | match *self { [INFO] [stderr] 797 | Expression::Simple(ref v) => { [INFO] [stderr] 798 | try!(write!(w, "{}", v.to_string())); [INFO] [stderr] 799 | } [INFO] [stderr] 800 | Expression::Binary(_) => { [INFO] [stderr] 801 | try!(write!(w, "")); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: ==-comparison of unit values detected. This will always be true [INFO] [stderr] --> src/ast/test.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | assert!(def.validate_symbols().unwrap() == ()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unit_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_cmp [INFO] [stderr] [INFO] [stderr] error: ==-comparison of unit values detected. This will always be true [INFO] [stderr] --> src/ast/test.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | assert!(def.validate_symbols().unwrap() == ()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_cmp [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/tokenizer/mod.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | / fn is_symbol_char<'a>(i: OffsetStrIter<'a>) -> Result, u8> { [INFO] [stderr] 27 | | let mut _i = i.clone(); [INFO] [stderr] 28 | | let c = match _i.next() { [INFO] [stderr] 29 | | Some(c) => *c, [INFO] [stderr] ... | [INFO] [stderr] 44 | | } [INFO] [stderr] 45 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokenizer/mod.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / fn escapequoted<'a>(input: OffsetStrIter<'a>) -> Result, String> { [INFO] [stderr] 48 | | // loop until we find a " that is not preceded by \. [INFO] [stderr] 49 | | // Collapse all \ to just char for escaping. [INFO] [stderr] 50 | | let mut frag = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 71 | | return Result::Incomplete(_input.clone()); [INFO] [stderr] 72 | | } [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 loop could be written as a `while let` loop [INFO] [stderr] --> src/tokenizer/mod.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | / loop { [INFO] [stderr] 54 | | let c = match _input.next() { [INFO] [stderr] 55 | | Some(c) => *c, [INFO] [stderr] 56 | | None => break, [INFO] [stderr] ... | [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(c) = _input.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/tokenizer/mod.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | if c == '\\' as u8 && !escape { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\\' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/tokenizer/mod.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | } else if c == '"' as u8 && !escape { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'"' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | / make_fn!(pipequotetok, [INFO] [stderr] 88 | | do_each!( [INFO] [stderr] 89 | | p => input!(), [INFO] [stderr] 90 | | _ => text_token!("|"), [INFO] [stderr] ... | [INFO] [stderr] 98 | | ) [INFO] [stderr] 99 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | / make_fn!(barewordtok, [INFO] [stderr] 102 | | do_each!( [INFO] [stderr] 103 | | span => input!(), [INFO] [stderr] 104 | | _ => peek!(ascii_alpha), [INFO] [stderr] ... | [INFO] [stderr] 111 | | ) [INFO] [stderr] 112 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | / make_fn!(digittok, [INFO] [stderr] 115 | | do_each!( [INFO] [stderr] 116 | | span => input!(), [INFO] [stderr] 117 | | _ => peek!(ascii_digit), [INFO] [stderr] ... | [INFO] [stderr] 124 | | ) [INFO] [stderr] 125 | | ); [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/tokenizer/mod.rs:306:19 [INFO] [stderr] | [INFO] [stderr] 306 | match until!( [INFO] [stderr] | ___________________^ [INFO] [stderr] 307 | | rest, [INFO] [stderr] 308 | | either!( [INFO] [stderr] 309 | | eoi, [INFO] [stderr] ... | [INFO] [stderr] 312 | | ) [INFO] [stderr] 313 | | ) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/tokenizer/mod.rs:357:1 [INFO] [stderr] | [INFO] [stderr] 357 | / fn token<'a>(input: OffsetStrIter<'a>) -> Result, Token> { [INFO] [stderr] 358 | | either!( [INFO] [stderr] 359 | | input, [INFO] [stderr] 360 | | strtok, [INFO] [stderr] ... | [INFO] [stderr] 401 | | ) [INFO] [stderr] 402 | | } [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: the function has a cyclomatic complexity of 42 [INFO] [stderr] --> src/tokenizer/mod.rs:357:1 [INFO] [stderr] | [INFO] [stderr] 357 | / fn token<'a>(input: OffsetStrIter<'a>) -> Result, Token> { [INFO] [stderr] 358 | | either!( [INFO] [stderr] 359 | | input, [INFO] [stderr] 360 | | strtok, [INFO] [stderr] ... | [INFO] [stderr] 401 | | ) [INFO] [stderr] 402 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokenizer/mod.rs:405:1 [INFO] [stderr] | [INFO] [stderr] 405 | / pub fn tokenize<'a>(input: OffsetStrIter<'a>) -> std::result::Result, String> { [INFO] [stderr] 406 | | let mut out = Vec::new(); [INFO] [stderr] 407 | | let mut i = input.clone(); [INFO] [stderr] 408 | | loop { [INFO] [stderr] ... | [INFO] [stderr] 453 | | Ok(out) [INFO] [stderr] 454 | | } [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] --> src/tokenizer/mod.rs:625:1 [INFO] [stderr] | [INFO] [stderr] 625 | / pub fn pos<'a>(i: SliceIter<'a, Token>) -> Result, Position> { [INFO] [stderr] 626 | | let mut _i = i.clone(); [INFO] [stderr] 627 | | let tok = _i.next().unwrap(); [INFO] [stderr] 628 | | let line = tok.pos.line; [INFO] [stderr] 629 | | let column = tok.pos.column; [INFO] [stderr] 630 | | Result::Complete(i.clone(), Position::new(line, column, i.get_offset())) [INFO] [stderr] 631 | | } [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 should consider deriving a `Default` implementation for `build::assets::MemoryCache` [INFO] [stderr] --> src/build/assets.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / pub fn new() -> Self { [INFO] [stderr] 46 | | MemoryCache { [INFO] [stderr] 47 | | map: HashMap::new(), [INFO] [stderr] 48 | | } [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 40 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/assets.rs:60:12 [INFO] [stderr] | [INFO] [stderr] 60 | Ok(self.map.get(&new_path).map(|v| v.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.map.get(&new_path).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / match self { [INFO] [stderr] 31 | | &Val::Empty => "EmptyValue".to_string(), [INFO] [stderr] 32 | | &Val::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 33 | | &Val::Int(_) => "Integer".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 40 | | &Val::Module(_) => "Module".to_string(), [INFO] [stderr] 41 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 30 | match *self { [INFO] [stderr] 31 | Val::Empty => "EmptyValue".to_string(), [INFO] [stderr] 32 | Val::Boolean(_) => "Boolean".to_string(), [INFO] [stderr] 33 | Val::Int(_) => "Integer".to_string(), [INFO] [stderr] 34 | Val::Float(_) => "Float".to_string(), [INFO] [stderr] 35 | Val::Str(_) => "String".to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / match $slf { [INFO] [stderr] 37 | | $( [INFO] [stderr] 38 | | $l => { [INFO] [stderr] 39 | | if let $l = $r { [INFO] [stderr] ... | [INFO] [stderr] 45 | | )* [INFO] [stderr] 46 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/build/ir.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / enum_type_equality!( [INFO] [stderr] 47 | | self, [INFO] [stderr] 48 | | target, [INFO] [stderr] 49 | | &Val::Empty, [INFO] [stderr] ... | [INFO] [stderr] 58 | | &Val::Module(_) [INFO] [stderr] 59 | | ) [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast/mod.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | / if let $l = $r { [INFO] [stderr] 40 | | true [INFO] [stderr] 41 | | } else { [INFO] [stderr] 42 | | false [INFO] [stderr] 43 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] ::: src/build/ir.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / enum_type_equality!( [INFO] [stderr] 47 | | self, [INFO] [stderr] 48 | | target, [INFO] [stderr] 49 | | &Val::Empty, [INFO] [stderr] ... | [INFO] [stderr] 58 | | &Val::Module(_) [INFO] [stderr] 59 | | ) [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/build/ir.rs:73:61 [INFO] [stderr] | [INFO] [stderr] 73 | (&Val::Float(ref f), &Val::Float(ref ff)) => Ok(f == ff), [INFO] [stderr] | ^^^^^^^ help: consider comparing them within some error: `(f - ff).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/build/ir.rs:73:61 [INFO] [stderr] | [INFO] [stderr] 73 | (&Val::Float(ref f), &Val::Float(ref ff)) => Ok(f == ff), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / if let &Val::Tuple(ref fs) = self { [INFO] [stderr] 130 | | Some(fs) [INFO] [stderr] 131 | | } else { [INFO] [stderr] 132 | | None [INFO] [stderr] 133 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 129 | if let Val::Tuple(ref fs) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / if let &Val::Int(_) = self { [INFO] [stderr] 138 | | return true; [INFO] [stderr] 139 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 137 | if let Val::Int(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | / if let &Val::Empty = self { [INFO] [stderr] 145 | | return true; [INFO] [stderr] 146 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 144 | if let Val::Empty = *self { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | / if let &Val::Float(_) = self { [INFO] [stderr] 152 | | return true; [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 151 | if let Val::Float(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / if let &Val::Str(_) = self { [INFO] [stderr] 159 | | return true; [INFO] [stderr] 160 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 158 | if let Val::Str(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:165:9 [INFO] [stderr] | [INFO] [stderr] 165 | / if let &Val::Tuple(_) = self { [INFO] [stderr] 166 | | return true; [INFO] [stderr] 167 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 165 | if let Val::Tuple(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:172:9 [INFO] [stderr] | [INFO] [stderr] 172 | / if let &Val::Env(_) = self { [INFO] [stderr] 173 | | return true; [INFO] [stderr] 174 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 172 | if let Val::Env(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | / if let &Val::List(_) = self { [INFO] [stderr] 180 | | return true; [INFO] [stderr] 181 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 179 | if let Val::List(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:186:9 [INFO] [stderr] | [INFO] [stderr] 186 | / if let &Val::Macro(_) = self { [INFO] [stderr] 187 | | return true; [INFO] [stderr] 188 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 186 | if let Val::Macro(_) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/ir.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | / match self { [INFO] [stderr] 196 | | &Val::Boolean(b) => write!(f, "Boolean({})", b), [INFO] [stderr] 197 | | &Val::Empty => write!(f, "EmptyValue"), [INFO] [stderr] 198 | | &Val::Float(ref ff) => write!(f, "Float({})", ff), [INFO] [stderr] ... | [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 195 | match *self { [INFO] [stderr] 196 | Val::Boolean(b) => write!(f, "Boolean({})", b), [INFO] [stderr] 197 | Val::Empty => write!(f, "EmptyValue"), [INFO] [stderr] 198 | Val::Float(ref ff) => write!(f, "Float({})", ff), [INFO] [stderr] 199 | Val::Int(ref i) => write!(f, "Int({})", i), [INFO] [stderr] 200 | Val::Str(ref s) => write!(f, "String({})", s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/build/mod.rs:49:10 [INFO] [stderr] | [INFO] [stderr] 49 | ) -> Result, Rc)>, Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/mod.rs:68:50 [INFO] [stderr] | [INFO] [stderr] 68 | scope.entry(self.argdefs[i].clone()).or_insert(arg.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| arg.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:190:40 [INFO] [stderr] | [INFO] [stderr] 190 | fn tuple_to_val(&mut self, fields: &Vec<(Token, Expression)>) -> Result, Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Token, Expression)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:208:9 [INFO] [stderr] | [INFO] [stderr] 208 | / match v { [INFO] [stderr] 209 | | &Value::Empty(_) => Ok(Rc::new(Val::Empty)), [INFO] [stderr] 210 | | &Value::Boolean(ref b) => Ok(Rc::new(Val::Boolean(b.val))), [INFO] [stderr] 211 | | &Value::Int(ref i) => Ok(Rc::new(Val::Int(i.val))), [INFO] [stderr] ... | [INFO] [stderr] 230 | | } [INFO] [stderr] 231 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 208 | match *v { [INFO] [stderr] 209 | Value::Empty(_) => Ok(Rc::new(Val::Empty)), [INFO] [stderr] 210 | Value::Boolean(ref b) => Ok(Rc::new(Val::Boolean(b.val))), [INFO] [stderr] 211 | Value::Int(ref i) => Ok(Rc::new(Val::Int(i.val))), [INFO] [stderr] 212 | Value::Float(ref f) => Ok(Rc::new(Val::Float(f.val))), [INFO] [stderr] 213 | Value::Str(ref s) => Ok(Rc::new(Val::Str(s.val.to_string()))), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/build/mod.rs:216:22 [INFO] [stderr] | [INFO] [stderr] 216 | .ok_or(Box::new(error::BuildError::new( [INFO] [stderr] | ______________________^ [INFO] [stderr] 217 | | format!( [INFO] [stderr] 218 | | "Unable to find {} in file: {}", [INFO] [stderr] 219 | | s.val, [INFO] [stderr] ... | [INFO] [stderr] 223 | | v.pos().clone(), [INFO] [stderr] 224 | | ))) [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] 216 | .ok_or_else(|| Box::new(error::BuildError::new( [INFO] [stderr] 217 | format!( [INFO] [stderr] 218 | "Unable to find {} in file: {}", [INFO] [stderr] 219 | s.val, [INFO] [stderr] 220 | self.file.to_string_lossy() [INFO] [stderr] 221 | ), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:252:34 [INFO] [stderr] | [INFO] [stderr] 252 | pub fn build(&mut self, ast: &Vec) -> BuildResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Statement]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:273:17 [INFO] [stderr] | [INFO] [stderr] 273 | format!("{}", err,), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/build/mod.rs:344:32 [INFO] [stderr] | [INFO] [stderr] 344 | let filepath = normalized.to_str().unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 344 | let filepath = &(*normalized.to_str().unwrap()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 344 | let filepath = &str::clone(normalized.to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:396:9 [INFO] [stderr] | [INFO] [stderr] 396 | / match stmt { [INFO] [stderr] 397 | | &Statement::Assert(ref expr) => self.build_assert(&expr), [INFO] [stderr] 398 | | &Statement::Let(ref def) => self.build_let(def), [INFO] [stderr] 399 | | &Statement::Import(ref def) => self.build_import(def), [INFO] [stderr] ... | [INFO] [stderr] 415 | | } [INFO] [stderr] 416 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 396 | match *stmt { [INFO] [stderr] 397 | Statement::Assert(ref expr) => self.build_assert(&expr), [INFO] [stderr] 398 | Statement::Let(ref def) => self.build_let(def), [INFO] [stderr] 399 | Statement::Import(ref def) => self.build_import(def), [INFO] [stderr] 400 | Statement::Expression(ref expr) => self.eval_expr(expr), [INFO] [stderr] 401 | // Only one output can be used per file. Right now we enforce this by [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/build/mod.rs:404:24 [INFO] [stderr] | [INFO] [stderr] 404 | if let None = self.out_lock { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 405 | | let val = try!(self.eval_expr(expr)); [INFO] [stderr] 406 | | self.out_lock = Some((typ.fragment.to_string(), val.clone())); [INFO] [stderr] 407 | | Ok(val) [INFO] [stderr] ... | [INFO] [stderr] 413 | | ))) [INFO] [stderr] 414 | | } [INFO] [stderr] | |_________________- help: try this: `if self.out_lock.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/build/mod.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | format!("You can only have one output per file."), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"You can only have one output per file.".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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:435:13 [INFO] [stderr] | [INFO] [stderr] 435 | fs: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/build/mod.rs:438:16 [INFO] [stderr] | [INFO] [stderr] 438 | if target == &key.val { [INFO] [stderr] | ^^^^^^^^^^-------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `key.val` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:449:13 [INFO] [stderr] | [INFO] [stderr] 449 | fs: &Vec<(String, String)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:476:13 [INFO] [stderr] | [INFO] [stderr] 476 | fs: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:502:16 [INFO] [stderr] | [INFO] [stderr] 502 | elems: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:528:9 [INFO] [stderr] | [INFO] [stderr] 528 | / match first.as_ref() { [INFO] [stderr] 529 | | &Val::Tuple(_) => { [INFO] [stderr] 530 | | stack.push_back(first.clone()); [INFO] [stderr] 531 | | } [INFO] [stderr] ... | [INFO] [stderr] 540 | | } [INFO] [stderr] 541 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 528 | match *first.as_ref() { [INFO] [stderr] 529 | Val::Tuple(_) => { [INFO] [stderr] 530 | stack.push_back(first.clone()); [INFO] [stderr] 531 | } [INFO] [stderr] 532 | Val::List(_) => { [INFO] [stderr] 533 | stack.push_back(first.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/build/mod.rs:543:9 [INFO] [stderr] | [INFO] [stderr] 543 | / if let &Some(ref tail) = &sl.tail { [INFO] [stderr] 544 | | if tail.len() == 0 { [INFO] [stderr] 545 | | return Ok(first); [INFO] [stderr] 546 | | } [INFO] [stderr] ... | [INFO] [stderr] 584 | | return Ok(first); [INFO] [stderr] 585 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 543 | if let Some(ref tail) = sl.tail { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/build/mod.rs:544:16 [INFO] [stderr] | [INFO] [stderr] 544 | if tail.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tail.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:556:17 [INFO] [stderr] | [INFO] [stderr] 556 | / match vref.as_ref() { [INFO] [stderr] 557 | | &Val::Tuple(ref fs) => { [INFO] [stderr] 558 | | try!(self.lookup_in_tuple(&mut stack, sl, (&next.pos, &next.fragment), fs)); [INFO] [stderr] 559 | | continue; [INFO] [stderr] ... | [INFO] [stderr] 580 | | } [INFO] [stderr] 581 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 556 | match *vref.as_ref() { [INFO] [stderr] 557 | Val::Tuple(ref fs) => { [INFO] [stderr] 558 | try!(self.lookup_in_tuple(&mut stack, sl, (&next.pos, &next.fragment), fs)); [INFO] [stderr] 559 | continue; [INFO] [stderr] 560 | } [INFO] [stderr] 561 | Val::Env(ref fs) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:747:9 [INFO] [stderr] | [INFO] [stderr] 747 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 748 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 749 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 750 | | } [INFO] [stderr] 751 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 747 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:748:13 [INFO] [stderr] | [INFO] [stderr] 748 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 749 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 750 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 748 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:752:9 [INFO] [stderr] | [INFO] [stderr] 752 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 753 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 754 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 755 | | } [INFO] [stderr] 756 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 752 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:753:13 [INFO] [stderr] | [INFO] [stderr] 753 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 754 | | return Ok(Rc::new(Val::Boolean(l > r))); [INFO] [stderr] 755 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 753 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:770:9 [INFO] [stderr] | [INFO] [stderr] 770 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 771 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 772 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 773 | | } [INFO] [stderr] 774 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 770 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:771:13 [INFO] [stderr] | [INFO] [stderr] 771 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 772 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 773 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 771 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:775:9 [INFO] [stderr] | [INFO] [stderr] 775 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 776 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 777 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 778 | | } [INFO] [stderr] 779 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 775 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:776:13 [INFO] [stderr] | [INFO] [stderr] 776 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 777 | | return Ok(Rc::new(Val::Boolean(l < r))); [INFO] [stderr] 778 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 776 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:797:9 [INFO] [stderr] | [INFO] [stderr] 797 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 798 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 799 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 800 | | } [INFO] [stderr] 801 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 797 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:798:13 [INFO] [stderr] | [INFO] [stderr] 798 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 799 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 800 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 798 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:802:9 [INFO] [stderr] | [INFO] [stderr] 802 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 803 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 804 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 805 | | } [INFO] [stderr] 806 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 802 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:803:13 [INFO] [stderr] | [INFO] [stderr] 803 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 804 | | return Ok(Rc::new(Val::Boolean(l <= r))); [INFO] [stderr] 805 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 803 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:824:9 [INFO] [stderr] | [INFO] [stderr] 824 | / if let &Val::Int(ref l) = left.as_ref() { [INFO] [stderr] 825 | | if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 826 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 827 | | } [INFO] [stderr] 828 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 824 | if let Val::Int(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:825:13 [INFO] [stderr] | [INFO] [stderr] 825 | / if let &Val::Int(ref r) = right.as_ref() { [INFO] [stderr] 826 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 827 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 825 | if let Val::Int(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:829:9 [INFO] [stderr] | [INFO] [stderr] 829 | / if let &Val::Float(ref l) = left.as_ref() { [INFO] [stderr] 830 | | if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 831 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 832 | | } [INFO] [stderr] 833 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 829 | if let Val::Float(ref l) = *left.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:830:13 [INFO] [stderr] | [INFO] [stderr] 830 | / if let &Val::Float(ref r) = right.as_ref() { [INFO] [stderr] 831 | | return Ok(Rc::new(Val::Boolean(l >= r))); [INFO] [stderr] 832 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 830 | if let Val::Float(ref r) = *right.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:849:9 [INFO] [stderr] | [INFO] [stderr] 849 | / match kind { [INFO] [stderr] 850 | | &BinaryExprType::Add => self.add_vals(&def.pos, left, right), [INFO] [stderr] 851 | | &BinaryExprType::Sub => self.subtract_vals(&def.pos, left, right), [INFO] [stderr] 852 | | &BinaryExprType::Mul => self.multiply_vals(&def.pos, left, right), [INFO] [stderr] 853 | | &BinaryExprType::Div => self.divide_vals(&def.pos, left, right), [INFO] [stderr] 854 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 849 | match *kind { [INFO] [stderr] 850 | BinaryExprType::Add => self.add_vals(&def.pos, left, right), [INFO] [stderr] 851 | BinaryExprType::Sub => self.subtract_vals(&def.pos, left, right), [INFO] [stderr] 852 | BinaryExprType::Mul => self.multiply_vals(&def.pos, left, right), [INFO] [stderr] 853 | BinaryExprType::Div => self.divide_vals(&def.pos, left, right), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:861:9 [INFO] [stderr] | [INFO] [stderr] 861 | / match kind { [INFO] [stderr] 862 | | &CompareType::Equal => self.do_deep_equal(&def.pos, left, right), [INFO] [stderr] 863 | | &CompareType::GT => self.do_gt(&def.pos, left, right), [INFO] [stderr] 864 | | &CompareType::LT => self.do_lt(&def.pos, left, right), [INFO] [stderr] ... | [INFO] [stderr] 867 | | &CompareType::NotEqual => self.do_not_deep_equal(&def.pos, left, right), [INFO] [stderr] 868 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 861 | match *kind { [INFO] [stderr] 862 | CompareType::Equal => self.do_deep_equal(&def.pos, left, right), [INFO] [stderr] 863 | CompareType::GT => self.do_gt(&def.pos, left, right), [INFO] [stderr] 864 | CompareType::LT => self.do_lt(&def.pos, left, right), [INFO] [stderr] 865 | CompareType::GTEqual => self.do_gtequal(&def.pos, left, right), [INFO] [stderr] 866 | CompareType::LTEqual => self.do_ltequal(&def.pos, left, right), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/build/mod.rs:891:13 [INFO] [stderr] | [INFO] [stderr] 891 | v.first().map(|v| v.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `v.first().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:904:21 [INFO] [stderr] | [INFO] [stderr] 904 | src_fields: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/build/mod.rs:905:20 [INFO] [stderr] | [INFO] [stderr] 905 | overrides: &Vec<(Token, Expression)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Token, Expression)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/build/mod.rs:962:29 [INFO] [stderr] | [INFO] [stderr] 962 | let mut new_fields: Vec<(PositionedItem, (i32, Rc))> = m.drain().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:983:9 [INFO] [stderr] | [INFO] [stderr] 983 | / if let &Val::Tuple(ref src_fields) = v.as_ref() { [INFO] [stderr] 984 | | self.push_val(v.clone()); [INFO] [stderr] 985 | | return self.copy_from_base(&src_fields, &def.fields); [INFO] [stderr] 986 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 983 | if let Val::Tuple(ref src_fields) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:987:9 [INFO] [stderr] | [INFO] [stderr] 987 | / if let &Val::Module(ref mod_def) = v.as_ref() { [INFO] [stderr] 988 | | let maybe_tpl = mod_def.clone().arg_tuple.unwrap().clone(); [INFO] [stderr] 989 | | if let &Val::Tuple(ref src_fields) = maybe_tpl.as_ref() { [INFO] [stderr] 990 | | // 1. First we create a builder. [INFO] [stderr] ... | [INFO] [stderr] 1033 | | } [INFO] [stderr] 1034 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 987 | if let Val::Module(ref mod_def) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:989:13 [INFO] [stderr] | [INFO] [stderr] 989 | / if let &Val::Tuple(ref src_fields) = maybe_tpl.as_ref() { [INFO] [stderr] 990 | | // 1. First we create a builder. [INFO] [stderr] 991 | | let mut b = Self::new(self.file.clone(), self.assets.clone()); [INFO] [stderr] 992 | | b.is_module = true; [INFO] [stderr] ... | [INFO] [stderr] 1032 | | ))); [INFO] [stderr] 1033 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 989 | if let Val::Tuple(ref src_fields) = *maybe_tpl.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1059:9 [INFO] [stderr] | [INFO] [stderr] 1059 | / if let &Val::Macro(ref m) = v.deref() { [INFO] [stderr] 1060 | | // Congratulations this is actually a macro. [INFO] [stderr] 1061 | | let mut argvals: Vec> = Vec::new(); [INFO] [stderr] 1062 | | for arg in args.iter() { [INFO] [stderr] ... | [INFO] [stderr] 1071 | | return Ok(Rc::new(Val::Tuple(fields))); [INFO] [stderr] 1072 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1059 | if let Val::Macro(ref m) = *v.deref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1125:9 [INFO] [stderr] | [INFO] [stderr] 1125 | / if let &Val::Str(ref name) = v.deref() { [INFO] [stderr] 1126 | | // Third find the field with that name in the tuple. [INFO] [stderr] 1127 | | for &(ref fname, ref val_expr) in fields.iter() { [INFO] [stderr] 1128 | | if &fname.fragment == name { [INFO] [stderr] ... | [INFO] [stderr] 1155 | | ))); [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1125 | if let Val::Str(ref name) = *v.deref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1135:16 [INFO] [stderr] | [INFO] [stderr] 1135 | } else if let &Val::Boolean(b) = v.deref() { [INFO] [stderr] | ________________^ [INFO] [stderr] 1136 | | for &(ref fname, ref val_expr) in fields.iter() { [INFO] [stderr] 1137 | | if &fname.fragment == "true" && b { [INFO] [stderr] 1138 | | // Fourth return the result of evaluating that field. [INFO] [stderr] ... | [INFO] [stderr] 1155 | | ))); [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1135 | } else if let Val::Boolean(b) = *v.deref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/build/mod.rs:1140:60 [INFO] [stderr] | [INFO] [stderr] 1140 | } else if &fname.fragment == "false" && !b { [INFO] [stderr] | ____________________________________________________________^ [INFO] [stderr] 1141 | | return self.eval_expr(val_expr); [INFO] [stderr] 1142 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/build/mod.rs:1137:51 [INFO] [stderr] | [INFO] [stderr] 1137 | if &fname.fragment == "true" && b { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 1138 | | // Fourth return the result of evaluating that field. [INFO] [stderr] 1139 | | return self.eval_expr(val_expr); [INFO] [stderr] 1140 | | } else if &fname.fragment == "false" && !b { [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1172:9 [INFO] [stderr] | [INFO] [stderr] 1172 | / if let &Val::Macro(ref macdef) = try!(self.lookup_selector(&mac.sel)).as_ref() { [INFO] [stderr] 1173 | | let mut out = Vec::new(); [INFO] [stderr] 1174 | | for item in l.iter() { [INFO] [stderr] 1175 | | let argvals = vec![item.clone()]; [INFO] [stderr] ... | [INFO] [stderr] 1200 | | return Ok(Rc::new(Val::List(out))); [INFO] [stderr] 1201 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1172 | if let Val::Macro(ref macdef) = *try!(self.lookup_selector(&mac.sel)).as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1188:29 [INFO] [stderr] | [INFO] [stderr] 1188 | / if let &Val::Empty = v.as_ref() { [INFO] [stderr] 1189 | | // noop [INFO] [stderr] 1190 | | continue; [INFO] [stderr] 1191 | | } else if let &Val::Boolean(false) = v.as_ref() { [INFO] [stderr] 1192 | | // noop [INFO] [stderr] 1193 | | continue; [INFO] [stderr] 1194 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1188 | if let Val::Empty = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1191:36 [INFO] [stderr] | [INFO] [stderr] 1191 | } else if let &Val::Boolean(false) = v.as_ref() { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 1192 | | // noop [INFO] [stderr] 1193 | | continue; [INFO] [stderr] 1194 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1191 | } else if let Val::Boolean(false) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1232:9 [INFO] [stderr] | [INFO] [stderr] 1232 | / if let &Val::Boolean(b) = ok.as_ref() { [INFO] [stderr] 1233 | | // record the assertion result. [INFO] [stderr] 1234 | | if b { [INFO] [stderr] 1235 | | // success! [INFO] [stderr] ... | [INFO] [stderr] 1259 | | self.assert_collector.summary.push_str(&msg); [INFO] [stderr] 1260 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1232 | if let Val::Boolean(b) = *ok.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/build/mod.rs:1267:9 [INFO] [stderr] | [INFO] [stderr] 1267 | / match expr { [INFO] [stderr] 1268 | | &Expression::Simple(ref val) => self.value_to_val(val), [INFO] [stderr] 1269 | | &Expression::Binary(ref def) => self.eval_binary(def), [INFO] [stderr] 1270 | | &Expression::Compare(ref def) => self.eval_compare(def), [INFO] [stderr] ... | [INFO] [stderr] 1278 | | &Expression::ListOp(ref def) => self.eval_list_op(def), [INFO] [stderr] 1279 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1267 | match *expr { [INFO] [stderr] 1268 | Expression::Simple(ref val) => self.value_to_val(val), [INFO] [stderr] 1269 | Expression::Binary(ref def) => self.eval_binary(def), [INFO] [stderr] 1270 | Expression::Compare(ref def) => self.eval_compare(def), [INFO] [stderr] 1271 | Expression::Copy(ref def) => self.eval_copy(def), [INFO] [stderr] 1272 | Expression::Grouped(ref expr) => self.eval_expr(expr), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/test.rs:133:10 [INFO] [stderr] | [INFO] [stderr] 133 | .or_insert(Rc::new(Val::Int(1))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Rc::new(Val::Int(1)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/test.rs:170:10 [INFO] [stderr] | [INFO] [stderr] 170 | .or_insert(Rc::new(Val::Int(1))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Rc::new(Val::Int(1)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/test.rs:194:10 [INFO] [stderr] | [INFO] [stderr] 194 | .or_insert(Rc::new(Val::Tuple(vec![( [INFO] [stderr] | __________^ [INFO] [stderr] 195 | | value_node!("fld1".to_string(), Position::new(1, 0, 0)), [INFO] [stderr] 196 | | Rc::new(Val::Int(1)), [INFO] [stderr] 197 | | )]))); [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] 194 | .or_insert_with(|| Rc::new(Val::Tuple(vec![( [INFO] [stderr] 195 | value_node!("fld1".to_string(), Position::new(1, 0, 0)), [INFO] [stderr] 196 | Rc::new(Val::Int(1)), [INFO] [stderr] 197 | )]))); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/test.rs:230:10 [INFO] [stderr] | [INFO] [stderr] 230 | .or_insert(Rc::new(Val::Str("bar".to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Rc::new(Val::Str("bar".to_string())))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/test.rs:233:10 [INFO] [stderr] | [INFO] [stderr] 233 | .or_insert(Rc::new(Val::Macro(MacroDef { [INFO] [stderr] | __________^ [INFO] [stderr] 234 | | argdefs: vec![value_node!("arg2".to_string(), Position::new(1, 0, 0))], [INFO] [stderr] 235 | | fields: vec![( [INFO] [stderr] 236 | | make_tok!("foo", Position::new(1, 1, 1)), [INFO] [stderr] ... | [INFO] [stderr] 242 | | pos: Position::new(1, 0, 0), [INFO] [stderr] 243 | | }))); [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] 233 | .or_insert_with(|| Rc::new(Val::Macro(MacroDef { [INFO] [stderr] 234 | argdefs: vec![value_node!("arg2".to_string(), Position::new(1, 0, 0))], [INFO] [stderr] 235 | fields: vec![( [INFO] [stderr] 236 | make_tok!("foo", Position::new(1, 1, 1)), [INFO] [stderr] 237 | Expression::Simple(Value::Symbol(value_node!( [INFO] [stderr] 238 | "arg1".to_string(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/build/test.rs:273:10 [INFO] [stderr] | [INFO] [stderr] 273 | .or_insert(Rc::new(Val::Int(4))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| Rc::new(Val::Int(4)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::env::EnvConverter` [INFO] [stderr] --> src/convert/env.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> Self { [INFO] [stderr] 29 | | EnvConverter {} [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/env.rs:34:15 [INFO] [stderr] | [INFO] [stderr] 34 | flds: &Vec<(PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/env.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / if let &Val::Empty = val.as_ref() { [INFO] [stderr] 43 | | eprintln!("Skipping empty variable: {}", name); [INFO] [stderr] 44 | | return Ok(()); [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | if let Val::Empty = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/env.rs:52:36 [INFO] [stderr] | [INFO] [stderr] 52 | fn convert_list(&self, _items: &Vec>, _w: &mut Write) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/env.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | / match v { [INFO] [stderr] 59 | | &Val::Empty => { [INFO] [stderr] 60 | | // Empty is a noop. [INFO] [stderr] 61 | | return Ok(()); [INFO] [stderr] ... | [INFO] [stderr] 92 | | } [INFO] [stderr] 93 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 58 | match *v { [INFO] [stderr] 59 | Val::Empty => { [INFO] [stderr] 60 | // Empty is a noop. [INFO] [stderr] 61 | return Ok(()); [INFO] [stderr] 62 | } [INFO] [stderr] 63 | Val::Boolean(b) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::exec::ExecConverter` [INFO] [stderr] --> src/convert/exec.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / pub fn new() -> Self { [INFO] [stderr] 37 | | ExecConverter {} [INFO] [stderr] 38 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / if let &Tuple(ref fields) = v { [INFO] [stderr] 44 | | // We expect no more than three fields in our exec tuple. [INFO] [stderr] 45 | | if fields.len() > 3 { [INFO] [stderr] 46 | | return Err(Box::new(BuildError::new( [INFO] [stderr] ... | [INFO] [stderr] 170 | | return Ok(()); [INFO] [stderr] 171 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 43 | if let Tuple(ref fields) = *v { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:65:21 [INFO] [stderr] | [INFO] [stderr] 65 | / if let &Val::Str(ref s) = val.as_ref() { [INFO] [stderr] 66 | | command = Some(s); [INFO] [stderr] 67 | | continue; [INFO] [stderr] 68 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | if let Val::Str(ref s) = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | / if let &Val::Tuple(ref l) = val.as_ref() { [INFO] [stderr] 78 | | if env.is_some() { [INFO] [stderr] 79 | | return Err(Box::new(BuildError::new( [INFO] [stderr] 80 | | "There can only be one env field in an exec tuple", [INFO] [stderr] ... | [INFO] [stderr] 86 | | continue; [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 77 | if let Val::Tuple(ref l) = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:96:21 [INFO] [stderr] | [INFO] [stderr] 96 | / if let &Val::List(ref l) = val.as_ref() { [INFO] [stderr] 97 | | if args.is_some() { [INFO] [stderr] 98 | | return Err(Box::new(BuildError::new( [INFO] [stderr] 99 | | "There can only be one args field of an exec tuple", [INFO] [stderr] ... | [INFO] [stderr] 105 | | continue; [INFO] [stderr] 106 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 96 | if let Val::List(ref l) = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:132:21 [INFO] [stderr] | [INFO] [stderr] 132 | / if let &Val::Str(ref s) = v.as_ref() { [INFO] [stderr] 133 | | try!(write!(script, "{}=\"{}\"\n", name.val, s)); [INFO] [stderr] 134 | | continue; [INFO] [stderr] 135 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 132 | if let Val::Str(ref s) = *v.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/exec.rs:151:21 [INFO] [stderr] | [INFO] [stderr] 151 | / match v.as_ref() { [INFO] [stderr] 152 | | &Val::Str(ref s) => { [INFO] [stderr] 153 | | try!(write!(script, "{} ", s)); [INFO] [stderr] 154 | | } [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 151 | match *v.as_ref() { [INFO] [stderr] 152 | Val::Str(ref s) => { [INFO] [stderr] 153 | try!(write!(script, "{} ", s)); [INFO] [stderr] 154 | } [INFO] [stderr] 155 | Val::Tuple(_) => try!(flag_converter.convert(v.clone(), &mut script)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::flags::FlagConverter` [INFO] [stderr] --> src/convert/flags.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Self { [INFO] [stderr] 28 | | FlagConverter {} [INFO] [stderr] 29 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 24 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/flags.rs:40:59 [INFO] [stderr] | [INFO] [stderr] 40 | fn write_list_flag(&self, pfx: &str, name: &str, def: &Vec>, w: &mut Write) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/flags.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | / match v { [INFO] [stderr] 59 | | &Val::Empty => { [INFO] [stderr] 60 | | // Empty is a noop. [INFO] [stderr] 61 | | return Ok(()); [INFO] [stderr] ... | [INFO] [stderr] 108 | | } [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 58 | match *v { [INFO] [stderr] 59 | Val::Empty => { [INFO] [stderr] 60 | // Empty is a noop. [INFO] [stderr] 61 | return Ok(()); [INFO] [stderr] 62 | } [INFO] [stderr] 63 | Val::Boolean(b) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/flags.rs:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | / if let &Val::Empty = val.as_ref() { [INFO] [stderr] 80 | | try!(self.write_flag_name(pfx, &name.val, w)); [INFO] [stderr] 81 | | continue; [INFO] [stderr] 82 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 79 | if let Val::Empty = *val.as_ref() { [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/flags.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | / match val.as_ref() { [INFO] [stderr] 84 | | &Val::Tuple(_) => { [INFO] [stderr] 85 | | let new_pfx = format!("{}{}.", pfx, name); [INFO] [stderr] 86 | | try!(self.write(&new_pfx, val, w)); [INFO] [stderr] ... | [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 83 | match *val.as_ref() { [INFO] [stderr] 84 | Val::Tuple(_) => { [INFO] [stderr] 85 | let new_pfx = format!("{}{}.", pfx, name); [INFO] [stderr] 86 | try!(self.write(&new_pfx, val, w)); [INFO] [stderr] 87 | } [INFO] [stderr] 88 | Val::List(ref def) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::json::JsonConverter` [INFO] [stderr] --> src/convert/json.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new() -> Self { [INFO] [stderr] 26 | | JsonConverter {} [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/json.rs:29:35 [INFO] [stderr] | [INFO] [stderr] 29 | fn convert_list(&self, items: &Vec>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/json.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | items: &Vec<(ast::PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ast::PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/json.rs:49:34 [INFO] [stderr] | [INFO] [stderr] 49 | fn convert_env(&self, items: &Vec<(String, String)>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/json.rs:59:23 [INFO] [stderr] | [INFO] [stderr] 59 | let jsn_val = match v { [INFO] [stderr] | _______________________^ [INFO] [stderr] 60 | | &Val::Boolean(b) => serde_json::Value::Bool(b), [INFO] [stderr] 61 | | &Val::Empty => serde_json::Value::Null, [INFO] [stderr] 62 | | &Val::Float(f) => { [INFO] [stderr] ... | [INFO] [stderr] 89 | | &Val::Tuple(ref t) => try!(self.convert_tuple(t)), [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 59 | let jsn_val = match *v { [INFO] [stderr] 60 | Val::Boolean(b) => serde_json::Value::Bool(b), [INFO] [stderr] 61 | Val::Empty => serde_json::Value::Null, [INFO] [stderr] 62 | Val::Float(f) => { [INFO] [stderr] 63 | let n = match serde_json::Number::from_f64(f) { [INFO] [stderr] 64 | Some(n) => n, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::toml::TomlConverter` [INFO] [stderr] --> src/convert/toml.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | / pub fn new() -> Self { [INFO] [stderr] 33 | | TomlConverter {} [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/toml.rs:36:35 [INFO] [stderr] | [INFO] [stderr] 36 | fn convert_list(&self, items: &Vec>) -> ConvertResult { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/toml.rs:44:36 [INFO] [stderr] | [INFO] [stderr] 44 | fn convert_tuple(&self, items: &Vec<(ast::PositionedItem, Rc)>) -> ConvertResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ast::PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/toml.rs:53:34 [INFO] [stderr] | [INFO] [stderr] 53 | fn convert_env(&self, items: &Vec<(String, String)>) -> ConvertResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/convert/toml.rs:57:18 [INFO] [stderr] | [INFO] [stderr] 57 | .or_insert(toml::Value::String(v.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| toml::Value::String(v.clone()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/toml.rs:63:24 [INFO] [stderr] | [INFO] [stderr] 63 | let toml_val = match v { [INFO] [stderr] | ________________________^ [INFO] [stderr] 64 | | &Val::Boolean(b) => toml::Value::Boolean(b), [INFO] [stderr] 65 | | // TODO(jwall): This is an error apparently [INFO] [stderr] 66 | | &Val::Empty => { [INFO] [stderr] ... | [INFO] [stderr] 83 | | &Val::Tuple(ref t) => try!(self.convert_tuple(t)), [INFO] [stderr] 84 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 63 | let toml_val = match *v { [INFO] [stderr] 64 | Val::Boolean(b) => toml::Value::Boolean(b), [INFO] [stderr] 65 | // TODO(jwall): This is an error apparently [INFO] [stderr] 66 | Val::Empty => { [INFO] [stderr] 67 | let err = SimpleError::new("Nulls are not allowed in Toml Conversions!"); [INFO] [stderr] 68 | return Err(Box::new(err)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `convert::yaml::YamlConverter` [INFO] [stderr] --> src/convert/yaml.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | YamlConverter {} [INFO] [stderr] 16 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/yaml.rs:18:35 [INFO] [stderr] | [INFO] [stderr] 18 | fn convert_list(&self, items: &Vec>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Rc]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/yaml.rs:26:34 [INFO] [stderr] | [INFO] [stderr] 26 | fn convert_env(&self, items: &Vec<(String, String)>) -> std::io::Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(String, String)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/convert/yaml.rs:39:16 [INFO] [stderr] | [INFO] [stderr] 39 | items: &Vec<(ast::PositionedItem, Rc)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ast::PositionedItem, Rc)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/convert/yaml.rs:52:24 [INFO] [stderr] | [INFO] [stderr] 52 | let yaml_val = match v { [INFO] [stderr] | ________________________^ [INFO] [stderr] 53 | | &Val::Boolean(b) => serde_yaml::Value::Bool(b), [INFO] [stderr] 54 | | &Val::Empty => serde_yaml::Value::Null, [INFO] [stderr] 55 | | &Val::Float(f) => match serde_yaml::to_value(f) { [INFO] [stderr] ... | [INFO] [stderr] 74 | | &Val::Tuple(ref t) => try!(self.convert_tuple(t)), [INFO] [stderr] 75 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 52 | let yaml_val = match *v { [INFO] [stderr] 53 | Val::Boolean(b) => serde_yaml::Value::Bool(b), [INFO] [stderr] 54 | Val::Empty => serde_yaml::Value::Null, [INFO] [stderr] 55 | Val::Float(f) => match serde_yaml::to_value(f) { [INFO] [stderr] 56 | Ok(v) => v, [INFO] [stderr] 57 | _ => panic!("Float is too large or not a Number {}", f), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/convert/mod.rs:63:55 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn get_converter_list(&self) -> Vec<(&String, &Box)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&traits::Converter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/error.rs:42:20 [INFO] [stderr] | [INFO] [stderr] 42 | let name = match self { [INFO] [stderr] | ____________________^ [INFO] [stderr] 43 | | &ErrorType::TypeFail => "TypeFail", [INFO] [stderr] 44 | | &ErrorType::DuplicateBinding => "DuplicateBinding", [INFO] [stderr] 45 | | &ErrorType::Unsupported => "Unsupported", [INFO] [stderr] ... | [INFO] [stderr] 51 | | &ErrorType::AssertError => "AssertError", [INFO] [stderr] 52 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 42 | let name = match *self { [INFO] [stderr] 43 | ErrorType::TypeFail => "TypeFail", [INFO] [stderr] 44 | ErrorType::DuplicateBinding => "DuplicateBinding", [INFO] [stderr] 45 | ErrorType::Unsupported => "Unsupported", [INFO] [stderr] 46 | ErrorType::NoSuchSymbol => "NoSuchSymbol", [INFO] [stderr] 47 | ErrorType::BadArgLen => "BadArgLen", [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/parse/mod.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | / fn triple_to_number<'a>( [INFO] [stderr] 99 | | input: SliceIter<'a, Token>, [INFO] [stderr] 100 | | v: (Option, Option, Option), [INFO] [stderr] 101 | | ) -> ParseResult<'a, Value> { [INFO] [stderr] ... | [INFO] [stderr] 141 | | return Ok(Value::Float(value_node!(f, pref_pos))); [INFO] [stderr] 142 | | } [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: the function has a cyclomatic complexity of 45 [INFO] [stderr] --> src/parse/mod.rs:244:1 [INFO] [stderr] | [INFO] [stderr] 244 | / fn number(input: SliceIter) -> Result, Value> { [INFO] [stderr] 245 | | let parsed = do_each!(input, [INFO] [stderr] 246 | | num => either!( [INFO] [stderr] 247 | | complete!( [INFO] [stderr] ... | [INFO] [stderr] 286 | | } [INFO] [stderr] 287 | | } [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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/parse/mod.rs:314:30 [INFO] [stderr] | [INFO] [stderr] 314 | Value::Tuple(value_node!(fields.unwrap_or(Vec::new()), pos)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `fields.unwrap_or_default()` [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: redundant closure found [INFO] [stderr] --> src/parse/mod.rs:336:37 [INFO] [stderr] | [INFO] [stderr] 336 | elems: elems.unwrap_or_else(|| Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [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: identical conversion [INFO] [stderr] --> src/parse/mod.rs:357:23 [INFO] [stderr] | [INFO] [stderr] 357 | (Value::Empty(pos.into())) [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 43 [INFO] [stderr] --> src/parse/mod.rs:447:1 [INFO] [stderr] | [INFO] [stderr] 447 | / fn selector_list(input: SliceIter) -> NomResult { [INFO] [stderr] 448 | | let (rest, head) = match symbol_or_expression(input) { [INFO] [stderr] 449 | | Result::Complete(rest, val) => (rest, val), [INFO] [stderr] 450 | | Result::Fail(e) => { [INFO] [stderr] ... | [INFO] [stderr] 497 | | return Result::Complete(rest, sel_list); [INFO] [stderr] 498 | | } [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: the function has a cyclomatic complexity of 39 [INFO] [stderr] --> src/parse/mod.rs:560:1 [INFO] [stderr] | [INFO] [stderr] 560 | / fn module_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 561 | | let parsed = do_each!(input, [INFO] [stderr] 562 | | pos => pos, [INFO] [stderr] 563 | | _ => word!("module"), [INFO] [stderr] ... | [INFO] [stderr] 588 | | } [INFO] [stderr] 589 | | } [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: redundant closure found [INFO] [stderr] --> src/parse/mod.rs:579:61 [INFO] [stderr] | [INFO] [stderr] 579 | let def = ModuleDef::new(arglist.unwrap_or_else(|| Vec::new()), stmt_list, pos); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [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: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/parse/mod.rs:591:1 [INFO] [stderr] | [INFO] [stderr] 591 | / fn macro_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 592 | | let parsed = do_each!(input, [INFO] [stderr] 593 | | pos => pos, [INFO] [stderr] 594 | | _ => word!("macro"), [INFO] [stderr] ... | [INFO] [stderr] 616 | | } [INFO] [stderr] 617 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parse/mod.rs:619:1 [INFO] [stderr] | [INFO] [stderr] 619 | / fn tuple_to_select<'a>( [INFO] [stderr] 620 | | input: SliceIter<'a, Token>, [INFO] [stderr] 621 | | e1: Expression, [INFO] [stderr] 622 | | e2: Expression, [INFO] [stderr] ... | [INFO] [stderr] 636 | | } [INFO] [stderr] 637 | | } [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: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/parse/mod.rs:639:1 [INFO] [stderr] | [INFO] [stderr] 639 | / fn select_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 640 | | let parsed = do_each!(input, [INFO] [stderr] 641 | | _ => word!("select"), [INFO] [stderr] 642 | | val => do_each!( [INFO] [stderr] ... | [INFO] [stderr] 669 | | } [INFO] [stderr] 670 | | } [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: redundant closure found [INFO] [stderr] --> src/parse/mod.rs:700:43 [INFO] [stderr] | [INFO] [stderr] 700 | arglist: exprs.unwrap_or_else(|| Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove closure as shown: `Vec::new` [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: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/parse/mod.rs:723:1 [INFO] [stderr] | [INFO] [stderr] 723 | / fn call_expression(input: SliceIter) -> Result, Expression> { [INFO] [stderr] 724 | | let parsed = do_each!(input.clone(), [INFO] [stderr] 725 | | callee_name => trace_nom!(selector_value), [INFO] [stderr] 726 | | _ => punct!("("), [INFO] [stderr] ... | [INFO] [stderr] 743 | | } [INFO] [stderr] 744 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parse/mod.rs:755:33 [INFO] [stderr] | [INFO] [stderr] 755 | let fieldname: String = match &mut def.sel.tail { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 756 | | &mut None => { [INFO] [stderr] 757 | | if ENABLE_TRACE { [INFO] [stderr] 758 | | eprintln!( [INFO] [stderr] ... | [INFO] [stderr] 783 | | } [INFO] [stderr] 784 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 755 | let fieldname: String = match *(&mut def.sel.tail) { [INFO] [stderr] 756 | None => { [INFO] [stderr] 757 | if ENABLE_TRACE { [INFO] [stderr] 758 | eprintln!( [INFO] [stderr] 759 | "tuple_to_list_op had error {}", [INFO] [stderr] 760 | "Missing a result field for the macro" [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parse/mod.rs:764:21 [INFO] [stderr] | [INFO] [stderr] 764 | format!("Missing a result field for the macro"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Missing a result field for the macro".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: length comparison to one [INFO] [stderr] --> src/parse/mod.rs:769:20 [INFO] [stderr] | [INFO] [stderr] 769 | if tl.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tl.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: useless use of `format!` [INFO] [stderr] --> src/parse/mod.rs:777:25 [INFO] [stderr] | [INFO] [stderr] 777 | format!("Missing a result field for the macro"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Missing a result field for the macro".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: the function has a cyclomatic complexity of 51 [INFO] [stderr] --> src/parse/mod.rs:946:1 [INFO] [stderr] | [INFO] [stderr] 946 | / fn statement(i: SliceIter) -> Result, Statement> { [INFO] [stderr] 947 | | return alt_peek!(i, [INFO] [stderr] 948 | | word!("assert") => trace_nom!(assert_statement) | [INFO] [stderr] 949 | | word!("import") => trace_nom!(import_statement) | [INFO] [stderr] ... | [INFO] [stderr] 953 | | ); [INFO] [stderr] 954 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parse/mod.rs:958:1 [INFO] [stderr] | [INFO] [stderr] 958 | / pub fn parse<'a>(input: OffsetStrIter<'a>) -> std::result::Result, String> { [INFO] [stderr] 959 | | match tokenize(input.clone()) { [INFO] [stderr] 960 | | Ok(tokenized) => { [INFO] [stderr] 961 | | let mut out = Vec::new(); [INFO] [stderr] ... | [INFO] [stderr] 1001 | | } [INFO] [stderr] 1002 | | } [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: useless use of `format!` [INFO] [stderr] --> src/parse/precedence.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | format!("Expected Expression found End Of Input"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expected Expression found End Of Input".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/parse/precedence.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | format!("Expected Expression found End Of Input"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expected Expression found End Of Input".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/parse/precedence.rs:229:13 [INFO] [stderr] | [INFO] [stderr] 229 | format!("Expected Expression found End Of Input"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Expected Expression found End Of Input".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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parse/precedence.rs:315:1 [INFO] [stderr] | [INFO] [stderr] 315 | / pub fn op_expression<'a>(i: SliceIter<'a, Token>) -> Result, Expression> { [INFO] [stderr] 316 | | let preparse = parse_operand_list(i.clone()); [INFO] [stderr] 317 | | match preparse { [INFO] [stderr] 318 | | Result::Fail(e) => { [INFO] [stderr] ... | [INFO] [stderr] 363 | | } [INFO] [stderr] 364 | | } [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: the function has a cyclomatic complexity of 39 [INFO] [stderr] --> src/parse/test.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / fn test_statement_parse() { [INFO] [stderr] 153 | | let stmt = "import \"foo\" as foo;"; [INFO] [stderr] 154 | | assert_parse!( [INFO] [stderr] 155 | | statement(stmt), [INFO] [stderr] ... | [INFO] [stderr] 269 | | ); [INFO] [stderr] 270 | | } [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: the function has a cyclomatic complexity of 50 [INFO] [stderr] --> src/parse/test.rs:290:1 [INFO] [stderr] | [INFO] [stderr] 290 | / fn test_let_statement_parse() { [INFO] [stderr] 291 | | assert_fail!(let_statement("foo")); [INFO] [stderr] 292 | | assert_abort!(let_statement("let \"foo\"")); [INFO] [stderr] 293 | | assert_abort!(let_statement("let 1")); [INFO] [stderr] ... | [INFO] [stderr] 338 | | ); [INFO] [stderr] 339 | | } [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: the function has a cyclomatic complexity of 49 [INFO] [stderr] --> src/parse/test.rs:382:1 [INFO] [stderr] | [INFO] [stderr] 382 | / fn test_expression_statement_parse() { [INFO] [stderr] 383 | | assert_fail!(expression_statement("foo")); [INFO] [stderr] 384 | | assert_parse!( [INFO] [stderr] 385 | | expression_statement("1.0;"), [INFO] [stderr] ... | [INFO] [stderr] 446 | | ); [INFO] [stderr] 447 | | } [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: the function has a cyclomatic complexity of 131 [INFO] [stderr] --> src/parse/test.rs:450:1 [INFO] [stderr] | [INFO] [stderr] 450 | / fn test_expression_parse() { [INFO] [stderr] 451 | | assert_parse!( [INFO] [stderr] 452 | | expression("NULL "), [INFO] [stderr] 453 | | Expression::Simple(Value::Empty(Position::new(1, 1, 0))) [INFO] [stderr] ... | [INFO] [stderr] 815 | | ); [INFO] [stderr] 816 | | } [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: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/parse/test.rs:851:1 [INFO] [stderr] | [INFO] [stderr] 851 | / fn test_call_parse() { [INFO] [stderr] 852 | | assert_fail!(call_expression("foo")); [INFO] [stderr] 853 | | assert_fail!(call_expression("foo (")); [INFO] [stderr] 854 | | assert_fail!(call_expression("foo (1")); [INFO] [stderr] ... | [INFO] [stderr] 901 | | ); [INFO] [stderr] 902 | | } [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: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/parse/test.rs:932:1 [INFO] [stderr] | [INFO] [stderr] 932 | / fn test_module_expression_parsing() { [INFO] [stderr] 933 | | assert_fail!(module_expression("foo")); [INFO] [stderr] 934 | | assert_fail!(module_expression("module")); [INFO] [stderr] 935 | | assert_fail!(module_expression("module(")); [INFO] [stderr] ... | [INFO] [stderr] 950 | | ); [INFO] [stderr] 951 | | } [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: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> src/parse/test.rs:954:1 [INFO] [stderr] | [INFO] [stderr] 954 | / fn test_macro_expression_parsing() { [INFO] [stderr] 955 | | assert_fail!(macro_expression("foo")); [INFO] [stderr] 956 | | assert_fail!(macro_expression("macro \"foo\"")); [INFO] [stderr] 957 | | assert_fail!(macro_expression("macro 1")); [INFO] [stderr] ... | [INFO] [stderr] 1004 | | ); [INFO] [stderr] 1005 | | } [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: the function has a cyclomatic complexity of 45 [INFO] [stderr] --> src/parse/test.rs:1086:1 [INFO] [stderr] | [INFO] [stderr] 1086 | / fn test_list_value_parse() { [INFO] [stderr] 1087 | | assert_fail!(list_value("foo")); [INFO] [stderr] 1088 | | assert_fail!(list_value("[foo")); [INFO] [stderr] 1089 | | assert_fail!(list_value("// commen\n[foo")); [INFO] [stderr] ... | [INFO] [stderr] 1166 | | ); [INFO] [stderr] 1167 | | } [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: the function has a cyclomatic complexity of 72 [INFO] [stderr] --> src/parse/test.rs:1170:1 [INFO] [stderr] | [INFO] [stderr] 1170 | / fn test_tuple_parse() { [INFO] [stderr] 1171 | | assert_fail!(tuple("{")); [INFO] [stderr] 1172 | | assert_fail!(tuple("{ foo")); [INFO] [stderr] 1173 | | assert_fail!(tuple("{ foo =")); [INFO] [stderr] ... | [INFO] [stderr] 1340 | | ); [INFO] [stderr] 1341 | | } [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: the function has a cyclomatic complexity of 50 [INFO] [stderr] --> src/parse/test.rs:1412:1 [INFO] [stderr] | [INFO] [stderr] 1412 | / fn test_field_value_parse() { [INFO] [stderr] 1413 | | assert_fail!(field_value("foo")); [INFO] [stderr] 1414 | | assert_fail!(field_value("// comment\nfoo")); [INFO] [stderr] 1415 | | assert_fail!(field_value("foo =")); [INFO] [stderr] ... | [INFO] [stderr] 1486 | | ); [INFO] [stderr] 1487 | | } [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: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/parse/test.rs:1490:1 [INFO] [stderr] | [INFO] [stderr] 1490 | / fn test_number_parsing() { [INFO] [stderr] 1491 | | assert_fail!(number(".")); [INFO] [stderr] 1492 | | assert_fail!(number(". ")); [INFO] [stderr] 1493 | | assert_parse!( [INFO] [stderr] ... | [INFO] [stderr] 1508 | | ); [INFO] [stderr] 1509 | | } [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] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ucg`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "171c988740dee8f1ee8bc50b4095c1b55b864dacef07a3101c21cd5cc68c1e35"` [INFO] running `"docker" "rm" "-f" "171c988740dee8f1ee8bc50b4095c1b55b864dacef07a3101c21cd5cc68c1e35"` [INFO] [stdout] 171c988740dee8f1ee8bc50b4095c1b55b864dacef07a3101c21cd5cc68c1e35