[INFO] updating cached repository alekratz/rasp [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/alekratz/rasp [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/alekratz/rasp" "work/ex/clippy-test-run/sources/stable/gh/alekratz/rasp"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/alekratz/rasp'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/alekratz/rasp" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/alekratz/rasp"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/alekratz/rasp'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 02a7a665f2652b94da8572ca3919a6a8d60673b4 [INFO] sha for GitHub repo alekratz/rasp: 02a7a665f2652b94da8572ca3919a6a8d60673b4 [INFO] validating manifest of alekratz/rasp 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 alekratz/rasp 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 alekratz/rasp [INFO] finished frobbing alekratz/rasp [INFO] frobbed toml for alekratz/rasp written to work/ex/clippy-test-run/sources/stable/gh/alekratz/rasp/Cargo.toml [INFO] started frobbing alekratz/rasp [INFO] finished frobbing alekratz/rasp [INFO] frobbed toml for alekratz/rasp written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/alekratz/rasp/Cargo.toml [INFO] crate alekratz/rasp has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting alekratz/rasp against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/alekratz/rasp:/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] 907ed03ed98e4bd25ef719c5ae71b18a45cee50d6bb93d5409141b03d445e776 [INFO] running `"docker" "start" "-a" "907ed03ed98e4bd25ef719c5ae71b18a45cee50d6bb93d5409141b03d445e776"` [INFO] [stderr] Checking backtrace v0.3.0 [INFO] [stderr] Checking error-chain v0.9.0 [INFO] [stderr] Checking rasp v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lexer.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | src_index: src_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_index` [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/lexer.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | line_index: line_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_index` [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/lexer.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | col_index: col_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `col_index` [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/lexer.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | Range { start: start, end: end } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/lexer.rs:129:31 [INFO] [stderr] | [INFO] [stderr] 129 | Range { start: start, end: end } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/parser.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/ast.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | write!(f, "(\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/ast.rs:99:21 [INFO] [stderr] | [INFO] [stderr] 99 | write!(f, "\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/gatherer.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/gatherer.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/gatherer.rs:182:13 [INFO] [stderr] | [INFO] [stderr] 182 | source_file: source_file, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `source_file` [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/gatherer.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/internal.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | param_type: param_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_type` [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/internal.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | optional: optional, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `optional` [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/internal.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | types: types, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `types` [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/internal.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | funs: funs, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `funs` [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/internal.rs:264:13 [INFO] [stderr] | [INFO] [stderr] 264 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal.rs:265:13 [INFO] [stderr] | [INFO] [stderr] 265 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | docstring: docstring, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `docstring` [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/internal.rs:267:13 [INFO] [stderr] | [INFO] [stderr] 267 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/preprocessor.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | source_file: source_file, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `source_file` [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/preprocessor.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | ast: ast, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ast` [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/preprocessor.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/preprocessor.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/vm.rs:141:13 [INFO] [stderr] | [INFO] [stderr] 141 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/vm.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/bytecode.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/bytecode.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/lexer.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | src_index: src_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_index` [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/lexer.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | line_index: line_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_index` [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/lexer.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | col_index: col_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `col_index` [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/lexer.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | Range { start: start, end: end } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [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/lexer.rs:129:31 [INFO] [stderr] | [INFO] [stderr] 129 | Range { start: start, end: end } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [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/parser.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/ast.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | write!(f, "(\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/ast.rs:99:21 [INFO] [stderr] | [INFO] [stderr] 99 | write!(f, "\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/gatherer.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/gatherer.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/gatherer.rs:182:13 [INFO] [stderr] | [INFO] [stderr] 182 | source_file: source_file, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `source_file` [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/gatherer.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/internal.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | param_type: param_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_type` [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/internal.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | optional: optional, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `optional` [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/internal.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | types: types, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `types` [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/internal.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | funs: funs, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `funs` [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/internal.rs:264:13 [INFO] [stderr] | [INFO] [stderr] 264 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal.rs:265:13 [INFO] [stderr] | [INFO] [stderr] 265 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | docstring: docstring, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `docstring` [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/internal.rs:267:13 [INFO] [stderr] | [INFO] [stderr] 267 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/preprocessor.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | source_file: source_file, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `source_file` [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/preprocessor.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | ast: ast, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ast` [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/preprocessor.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/preprocessor.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/vm.rs:141:13 [INFO] [stderr] | [INFO] [stderr] 141 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/vm.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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/bytecode.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | fun_table: fun_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fun_table` [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/bytecode.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | type_table: type_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_table` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | const DEFINE_KEYWORD: &'static str = "&define"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | const EXTERN_KEYWORD: &'static str = "&extern"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:13:22 [INFO] [stderr] | [INFO] [stderr] 13 | const TYPE_KEYWORD: &'static str = "&type"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:14:25 [INFO] [stderr] | [INFO] [stderr] 14 | const INCLUDE_KEYWORD: &'static str = "&include"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:15:24 [INFO] [stderr] | [INFO] [stderr] 15 | const OPTIONAL_TOKEN: &'static str = "?"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:4:22 [INFO] [stderr] | [INFO] [stderr] 4 | pub const INT_TYPE: &'static str = ":int"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:5:25 [INFO] [stderr] | [INFO] [stderr] 5 | pub const STRING_TYPE: &'static str = ":string"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:6:24 [INFO] [stderr] | [INFO] [stderr] 6 | pub const LISTY_TYPE: &'static str = ":listy"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:7:22 [INFO] [stderr] | [INFO] [stderr] 7 | pub const ANY_TYPE: &'static str = ":any"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | const DEFINE_KEYWORD: &'static str = "&define"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | const EXTERN_KEYWORD: &'static str = "&extern"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:13:22 [INFO] [stderr] | [INFO] [stderr] 13 | const TYPE_KEYWORD: &'static str = "&type"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:14:25 [INFO] [stderr] | [INFO] [stderr] 14 | const INCLUDE_KEYWORD: &'static str = "&include"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/gatherer.rs:15:24 [INFO] [stderr] | [INFO] [stderr] 15 | const OPTIONAL_TOKEN: &'static str = "?"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:4:22 [INFO] [stderr] | [INFO] [stderr] 4 | pub const INT_TYPE: &'static str = ":int"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:5:25 [INFO] [stderr] | [INFO] [stderr] 5 | pub const STRING_TYPE: &'static str = ":string"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:6:24 [INFO] [stderr] | [INFO] [stderr] 6 | pub const LISTY_TYPE: &'static str = ":listy"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/internal.rs:7:22 [INFO] [stderr] | [INFO] [stderr] 7 | pub const ANY_TYPE: &'static str = ":any"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:90:69 [INFO] [stderr] | [INFO] [stderr] 90 | let now = now_spec.sec as f64 + (now_spec.nsec as f64 / 1000000000.0); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `1_000_000_000.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:90:69 [INFO] [stderr] | [INFO] [stderr] 90 | let now = now_spec.sec as f64 + (now_spec.nsec as f64 / 1000000000.0); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `1_000_000_000.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: variable `count` is assigned to, but never used [INFO] [stderr] --> src/bytecode.rs:113:33 [INFO] [stderr] | [INFO] [stderr] 113 | let mut count = 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_count` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param` [INFO] [stderr] --> src/bytecode.rs:157:41 [INFO] [stderr] | [INFO] [stderr] 157 | let ref param = fun.params[arg_index]; [INFO] [stderr] | ^^^^^ help: consider using `_param` instead [INFO] [stderr] [INFO] [stderr] warning: variable `count` is assigned to, but never used [INFO] [stderr] --> src/bytecode.rs:113:33 [INFO] [stderr] | [INFO] [stderr] 113 | let mut count = 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_count` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `param` [INFO] [stderr] --> src/bytecode.rs:157:41 [INFO] [stderr] | [INFO] [stderr] 157 | let ref param = fun.params[arg_index]; [INFO] [stderr] | ^^^^^ help: consider using `_param` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/vm.rs:362:13 [INFO] [stderr] | [INFO] [stderr] 362 | let mut bytecode = { [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/vm.rs:362:13 [INFO] [stderr] | [INFO] [stderr] 362 | let mut bytecode = { [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `type_table` [INFO] [stderr] --> src/bytecode.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | type_table: &'a TypeTable, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `type_table` [INFO] [stderr] --> src/bytecode.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | type_table: &'a TypeTable, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:20:20 [INFO] [stderr] | [INFO] [stderr] 20 | let fstr = match self { [INFO] [stderr] | ____________________^ [INFO] [stderr] 21 | | &Token::None => String::from("none"), [INFO] [stderr] 22 | | &Token::Eof(_) => String::from("EOF"), [INFO] [stderr] 23 | | &Token::Lparen(_) => String::from("left paren"), [INFO] [stderr] ... | [INFO] [stderr] 30 | | &Token::Error(_, ref e) => format!("syntax error: {}", e), [INFO] [stderr] 31 | | }; [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] 20 | let fstr = match *self { [INFO] [stderr] 21 | Token::None => String::from("none"), [INFO] [stderr] 22 | Token::Eof(_) => String::from("EOF"), [INFO] [stderr] 23 | Token::Lparen(_) => String::from("left paren"), [INFO] [stderr] 24 | Token::Rparen(_) => String::from("right paren"), [INFO] [stderr] 25 | Token::Identifier(_, ref s) => format!("{}", s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lexer.rs:25:45 [INFO] [stderr] | [INFO] [stderr] 25 | &Token::Identifier(_, ref s) => format!("{}", s), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match self { [INFO] [stderr] 39 | | &Token::Rparen(_) => true, [INFO] [stderr] 40 | | _ => false, [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] 38 | match *self { [INFO] [stderr] 39 | Token::Rparen(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / match self { [INFO] [stderr] 46 | | &Token::Comment(_, _) => true, [INFO] [stderr] 47 | | _ => false, [INFO] [stderr] 48 | | } [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] 45 | match *self { [INFO] [stderr] 46 | Token::Comment(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match self { [INFO] [stderr] 62 | | &Token::Lparen(r) => r, [INFO] [stderr] 63 | | &Token::Rparen(r) => r, [INFO] [stderr] 64 | | &Token::Identifier(r, _) => r, [INFO] [stderr] ... | [INFO] [stderr] 71 | | _ => Range::new(Pos::start(), Pos::start()), [INFO] [stderr] 72 | | } [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] 61 | match *self { [INFO] [stderr] 62 | Token::Lparen(r) => r, [INFO] [stderr] 63 | Token::Rparen(r) => r, [INFO] [stderr] 64 | Token::Identifier(r, _) => r, [INFO] [stderr] 65 | Token::StringLit(r, _) => r, [INFO] [stderr] 66 | Token::Number(r, _) => r, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:20:20 [INFO] [stderr] | [INFO] [stderr] 20 | let fstr = match self { [INFO] [stderr] | ____________________^ [INFO] [stderr] 21 | | &Token::None => String::from("none"), [INFO] [stderr] 22 | | &Token::Eof(_) => String::from("EOF"), [INFO] [stderr] 23 | | &Token::Lparen(_) => String::from("left paren"), [INFO] [stderr] ... | [INFO] [stderr] 30 | | &Token::Error(_, ref e) => format!("syntax error: {}", e), [INFO] [stderr] 31 | | }; [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] 20 | let fstr = match *self { [INFO] [stderr] 21 | Token::None => String::from("none"), [INFO] [stderr] 22 | Token::Eof(_) => String::from("EOF"), [INFO] [stderr] 23 | Token::Lparen(_) => String::from("left paren"), [INFO] [stderr] 24 | Token::Rparen(_) => String::from("right paren"), [INFO] [stderr] 25 | Token::Identifier(_, ref s) => format!("{}", s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lexer.rs:25:45 [INFO] [stderr] | [INFO] [stderr] 25 | &Token::Identifier(_, ref s) => format!("{}", s), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match self { [INFO] [stderr] 39 | | &Token::Rparen(_) => true, [INFO] [stderr] 40 | | _ => false, [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] 38 | match *self { [INFO] [stderr] 39 | Token::Rparen(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / match self { [INFO] [stderr] 46 | | &Token::Comment(_, _) => true, [INFO] [stderr] 47 | | _ => false, [INFO] [stderr] 48 | | } [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] 45 | match *self { [INFO] [stderr] 46 | Token::Comment(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lexer.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match self { [INFO] [stderr] 62 | | &Token::Lparen(r) => r, [INFO] [stderr] 63 | | &Token::Rparen(r) => r, [INFO] [stderr] 64 | | &Token::Identifier(r, _) => r, [INFO] [stderr] ... | [INFO] [stderr] 71 | | _ => Range::new(Pos::start(), Pos::start()), [INFO] [stderr] 72 | | } [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] 61 | match *self { [INFO] [stderr] 62 | Token::Lparen(r) => r, [INFO] [stderr] 63 | Token::Rparen(r) => r, [INFO] [stderr] 64 | Token::Identifier(r, _) => r, [INFO] [stderr] 65 | Token::StringLit(r, _) => r, [INFO] [stderr] 66 | Token::Number(r, _) => r, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lexer.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | / loop { [INFO] [stderr] 332 | | if let Some(c) = self.peek { [INFO] [stderr] 333 | | match c { [INFO] [stderr] 334 | | ' ' | '\t' | '\r' | '\n' => self.next(), [INFO] [stderr] ... | [INFO] [stderr] 342 | | } [INFO] [stderr] 343 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.peek { .. }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lexer.rs:351:9 [INFO] [stderr] | [INFO] [stderr] 351 | / match self.curr { [INFO] [stderr] 352 | | Some('\n') => self.range.end_line(), [INFO] [stderr] 353 | | _ => { } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some('\n') = self.curr { self.range.end_line() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lexer.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | / loop { [INFO] [stderr] 332 | | if let Some(c) = self.peek { [INFO] [stderr] 333 | | match c { [INFO] [stderr] 334 | | ' ' | '\t' | '\r' | '\n' => self.next(), [INFO] [stderr] ... | [INFO] [stderr] 342 | | } [INFO] [stderr] 343 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.peek { .. }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lexer.rs:351:9 [INFO] [stderr] | [INFO] [stderr] 351 | / match self.curr { [INFO] [stderr] 352 | | Some('\n') => self.range.end_line(), [INFO] [stderr] 353 | | _ => { } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some('\n') = self.curr { self.range.end_line() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &AST::Expr(_, ref exprs) => Value::List(exprs.iter() [INFO] [stderr] 29 | | .map(|x| x.to_value()) [INFO] [stderr] 30 | | .collect()), [INFO] [stderr] ... | [INFO] [stderr] 33 | | &AST::Number(_, n) => Value::Number(n), [INFO] [stderr] 34 | | } [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] 27 | match *self { [INFO] [stderr] 28 | AST::Expr(_, ref exprs) => Value::List(exprs.iter() [INFO] [stderr] 29 | .map(|x| x.to_value()) [INFO] [stderr] 30 | .collect()), [INFO] [stderr] 31 | AST::StringLit(_, ref s) => Value::String(s.to_string()), [INFO] [stderr] 32 | AST::Identifier(_, ref i) => Value::Identifier(i.to_string()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match self { [INFO] [stderr] 39 | | &AST::Expr(ref r, _) => r, [INFO] [stderr] 40 | | &AST::StringLit(ref r, _) => r, [INFO] [stderr] 41 | | &AST::Identifier(ref r, _) => r, [INFO] [stderr] 42 | | &AST::Number(ref r, _) => r, [INFO] [stderr] 43 | | } [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] 38 | match *self { [INFO] [stderr] 39 | AST::Expr(ref r, _) => r, [INFO] [stderr] 40 | AST::StringLit(ref r, _) => r, [INFO] [stderr] 41 | AST::Identifier(ref r, _) => r, [INFO] [stderr] 42 | AST::Number(ref r, _) => r, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / match self { [INFO] [stderr] 48 | | &AST::Identifier(_, ref s) => s, [INFO] [stderr] 49 | | _ => panic!("Attempted to grab identifier field from non-identifier"), [INFO] [stderr] 50 | | } [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] 47 | match *self { [INFO] [stderr] 48 | AST::Identifier(_, ref s) => s, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / match self { [INFO] [stderr] 64 | | &AST::Expr(_, ref v) => v, [INFO] [stderr] 65 | | _ => panic!("Attempted to grab expressions field from non-expression"), [INFO] [stderr] 66 | | } [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 | match *self { [INFO] [stderr] 64 | AST::Expr(_, ref v) => v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &AST::Expr(_, _) => true, [INFO] [stderr] 72 | | _ => false, [INFO] [stderr] 73 | | } [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] 70 | match *self { [INFO] [stderr] 71 | AST::Expr(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | / match self { [INFO] [stderr] 87 | | &AST::Identifier(_, _) => true, [INFO] [stderr] 88 | | _ => false, [INFO] [stderr] 89 | | } [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] 86 | match *self { [INFO] [stderr] 87 | AST::Identifier(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / match self { [INFO] [stderr] 94 | | &AST::Expr(_, ref v) => { [INFO] [stderr] 95 | | print_spaces(level * 4, f); [INFO] [stderr] 96 | | write!(f, "(\n").unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 115 | | }, [INFO] [stderr] 116 | | } [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] 93 | match *self { [INFO] [stderr] 94 | AST::Expr(_, ref v) => { [INFO] [stderr] 95 | print_spaces(level * 4, f); [INFO] [stderr] 96 | write!(f, "(\n").unwrap(); [INFO] [stderr] 97 | for e in v { [INFO] [stderr] 98 | e.display_recursive(f, level + 1).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | / match self { [INFO] [stderr] 124 | | &AST::Expr(ref r, ref v) => AST::Expr(*r, v.clone()), [INFO] [stderr] 125 | | &AST::StringLit(ref r, ref s) => AST::StringLit(*r, s.clone()), [INFO] [stderr] 126 | | &AST::Identifier(ref r, ref s) => AST::Identifier(*r, s.clone()), [INFO] [stderr] 127 | | &AST::Number(ref r, n) => AST::Number(*r, n), [INFO] [stderr] 128 | | } [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] 123 | match *self { [INFO] [stderr] 124 | AST::Expr(ref r, ref v) => AST::Expr(*r, v.clone()), [INFO] [stderr] 125 | AST::StringLit(ref r, ref s) => AST::StringLit(*r, s.clone()), [INFO] [stderr] 126 | AST::Identifier(ref r, ref s) => AST::Identifier(*r, s.clone()), [INFO] [stderr] 127 | AST::Number(ref r, n) => AST::Number(*r, n), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self { [INFO] [stderr] 28 | | &AST::Expr(_, ref exprs) => Value::List(exprs.iter() [INFO] [stderr] 29 | | .map(|x| x.to_value()) [INFO] [stderr] 30 | | .collect()), [INFO] [stderr] ... | [INFO] [stderr] 33 | | &AST::Number(_, n) => Value::Number(n), [INFO] [stderr] 34 | | } [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] 27 | match *self { [INFO] [stderr] 28 | AST::Expr(_, ref exprs) => Value::List(exprs.iter() [INFO] [stderr] 29 | .map(|x| x.to_value()) [INFO] [stderr] 30 | .collect()), [INFO] [stderr] 31 | AST::StringLit(_, ref s) => Value::String(s.to_string()), [INFO] [stderr] 32 | AST::Identifier(_, ref i) => Value::Identifier(i.to_string()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match self { [INFO] [stderr] 39 | | &AST::Expr(ref r, _) => r, [INFO] [stderr] 40 | | &AST::StringLit(ref r, _) => r, [INFO] [stderr] 41 | | &AST::Identifier(ref r, _) => r, [INFO] [stderr] 42 | | &AST::Number(ref r, _) => r, [INFO] [stderr] 43 | | } [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] 38 | match *self { [INFO] [stderr] 39 | AST::Expr(ref r, _) => r, [INFO] [stderr] 40 | AST::StringLit(ref r, _) => r, [INFO] [stderr] 41 | AST::Identifier(ref r, _) => r, [INFO] [stderr] 42 | AST::Number(ref r, _) => r, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / match self { [INFO] [stderr] 48 | | &AST::Identifier(_, ref s) => s, [INFO] [stderr] 49 | | _ => panic!("Attempted to grab identifier field from non-identifier"), [INFO] [stderr] 50 | | } [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] 47 | match *self { [INFO] [stderr] 48 | AST::Identifier(_, ref s) => s, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / match self { [INFO] [stderr] 64 | | &AST::Expr(_, ref v) => v, [INFO] [stderr] 65 | | _ => panic!("Attempted to grab expressions field from non-expression"), [INFO] [stderr] 66 | | } [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 | match *self { [INFO] [stderr] 64 | AST::Expr(_, ref v) => v, [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/gatherer.rs:25:31 [INFO] [stderr] | [INFO] [stderr] 25 | fn gather(&mut self, ast: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gatherer.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | / if let &AST::Expr(ref range, ref exprs) = ast_item { [INFO] [stderr] 30 | | let visit_result = self.visit_exprs(exprs); [INFO] [stderr] 31 | | if visit_result.is_err() { [INFO] [stderr] 32 | | visit_result.chain_err(|| format!("builtin expression at {}", range))?; [INFO] [stderr] ... | [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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] 29 | if let AST::Expr(ref range, ref exprs) = *ast_item { [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/gatherer.rs:44:38 [INFO] [stderr] | [INFO] [stderr] 44 | fn visit_exprs(&mut self, exprs: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: length comparison to zero [INFO] [stderr] --> src/gatherer.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | if exprs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `exprs.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/gatherer.rs:64:37 [INFO] [stderr] | [INFO] [stderr] 64 | fn visit_expr(&mut self, exprs: &Vec) -> Result; [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &AST::Expr(_, _) => true, [INFO] [stderr] 72 | | _ => false, [INFO] [stderr] 73 | | } [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] 70 | match *self { [INFO] [stderr] 71 | AST::Expr(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | / match self { [INFO] [stderr] 87 | | &AST::Identifier(_, _) => true, [INFO] [stderr] 88 | | _ => false, [INFO] [stderr] 89 | | } [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] 86 | match *self { [INFO] [stderr] 87 | AST::Identifier(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / match self { [INFO] [stderr] 94 | | &AST::Expr(_, ref v) => { [INFO] [stderr] 95 | | print_spaces(level * 4, f); [INFO] [stderr] 96 | | write!(f, "(\n").unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 115 | | }, [INFO] [stderr] 116 | | } [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] 93 | match *self { [INFO] [stderr] 94 | AST::Expr(_, ref v) => { [INFO] [stderr] 95 | print_spaces(level * 4, f); [INFO] [stderr] 96 | write!(f, "(\n").unwrap(); [INFO] [stderr] 97 | for e in v { [INFO] [stderr] 98 | e.display_recursive(f, level + 1).unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gatherer.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | / if let &AST::StringLit(_, ref p) = path_expr { [INFO] [stderr] 94 | | // add it to the paths list [INFO] [stderr] 95 | | let path = Path::new(p); [INFO] [stderr] 96 | | // ensure all paths exist [INFO] [stderr] ... | [INFO] [stderr] 105 | | index, path_expr).into()); [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] 93 | if let AST::StringLit(_, ref p) = *path_expr { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | / match self { [INFO] [stderr] 124 | | &AST::Expr(ref r, ref v) => AST::Expr(*r, v.clone()), [INFO] [stderr] 125 | | &AST::StringLit(ref r, ref s) => AST::StringLit(*r, s.clone()), [INFO] [stderr] 126 | | &AST::Identifier(ref r, ref s) => AST::Identifier(*r, s.clone()), [INFO] [stderr] 127 | | &AST::Number(ref r, n) => AST::Number(*r, n), [INFO] [stderr] 128 | | } [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] 123 | match *self { [INFO] [stderr] 124 | AST::Expr(ref r, ref v) => AST::Expr(*r, v.clone()), [INFO] [stderr] 125 | AST::StringLit(ref r, ref s) => AST::StringLit(*r, s.clone()), [INFO] [stderr] 126 | AST::Identifier(ref r, ref s) => AST::Identifier(*r, s.clone()), [INFO] [stderr] 127 | AST::Number(ref r, n) => AST::Number(*r, n), [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/gatherer.rs:25:31 [INFO] [stderr] | [INFO] [stderr] 25 | fn gather(&mut self, ast: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/gatherer.rs:187:37 [INFO] [stderr] | [INFO] [stderr] 187 | fn get_params(&self, expr_list: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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/gatherer.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | / if let &AST::Expr(ref range, ref exprs) = ast_item { [INFO] [stderr] 30 | | let visit_result = self.visit_exprs(exprs); [INFO] [stderr] 31 | | if visit_result.is_err() { [INFO] [stderr] 32 | | visit_result.chain_err(|| format!("builtin expression at {}", range))?; [INFO] [stderr] ... | [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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] 29 | if let AST::Expr(ref range, ref exprs) = *ast_item { [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/gatherer.rs:44:38 [INFO] [stderr] | [INFO] [stderr] 44 | fn visit_exprs(&mut self, exprs: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gatherer.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | let ref name_expr = expr_list[i]; [INFO] [stderr] | ----^^^^^^^^^^^^^---------------- help: try: `let name_expr = &expr_list[i];` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gatherer.rs:221:25 [INFO] [stderr] | [INFO] [stderr] 221 | let ref next_expr = expr_list[i]; [INFO] [stderr] | ----^^^^^^^^^^^^^---------------- help: try: `let next_expr = &expr_list[i];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/gatherer.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | if exprs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `exprs.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/gatherer.rs:64:37 [INFO] [stderr] | [INFO] [stderr] 64 | fn visit_expr(&mut self, exprs: &Vec) -> Result; [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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/gatherer.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | / if let &AST::StringLit(_, ref p) = path_expr { [INFO] [stderr] 94 | | // add it to the paths list [INFO] [stderr] 95 | | let path = Path::new(p); [INFO] [stderr] 96 | | // ensure all paths exist [INFO] [stderr] ... | [INFO] [stderr] 105 | | index, path_expr).into()); [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] 93 | if let AST::StringLit(_, ref p) = *path_expr { [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/gatherer.rs:381:46 [INFO] [stderr] | [INFO] [stderr] 381 | pub fn gather_and_link(&mut self, exprs: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: length comparison to zero [INFO] [stderr] --> src/gatherer.rs:406:24 [INFO] [stderr] | [INFO] [stderr] 406 | if proto_types.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `proto_types.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/gatherer.rs:187:37 [INFO] [stderr] | [INFO] [stderr] 187 | fn get_params(&self, expr_list: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gatherer.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | let ref name_expr = expr_list[i]; [INFO] [stderr] | ----^^^^^^^^^^^^^---------------- help: try: `let name_expr = &expr_list[i];` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gatherer.rs:221:25 [INFO] [stderr] | [INFO] [stderr] 221 | let ref next_expr = expr_list[i]; [INFO] [stderr] | ----^^^^^^^^^^^^^---------------- help: try: `let next_expr = &expr_list[i];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | / match self { [INFO] [stderr] 53 | | &Type::TypeDef(_, _) => true, [INFO] [stderr] 54 | | _ => false, [INFO] [stderr] 55 | | } [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 | match *self { [INFO] [stderr] 53 | Type::TypeDef(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match self { [INFO] [stderr] 69 | | &Type::Number => INT_TYPE, [INFO] [stderr] 70 | | &Type::Listy => LISTY_TYPE, [INFO] [stderr] 71 | | &Type::Str => STRING_TYPE, [INFO] [stderr] 72 | | &Type::TypeDef(ref name, _) => name, [INFO] [stderr] 73 | | &Type::Any => ANY_TYPE, [INFO] [stderr] 74 | | } [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] 68 | match *self { [INFO] [stderr] 69 | Type::Number => INT_TYPE, [INFO] [stderr] 70 | Type::Listy => LISTY_TYPE, [INFO] [stderr] 71 | Type::Str => STRING_TYPE, [INFO] [stderr] 72 | Type::TypeDef(ref name, _) => name, [INFO] [stderr] 73 | Type::Any => ANY_TYPE, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / if let &Type::TypeDef(_, ref other) = self { [INFO] [stderr] 80 | | other [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | else { [INFO] [stderr] 83 | | unreachable!() [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] 79 | if let Type::TypeDef(_, ref other) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:102:17 [INFO] [stderr] | [INFO] [stderr] 102 | / if let &Type::TypeDef(_, ref points_to) = t { [INFO] [stderr] 103 | | return self.get_type(points_to); [INFO] [stderr] 104 | | } [INFO] [stderr] 105 | | else { [INFO] [stderr] 106 | | return Some(t); [INFO] [stderr] 107 | | } [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] 102 | if let Type::TypeDef(_, ref points_to) = *t { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | / match t { [INFO] [stderr] 167 | | &Type::Number => debug!("type: number"), [INFO] [stderr] 168 | | &Type::Str => debug!("type: string"), [INFO] [stderr] 169 | | &Type::Listy => debug!("type: listy"), [INFO] [stderr] ... | [INFO] [stderr] 177 | | } [INFO] [stderr] 178 | | } [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] 166 | match *t { [INFO] [stderr] 167 | Type::Number => debug!("type: number"), [INFO] [stderr] 168 | Type::Str => debug!("type: string"), [INFO] [stderr] 169 | Type::Listy => debug!("type: listy"), [INFO] [stderr] 170 | Type::Any => debug!("type: any"), [INFO] [stderr] 171 | Type::TypeDef(ref from, _) => { [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/gatherer.rs:381:46 [INFO] [stderr] | [INFO] [stderr] 381 | pub fn gather_and_link(&mut self, exprs: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: length comparison to zero [INFO] [stderr] --> src/gatherer.rs:406:24 [INFO] [stderr] | [INFO] [stderr] 406 | if proto_types.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `proto_types.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/preprocessor.rs:53:45 [INFO] [stderr] | [INFO] [stderr] 53 | include_result.chain_err(|| format!("{}", self.source_file))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.source_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] = 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/internal.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | / match self { [INFO] [stderr] 53 | | &Type::TypeDef(_, _) => true, [INFO] [stderr] 54 | | _ => false, [INFO] [stderr] 55 | | } [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 | match *self { [INFO] [stderr] 53 | Type::TypeDef(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match self { [INFO] [stderr] 69 | | &Type::Number => INT_TYPE, [INFO] [stderr] 70 | | &Type::Listy => LISTY_TYPE, [INFO] [stderr] 71 | | &Type::Str => STRING_TYPE, [INFO] [stderr] 72 | | &Type::TypeDef(ref name, _) => name, [INFO] [stderr] 73 | | &Type::Any => ANY_TYPE, [INFO] [stderr] 74 | | } [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] 68 | match *self { [INFO] [stderr] 69 | Type::Number => INT_TYPE, [INFO] [stderr] 70 | Type::Listy => LISTY_TYPE, [INFO] [stderr] 71 | Type::Str => STRING_TYPE, [INFO] [stderr] 72 | Type::TypeDef(ref name, _) => name, [INFO] [stderr] 73 | Type::Any => ANY_TYPE, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/preprocessor.rs:111:38 [INFO] [stderr] | [INFO] [stderr] 111 | if expr.is_expr() && expr.exprs().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!expr.exprs().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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:79:9 [INFO] [stderr] --> src/preprocessor.rs:112:25 [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] 79 | / if let &Type::TypeDef(_, ref other) = self { [INFO] [stderr] 112 | let ref first = expr.exprs()[0]; [INFO] [stderr] 80 | | other [INFO] [stderr] | ----^^^^^^^^^------------------- help: try: `let first = &expr.exprs()[0];` [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | else { [INFO] [stderr] 83 | | unreachable!() [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] 79 | if let Type::TypeDef(_, ref other) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:102:17 [INFO] [stderr] | [INFO] [stderr] 102 | / if let &Type::TypeDef(_, ref points_to) = t { [INFO] [stderr] 103 | | return self.get_type(points_to); [INFO] [stderr] 104 | | } [INFO] [stderr] 105 | | else { [INFO] [stderr] 106 | | return Some(t); [INFO] [stderr] 107 | | } [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] 102 | if let Type::TypeDef(_, ref points_to) = *t { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/internal.rs:166:13 [INFO] [stderr] | [INFO] [stderr] 166 | / match t { [INFO] [stderr] 167 | | &Type::Number => debug!("type: number"), [INFO] [stderr] 168 | | &Type::Str => debug!("type: string"), [INFO] [stderr] 169 | | &Type::Listy => debug!("type: listy"), [INFO] [stderr] ... | [INFO] [stderr] 177 | | } [INFO] [stderr] 178 | | } [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] 166 | match *t { [INFO] [stderr] 167 | Type::Number => debug!("type: number"), [INFO] [stderr] 168 | Type::Str => debug!("type: string"), [INFO] [stderr] 169 | Type::Listy => debug!("type: listy"), [INFO] [stderr] 170 | Type::Any => debug!("type: any"), [INFO] [stderr] 171 | Type::TypeDef(ref from, _) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | / match self { [INFO] [stderr] 30 | | &Value::String(_) => "string", [INFO] [stderr] 31 | | &Value::List(_) => "list", [INFO] [stderr] 32 | | &Value::Number(_) => "number", [INFO] [stderr] ... | [INFO] [stderr] 36 | | &Value::EndArgs => "endargs", [INFO] [stderr] 37 | | } [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] 29 | match *self { [INFO] [stderr] 30 | Value::String(_) => "string", [INFO] [stderr] 31 | Value::List(_) => "list", [INFO] [stderr] 32 | Value::Number(_) => "number", [INFO] [stderr] 33 | Value::Identifier(_) => "identifier", [INFO] [stderr] 34 | Value::Boolean(_) => "boolean", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Value::String(_) | &Value::List(_) => true, [INFO] [stderr] 43 | | _ => false, [INFO] [stderr] 44 | | } [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] 41 | match *self { [INFO] [stderr] 42 | Value::String(_) | Value::List(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | / match self { [INFO] [stderr] 49 | | &Value::List(_) => true, [INFO] [stderr] 50 | | _ => false, [INFO] [stderr] 51 | | } [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] 48 | match *self { [INFO] [stderr] 49 | Value::List(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | / match self { [INFO] [stderr] 56 | | &Value::String(_) => true, [INFO] [stderr] 57 | | _ => false, [INFO] [stderr] 58 | | } [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] 55 | match *self { [INFO] [stderr] 56 | Value::String(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / match self { [INFO] [stderr] 63 | | &Value::Number(_) => true, [INFO] [stderr] 64 | | _ => false, [INFO] [stderr] 65 | | } [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] 62 | match *self { [INFO] [stderr] 63 | Value::Number(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | / match self { [INFO] [stderr] 86 | | &Value::String(ref s) => s.as_str(), [INFO] [stderr] 87 | | _ => panic!("called string() on non-String vm::Value"), [INFO] [stderr] 88 | | } [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] 85 | match *self { [INFO] [stderr] 86 | Value::String(ref s) => s.as_str(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / match self { [INFO] [stderr] 93 | | &Value::Number(n) => n, [INFO] [stderr] 94 | | _ => panic!("called number() on non-Number vm::Value"), [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] 92 | match *self { [INFO] [stderr] 93 | Value::Number(n) => n, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &Value::StartArgs(n) => n, [INFO] [stderr] 101 | | _ => panic!("called start_args() on non-StartArgs vm::Value"), [INFO] [stderr] 102 | | } [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] 99 | match *self { [INFO] [stderr] 100 | Value::StartArgs(n) => n, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | / match self { [INFO] [stderr] 116 | | &Value::EndArgs => true, [INFO] [stderr] 117 | | _ => false, [INFO] [stderr] 118 | | } [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] 115 | match *self { [INFO] [stderr] 116 | Value::EndArgs => true, [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/vm.rs:148:37 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn run(&mut self, bytecode: &Vec) -> Result<()>{ [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Bytecode]` [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/preprocessor.rs:53:45 [INFO] [stderr] | [INFO] [stderr] 53 | include_result.chain_err(|| format!("{}", self.source_file))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.source_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] = 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: length comparison to zero [INFO] [stderr] --> src/preprocessor.rs:111:38 [INFO] [stderr] | [INFO] [stderr] 111 | if expr.is_expr() && expr.exprs().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!expr.exprs().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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/preprocessor.rs:112:25 [INFO] [stderr] | [INFO] [stderr] 112 | let ref first = expr.exprs()[0]; [INFO] [stderr] | ----^^^^^^^^^------------------- help: try: `let first = &expr.exprs()[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | / match self { [INFO] [stderr] 30 | | &Value::String(_) => "string", [INFO] [stderr] 31 | | &Value::List(_) => "list", [INFO] [stderr] 32 | | &Value::Number(_) => "number", [INFO] [stderr] ... | [INFO] [stderr] 36 | | &Value::EndArgs => "endargs", [INFO] [stderr] 37 | | } [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] 29 | match *self { [INFO] [stderr] 30 | Value::String(_) => "string", [INFO] [stderr] 31 | Value::List(_) => "list", [INFO] [stderr] 32 | Value::Number(_) => "number", [INFO] [stderr] 33 | Value::Identifier(_) => "identifier", [INFO] [stderr] 34 | Value::Boolean(_) => "boolean", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Value::String(_) | &Value::List(_) => true, [INFO] [stderr] 43 | | _ => false, [INFO] [stderr] 44 | | } [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] 41 | match *self { [INFO] [stderr] 42 | Value::String(_) | Value::List(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | / match self { [INFO] [stderr] 49 | | &Value::List(_) => true, [INFO] [stderr] 50 | | _ => false, [INFO] [stderr] 51 | | } [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] 48 | match *self { [INFO] [stderr] 49 | Value::List(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | / match self { [INFO] [stderr] 56 | | &Value::String(_) => true, [INFO] [stderr] 57 | | _ => false, [INFO] [stderr] 58 | | } [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] 55 | match *self { [INFO] [stderr] 56 | Value::String(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / match self { [INFO] [stderr] 63 | | &Value::Number(_) => true, [INFO] [stderr] 64 | | _ => false, [INFO] [stderr] 65 | | } [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] 62 | match *self { [INFO] [stderr] 63 | Value::Number(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | / match self { [INFO] [stderr] 86 | | &Value::String(ref s) => s.as_str(), [INFO] [stderr] 87 | | _ => panic!("called string() on non-String vm::Value"), [INFO] [stderr] 88 | | } [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] 85 | match *self { [INFO] [stderr] 86 | Value::String(ref s) => s.as_str(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / match self { [INFO] [stderr] 93 | | &Value::Number(n) => n, [INFO] [stderr] 94 | | _ => panic!("called number() on non-Number vm::Value"), [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] 92 | match *self { [INFO] [stderr] 93 | Value::Number(n) => n, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &Value::StartArgs(n) => n, [INFO] [stderr] 101 | | _ => panic!("called start_args() on non-StartArgs vm::Value"), [INFO] [stderr] 102 | | } [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] 99 | match *self { [INFO] [stderr] 100 | Value::StartArgs(n) => n, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | / match self { [INFO] [stderr] 116 | | &Value::EndArgs => true, [INFO] [stderr] 117 | | _ => false, [INFO] [stderr] 118 | | } [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] 115 | match *self { [INFO] [stderr] 116 | Value::EndArgs => true, [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/vm.rs:148:37 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn run(&mut self, bytecode: &Vec) -> Result<()>{ [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Bytecode]` [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/vm.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | / match b { [INFO] [stderr] 161 | | &Bytecode::Call(ref fname, arg_count) => { [INFO] [stderr] 162 | | if self.has_function(fname) { [INFO] [stderr] 163 | | if !self.has_compiled_function(fname) { [INFO] [stderr] ... | [INFO] [stderr] 274 | | }, [INFO] [stderr] 275 | | } [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] 160 | match *b { [INFO] [stderr] 161 | Bytecode::Call(ref fname, arg_count) => { [INFO] [stderr] 162 | if self.has_function(fname) { [INFO] [stderr] 163 | if !self.has_compiled_function(fname) { [INFO] [stderr] 164 | let fun = self.fun_table [INFO] [stderr] 165 | .get_fun(fname) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/vm.rs:176:40 [INFO] [stderr] | [INFO] [stderr] 176 | let bytecode = self.fun_bytecode [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 177 | | .get(fname) [INFO] [stderr] 178 | | .unwrap() [INFO] [stderr] | |_____________________________________^ help: try this: `&self.fun_bytecode[fname]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/vm.rs:189:33 [INFO] [stderr] | [INFO] [stderr] 189 | let ref param_name = fun.params[arg_index] [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 189 | let param_name = &fun.params[arg_index] [INFO] [stderr] 190 | .name; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/vm.rs:195:33 [INFO] [stderr] | [INFO] [stderr] 195 | let ref param = fun.params[extras + arg_index]; [INFO] [stderr] | ----^^^^^^^^^---------------------------------- help: try: `let param = &fun.params[extras + arg_index];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | / match b { [INFO] [stderr] 161 | | &Bytecode::Call(ref fname, arg_count) => { [INFO] [stderr] 162 | | if self.has_function(fname) { [INFO] [stderr] 163 | | if !self.has_compiled_function(fname) { [INFO] [stderr] ... | [INFO] [stderr] 274 | | }, [INFO] [stderr] 275 | | } [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] 160 | match *b { [INFO] [stderr] 161 | Bytecode::Call(ref fname, arg_count) => { [INFO] [stderr] 162 | if self.has_function(fname) { [INFO] [stderr] 163 | if !self.has_compiled_function(fname) { [INFO] [stderr] 164 | let fun = self.fun_table [INFO] [stderr] 165 | .get_fun(fname) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/vm.rs:176:40 [INFO] [stderr] | [INFO] [stderr] 176 | let bytecode = self.fun_bytecode [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 177 | | .get(fname) [INFO] [stderr] 178 | | .unwrap() [INFO] [stderr] | |_____________________________________^ help: try this: `&self.fun_bytecode[fname]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/vm.rs:189:33 [INFO] [stderr] | [INFO] [stderr] 189 | let ref param_name = fun.params[arg_index] [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 189 | let param_name = &fun.params[arg_index] [INFO] [stderr] 190 | .name; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/vm.rs:195:33 [INFO] [stderr] | [INFO] [stderr] 195 | let ref param = fun.params[extras + arg_index]; [INFO] [stderr] | ----^^^^^^^^^---------------------------------- help: try: `let param = &fun.params[extras + arg_index];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/vm.rs:200:33 [INFO] [stderr] | [INFO] [stderr] 200 | / match base_type { [INFO] [stderr] 201 | | &Type::Number => Value::Number(0.0), [INFO] [stderr] 202 | | &Type::Str => Value::String(String::new()), [INFO] [stderr] 203 | | &Type::Any | &Type::Listy => Value::List(vec![]), [INFO] [stderr] 204 | | &Type::TypeDef(_, _) => panic!("Reached typedef as base type when deducing default values"), [INFO] [stderr] 205 | | } [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] 200 | match *base_type { [INFO] [stderr] 201 | Type::Number => Value::Number(0.0), [INFO] [stderr] 202 | Type::Str => Value::String(String::new()), [INFO] [stderr] 203 | Type::Any | Type::Listy => Value::List(vec![]), [INFO] [stderr] 204 | Type::TypeDef(_, _) => panic!("Reached typedef as base type when deducing default values"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:264:44 [INFO] [stderr] | [INFO] [stderr] 264 | Value::String(s) => if s.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:267:42 [INFO] [stderr] | [INFO] [stderr] 267 | Value::List(l) => if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:297:12 [INFO] [stderr] | [INFO] [stderr] 297 | if self.value_stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.value_stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:307:12 [INFO] [stderr] | [INFO] [stderr] 307 | if self.value_stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.value_stack.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/vm.rs:200:33 [INFO] [stderr] | [INFO] [stderr] 200 | / match base_type { [INFO] [stderr] 201 | | &Type::Number => Value::Number(0.0), [INFO] [stderr] 202 | | &Type::Str => Value::String(String::new()), [INFO] [stderr] 203 | | &Type::Any | &Type::Listy => Value::List(vec![]), [INFO] [stderr] 204 | | &Type::TypeDef(_, _) => panic!("Reached typedef as base type when deducing default values"), [INFO] [stderr] 205 | | } [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] 200 | match *base_type { [INFO] [stderr] 201 | Type::Number => Value::Number(0.0), [INFO] [stderr] 202 | Type::Str => Value::String(String::new()), [INFO] [stderr] 203 | Type::Any | Type::Listy => Value::List(vec![]), [INFO] [stderr] 204 | Type::TypeDef(_, _) => panic!("Reached typedef as base type when deducing default values"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:264:44 [INFO] [stderr] | [INFO] [stderr] 264 | Value::String(s) => if s.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:267:42 [INFO] [stderr] | [INFO] [stderr] 267 | Value::List(l) => if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/vm.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | for ref p in &bytecode { [INFO] [stderr] | ^^^^^ --------- help: try: `let p = &&bytecode;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:297:12 [INFO] [stderr] | [INFO] [stderr] 297 | if self.value_stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.value_stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vm.rs:307:12 [INFO] [stderr] | [INFO] [stderr] 307 | if self.value_stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.value_stack.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bytecode.rs:47:36 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn to_bytecode(&self, ast: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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/bytecode.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | / match expr { [INFO] [stderr] 51 | | &AST::Expr(ref r, _) => { [INFO] [stderr] 52 | | match self.expr_to_bytecode(expr) { [INFO] [stderr] 53 | | Ok(mut codez) => code.append(&mut codez), [INFO] [stderr] ... | [INFO] [stderr] 61 | | &AST::Number(_, n) => code.push(Bytecode::Push(Value::Number(n))), [INFO] [stderr] 62 | | } [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] 50 | match *expr { [INFO] [stderr] 51 | AST::Expr(ref r, _) => { [INFO] [stderr] 52 | match self.expr_to_bytecode(expr) { [INFO] [stderr] 53 | Ok(mut codez) => code.append(&mut codez), [INFO] [stderr] 54 | e => { // braces necessary because of some rust weirdness [INFO] [stderr] 55 | e.chain_err(|| format!("{}", r))?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bytecode.rs:72:12 [INFO] [stderr] | [INFO] [stderr] 72 | if exprs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `exprs.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:77:17 [INFO] [stderr] | [INFO] [stderr] 77 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bytecode.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | / match first { [INFO] [stderr] 79 | | // if it's an expression, get what that expression is; [INFO] [stderr] 80 | | // TODO(alek): add function stack so we can just use "pushfn" and "call" instructions [INFO] [stderr] 81 | | &AST::Expr(_, _) => [INFO] [stderr] ... | [INFO] [stderr] 179 | | return Err("attempt to call number literal as a function".into()), [INFO] [stderr] 180 | | } [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] 78 | match *first { [INFO] [stderr] 79 | // if it's an expression, get what that expression is; [INFO] [stderr] 80 | // TODO(alek): add function stack so we can just use "pushfn" and "call" instructions [INFO] [stderr] 81 | AST::Expr(_, _) => [INFO] [stderr] 82 | return Err("attempt to call expression as a function (not yet supported)".into()), [INFO] [stderr] 83 | // honestly, just treat string literals as identifiers in this context [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/bytecode.rs:114:42 [INFO] [stderr] | [INFO] [stderr] 114 | let args = exprs.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:157:37 [INFO] [stderr] | [INFO] [stderr] 157 | let ref param = fun.params[arg_index]; [INFO] [stderr] | ----^^^^^^^^^------------------------- help: try: `let param = &fun.params[arg_index];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:158:37 [INFO] [stderr] | [INFO] [stderr] 158 | let ref arg = args[arg_index]; [INFO] [stderr] | ----^^^^^^^------------------- help: try: `let arg = &args[arg_index];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/bytecode.rs:204:18 [INFO] [stderr] | [INFO] [stderr] 204 | else { [INFO] [stderr] | __________________^ [INFO] [stderr] 205 | | count += 1; [INFO] [stderr] 206 | | } [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/bytecode.rs:201:31 [INFO] [stderr] | [INFO] [stderr] 201 | if param.optional { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 202 | | count += 1; [INFO] [stderr] 203 | | } [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/vm.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | for ref p in &bytecode { [INFO] [stderr] | ^^^^^ --------- help: try: `let p = &&bytecode;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bytecode.rs:47:36 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn to_bytecode(&self, ast: &Vec) -> Result> { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[AST]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:215:13 [INFO] [stderr] | [INFO] [stderr] 215 | let ref setz = exprs[1]; [INFO] [stderr] | ----^^^^^^^^------------ help: try: `let setz = &exprs[1];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode.rs:216:24 [INFO] [stderr] | [INFO] [stderr] 216 | let the_rest = exprs [INFO] [stderr] | ________________________^ [INFO] [stderr] 217 | | .iter() [INFO] [stderr] 218 | | .skip(2) [INFO] [stderr] 219 | | .map(|x| x.clone()) [INFO] [stderr] | |_______________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 216 | let the_rest = exprs [INFO] [stderr] 217 | .iter() [INFO] [stderr] 218 | .skip(2).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bytecode.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | / match expr { [INFO] [stderr] 51 | | &AST::Expr(ref r, _) => { [INFO] [stderr] 52 | | match self.expr_to_bytecode(expr) { [INFO] [stderr] 53 | | Ok(mut codez) => code.append(&mut codez), [INFO] [stderr] ... | [INFO] [stderr] 61 | | &AST::Number(_, n) => code.push(Bytecode::Push(Value::Number(n))), [INFO] [stderr] 62 | | } [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] 50 | match *expr { [INFO] [stderr] 51 | AST::Expr(ref r, _) => { [INFO] [stderr] 52 | match self.expr_to_bytecode(expr) { [INFO] [stderr] 53 | Ok(mut codez) => code.append(&mut codez), [INFO] [stderr] 54 | e => { // braces necessary because of some rust weirdness [INFO] [stderr] 55 | e.chain_err(|| format!("{}", r))?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode.rs:272:28 [INFO] [stderr] | [INFO] [stderr] 272 | let the_rest = exprs [INFO] [stderr] | ____________________________^ [INFO] [stderr] 273 | | .iter() [INFO] [stderr] 274 | | .skip(1) [INFO] [stderr] 275 | | .map(|x| x.clone()) [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 272 | let the_rest = exprs [INFO] [stderr] 273 | .iter() [INFO] [stderr] 274 | .skip(1).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode.rs:301:28 [INFO] [stderr] | [INFO] [stderr] 301 | let the_rest = exprs [INFO] [stderr] | ____________________________^ [INFO] [stderr] 302 | | .iter() [INFO] [stderr] 303 | | .skip(1) [INFO] [stderr] 304 | | .map(|x| x.clone()) [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 301 | let the_rest = exprs [INFO] [stderr] 302 | .iter() [INFO] [stderr] 303 | .skip(1).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bytecode.rs:72:12 [INFO] [stderr] | [INFO] [stderr] 72 | if exprs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `exprs.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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:77:17 [INFO] [stderr] | [INFO] [stderr] 77 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bytecode.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | / match first { [INFO] [stderr] 79 | | // if it's an expression, get what that expression is; [INFO] [stderr] 80 | | // TODO(alek): add function stack so we can just use "pushfn" and "call" instructions [INFO] [stderr] 81 | | &AST::Expr(_, _) => [INFO] [stderr] ... | [INFO] [stderr] 179 | | return Err("attempt to call number literal as a function".into()), [INFO] [stderr] 180 | | } [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] 78 | match *first { [INFO] [stderr] 79 | // if it's an expression, get what that expression is; [INFO] [stderr] 80 | // TODO(alek): add function stack so we can just use "pushfn" and "call" instructions [INFO] [stderr] 81 | AST::Expr(_, _) => [INFO] [stderr] 82 | return Err("attempt to call expression as a function (not yet supported)".into()), [INFO] [stderr] 83 | // honestly, just treat string literals as identifiers in this context [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/bytecode.rs:114:42 [INFO] [stderr] | [INFO] [stderr] 114 | let args = exprs.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:157:37 [INFO] [stderr] | [INFO] [stderr] 157 | let ref param = fun.params[arg_index]; [INFO] [stderr] | ----^^^^^^^^^------------------------- help: try: `let param = &fun.params[arg_index];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:158:37 [INFO] [stderr] | [INFO] [stderr] 158 | let ref arg = args[arg_index]; [INFO] [stderr] | ----^^^^^^^------------------- help: try: `let arg = &args[arg_index];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/bytecode.rs:204:18 [INFO] [stderr] | [INFO] [stderr] 204 | else { [INFO] [stderr] | __________________^ [INFO] [stderr] 205 | | count += 1; [INFO] [stderr] 206 | | } [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/bytecode.rs:201:31 [INFO] [stderr] | [INFO] [stderr] 201 | if param.optional { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 202 | | count += 1; [INFO] [stderr] 203 | | } [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:215:13 [INFO] [stderr] | [INFO] [stderr] 215 | let ref setz = exprs[1]; [INFO] [stderr] | ----^^^^^^^^------------ help: try: `let setz = &exprs[1];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode.rs:216:24 [INFO] [stderr] | [INFO] [stderr] 216 | let the_rest = exprs [INFO] [stderr] | ________________________^ [INFO] [stderr] 217 | | .iter() [INFO] [stderr] 218 | | .skip(2) [INFO] [stderr] 219 | | .map(|x| x.clone()) [INFO] [stderr] | |_______________________________^ [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] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 216 | let the_rest = exprs [INFO] [stderr] 217 | .iter() [INFO] [stderr] 218 | .skip(2).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode.rs:272:28 [INFO] [stderr] | [INFO] [stderr] 272 | let the_rest = exprs [INFO] [stderr] | ____________________________^ [INFO] [stderr] 273 | | .iter() [INFO] [stderr] 274 | | .skip(1) [INFO] [stderr] 275 | | .map(|x| x.clone()) [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 272 | let the_rest = exprs [INFO] [stderr] 273 | .iter() [INFO] [stderr] 274 | .skip(1).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/bytecode.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | let ref first = exprs[0]; [INFO] [stderr] | ----^^^^^^^^^------------ help: try: `let first = &exprs[0];` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/bytecode.rs:301:28 [INFO] [stderr] | [INFO] [stderr] 301 | let the_rest = exprs [INFO] [stderr] | ____________________________^ [INFO] [stderr] 302 | | .iter() [INFO] [stderr] 303 | | .skip(1) [INFO] [stderr] 304 | | .map(|x| x.clone()) [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 301 | let the_rest = exprs [INFO] [stderr] 302 | .iter() [INFO] [stderr] 303 | .skip(1).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:144:67 [INFO] [stderr] | [INFO] [stderr] 144 | vm::Value::String(ref s) => v.push(vm::Value::Boolean(s.len() == 0)), [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:145:65 [INFO] [stderr] | [INFO] [stderr] 145 | vm::Value::List(ref l) => v.push(vm::Value::Boolean(l.len() == 0)), [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:162:40 [INFO] [stderr] | [INFO] [stderr] 162 | vm::Value::String(s) => if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:168:38 [INFO] [stderr] | [INFO] [stderr] 168 | vm::Value::List(l) => if l.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!l.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/builtins.rs:182:13 [INFO] [stderr] | [INFO] [stderr] 182 | Err(format!("argument to `cdr' function must be listy").into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"argument to `cdr' function must be listy".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 zero [INFO] [stderr] --> src/builtins.rs:200:38 [INFO] [stderr] | [INFO] [stderr] 200 | vm::Value::List(l) => if l.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!l.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/builtins.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | Err(format!("argument to `car' function must be listy").into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"argument to `car' function must be listy".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: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:227:12 [INFO] [stderr] | [INFO] [stderr] 227 | Ok(v.push(vm::Value::Number(left_val.number() + right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 227 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:241:12 [INFO] [stderr] | [INFO] [stderr] 241 | Ok(v.push(vm::Value::Number(left_val.number() - right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 241 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:254:12 [INFO] [stderr] | [INFO] [stderr] 254 | Ok(v.push(vm::Value::Number(left_val.number() * right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 254 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:267:12 [INFO] [stderr] | [INFO] [stderr] 267 | Ok(v.push(vm::Value::Number(left_val.number() / right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 267 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/builtins.rs:297:18 [INFO] [stderr] | [INFO] [stderr] 297 | open(CString::new(path).unwrap().as_ptr(), open_flags, 0o644) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::temporary_cstring_as_ptr)] on by default [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/builtins.rs:297:18 [INFO] [stderr] | [INFO] [stderr] 297 | open(CString::new(path).unwrap().as_ptr(), open_flags, 0o644) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:299:12 [INFO] [stderr] | [INFO] [stderr] 299 | Ok(v.push(vm::Value::Number(fd as f64))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 299 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/builtins.rs:299:37 [INFO] [stderr] | [INFO] [stderr] 299 | Ok(v.push(vm::Value::Number(fd as f64))) [INFO] [stderr] | ^^^^^^^^^ help: try: `f64::from(fd)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:313:12 [INFO] [stderr] | [INFO] [stderr] 313 | if fd_num.floor() != fd_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(fd_num.floor() - fd_num).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/builtins.rs:313:12 [INFO] [stderr] | [INFO] [stderr] 313 | if fd_num.floor() != fd_num { [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/builtins.rs:321:38 [INFO] [stderr] | [INFO] [stderr] 321 | v.push(vm::Value::Number(result as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:341:12 [INFO] [stderr] | [INFO] [stderr] 341 | if fd_num.floor() != fd_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(fd_num.floor() - fd_num).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:341:12 [INFO] [stderr] | [INFO] [stderr] 341 | if fd_num.floor() != fd_num { [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:376:12 [INFO] [stderr] | [INFO] [stderr] 376 | if fd_num.floor() != fd_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(fd_num.floor() - fd_num).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:376:12 [INFO] [stderr] | [INFO] [stderr] 376 | if fd_num.floor() != fd_num { [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:382:17 [INFO] [stderr] | [INFO] [stderr] 382 | else if count_num.floor() != count_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(count_num.floor() - count_num).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:382:17 [INFO] [stderr] | [INFO] [stderr] 382 | else if count_num.floor() != count_num { [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: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/builtins.rs:400:44 [INFO] [stderr] | [INFO] [stderr] 400 | .map(|x| vm::Value::Number(x as f64)) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:144:67 [INFO] [stderr] | [INFO] [stderr] 144 | vm::Value::String(ref s) => v.push(vm::Value::Boolean(s.len() == 0)), [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:145:65 [INFO] [stderr] | [INFO] [stderr] 145 | vm::Value::List(ref l) => v.push(vm::Value::Boolean(l.len() == 0)), [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/builtins.rs:162:40 [INFO] [stderr] | [INFO] [stderr] 162 | vm::Value::String(s) => if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 40 [INFO] [stderr] --> src/main.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / fn main() { [INFO] [stderr] 86 | | // init logger [INFO] [stderr] 87 | | { [INFO] [stderr] 88 | | let logger_format = |record: &LogRecord| { [INFO] [stderr] ... | [INFO] [stderr] 229 | | trace!("Clean exit"); [INFO] [stderr] 230 | | } [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: length comparison to zero [INFO] [stderr] --> src/builtins.rs:168:38 [INFO] [stderr] | [INFO] [stderr] 168 | vm::Value::List(l) => if l.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!l.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/builtins.rs:182:13 [INFO] [stderr] | [INFO] [stderr] 182 | Err(format!("argument to `cdr' function must be listy").into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"argument to `cdr' function must be listy".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 zero [INFO] [stderr] --> src/builtins.rs:200:38 [INFO] [stderr] | [INFO] [stderr] 200 | vm::Value::List(l) => if l.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!l.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/builtins.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | Err(format!("argument to `car' function must be listy").into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"argument to `car' function must be listy".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: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:227:12 [INFO] [stderr] | [INFO] [stderr] 227 | Ok(v.push(vm::Value::Number(left_val.number() + right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 227 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:241:12 [INFO] [stderr] | [INFO] [stderr] 241 | Ok(v.push(vm::Value::Number(left_val.number() - right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 241 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:254:12 [INFO] [stderr] | [INFO] [stderr] 254 | Ok(v.push(vm::Value::Number(left_val.number() * right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 254 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:267:12 [INFO] [stderr] | [INFO] [stderr] 267 | Ok(v.push(vm::Value::Number(left_val.number() / right_val.number()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 267 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/builtins.rs:297:18 [INFO] [stderr] | [INFO] [stderr] 297 | open(CString::new(path).unwrap().as_ptr(), open_flags, 0o644) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::temporary_cstring_as_ptr)] on by default [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/builtins.rs:297:18 [INFO] [stderr] | [INFO] [stderr] 297 | open(CString::new(path).unwrap().as_ptr(), open_flags, 0o644) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/builtins.rs:299:12 [INFO] [stderr] | [INFO] [stderr] 299 | Ok(v.push(vm::Value::Number(fd as f64))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 299 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/builtins.rs:299:37 [INFO] [stderr] | [INFO] [stderr] 299 | Ok(v.push(vm::Value::Number(fd as f64))) [INFO] [stderr] | ^^^^^^^^^ help: try: `f64::from(fd)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:313:12 [INFO] [stderr] | [INFO] [stderr] 313 | if fd_num.floor() != fd_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(fd_num.floor() - fd_num).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/builtins.rs:313:12 [INFO] [stderr] | [INFO] [stderr] 313 | if fd_num.floor() != fd_num { [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/builtins.rs:321:38 [INFO] [stderr] | [INFO] [stderr] 321 | v.push(vm::Value::Number(result as f64)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:341:12 [INFO] [stderr] | [INFO] [stderr] 341 | if fd_num.floor() != fd_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(fd_num.floor() - fd_num).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:341:12 [INFO] [stderr] | [INFO] [stderr] 341 | if fd_num.floor() != fd_num { [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:376:12 [INFO] [stderr] | [INFO] [stderr] 376 | if fd_num.floor() != fd_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(fd_num.floor() - fd_num).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:376:12 [INFO] [stderr] | [INFO] [stderr] 376 | if fd_num.floor() != fd_num { [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:382:17 [INFO] [stderr] | [INFO] [stderr] 382 | else if count_num.floor() != count_num { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(count_num.floor() - count_num).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:382:17 [INFO] [stderr] | [INFO] [stderr] 382 | else if count_num.floor() != count_num { [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: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/builtins.rs:400:44 [INFO] [stderr] | [INFO] [stderr] 400 | .map(|x| vm::Value::Number(x as f64)) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:90:46 [INFO] [stderr] | [INFO] [stderr] 90 | let now = now_spec.sec as f64 + (now_spec.nsec as f64 / 1000000000.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(now_spec.nsec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/main.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | / if let &Err(ref err) = &read_result { [INFO] [stderr] 117 | | exit_error(format!("could not read {}: {}", config.file, err)); [INFO] [stderr] 118 | | } [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] 116 | if let Err(ref err) = read_result { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 40 [INFO] [stderr] --> src/main.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / fn main() { [INFO] [stderr] 86 | | // init logger [INFO] [stderr] 87 | | { [INFO] [stderr] 88 | | let logger_format = |record: &LogRecord| { [INFO] [stderr] ... | [INFO] [stderr] 229 | | trace!("Clean exit"); [INFO] [stderr] 230 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: The function/method `::new` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:163:53 [INFO] [stderr] | [INFO] [stderr] 163 | let to_bytecode = bytecode::ToBytecode::new(&mut fun_table, &mut type_table); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `::new` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:163:69 [INFO] [stderr] | [INFO] [stderr] 163 | let to_bytecode = bytecode::ToBytecode::new(&mut fun_table, &mut type_table); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:90:46 [INFO] [stderr] | [INFO] [stderr] 90 | let now = now_spec.sec as f64 + (now_spec.nsec as f64 / 1000000000.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(now_spec.nsec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/main.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | / if let &Err(ref err) = &read_result { [INFO] [stderr] 117 | | exit_error(format!("could not read {}: {}", config.file, err)); [INFO] [stderr] 118 | | } [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] 116 | if let Err(ref err) = read_result { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:207:26 [INFO] [stderr] | [INFO] [stderr] 207 | .expect(format!("Double fault: attempted to get details of function `{}' but it did not exist", fname).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Double fault: attempted to get details of function `{}' but it did not exist", fname))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: The function/method `::new` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:163:53 [INFO] [stderr] | [INFO] [stderr] 163 | let to_bytecode = bytecode::ToBytecode::new(&mut fun_table, &mut type_table); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `::new` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:163:69 [INFO] [stderr] | [INFO] [stderr] 163 | let to_bytecode = bytecode::ToBytecode::new(&mut fun_table, &mut type_table); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:207:26 [INFO] [stderr] | [INFO] [stderr] 207 | .expect(format!("Double fault: attempted to get details of function `{}' but it did not exist", fname).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Double fault: attempted to get details of function `{}' but it did not exist", fname))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rasp`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: Could not compile `rasp`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "907ed03ed98e4bd25ef719c5ae71b18a45cee50d6bb93d5409141b03d445e776"` [INFO] running `"docker" "rm" "-f" "907ed03ed98e4bd25ef719c5ae71b18a45cee50d6bb93d5409141b03d445e776"` [INFO] [stdout] 907ed03ed98e4bd25ef719c5ae71b18a45cee50d6bb93d5409141b03d445e776