[INFO] crate kailua_check 1.1.0 is already in cache [INFO] extracting crate kailua_check 1.1.0 into work/ex/clippy-test-run/sources/stable/reg/kailua_check/1.1.0 [INFO] extracting crate kailua_check 1.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kailua_check/1.1.0 [INFO] validating manifest of kailua_check-1.1.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of kailua_check-1.1.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing kailua_check-1.1.0 [INFO] removed 1 missing tests [INFO] removed path dependency kailua_diag from kailua_check-1.1.0 [INFO] removed path dependency kailua_env from kailua_check-1.1.0 [INFO] removed path dependency kailua_syntax from kailua_check-1.1.0 [INFO] removed path dependency kailua_types from kailua_check-1.1.0 [INFO] removed path dependency kailua_test from kailua_check-1.1.0 [INFO] finished frobbing kailua_check-1.1.0 [INFO] frobbed toml for kailua_check-1.1.0 written to work/ex/clippy-test-run/sources/stable/reg/kailua_check/1.1.0/Cargo.toml [INFO] started frobbing kailua_check-1.1.0 [INFO] removed 1 missing tests [INFO] removed path dependency kailua_diag from kailua_check-1.1.0 [INFO] removed path dependency kailua_env from kailua_check-1.1.0 [INFO] removed path dependency kailua_syntax from kailua_check-1.1.0 [INFO] removed path dependency kailua_types from kailua_check-1.1.0 [INFO] removed path dependency kailua_test from kailua_check-1.1.0 [INFO] finished frobbing kailua_check-1.1.0 [INFO] frobbed toml for kailua_check-1.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kailua_check/1.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting kailua_check-1.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/kailua_check/1.1.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 366d9759cdc838df6279b21a1be18c5fbb2b4058af42070d3f1673758696cd76 [INFO] running `"docker" "start" "-a" "366d9759cdc838df6279b21a1be18c5fbb2b4058af42070d3f1673758696cd76"` [INFO] [stderr] warning: An explicit [[test]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other test targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a test target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/tests/kailua-check-test.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a test target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autotests = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] Checking kailua_env v1.0.4 [INFO] [stderr] Checking parse-generics-shim v0.1.1 [INFO] [stderr] Checking kailua_diag v1.0.4 [INFO] [stderr] Checking kailua_syntax v1.1.0 [INFO] [stderr] Checking kailua_test v1.0.4 [INFO] [stderr] Checking kailua_types v1.1.0 [INFO] [stderr] Checking kailua_check v1.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/options.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/options.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/env.rs:74:31 [INFO] [stderr] | [INFO] [stderr] 74 | IdDisplay { id: self, ctx: ctx } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ctx` [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/env.rs:251:65 [INFO] [stderr] | [INFO] [stderr] 251 | self.types.insert(name.base, TypeDef { span: name.span, ty: ty }).is_none() [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/env.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | report: report, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `report` [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/env.rs:439:17 [INFO] [stderr] | [INFO] [stderr] 439 | classes: classes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `classes` [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/env.rs:680:13 [INFO] [stderr] | [INFO] [stderr] 680 | context: context, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `context` [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/env.rs:681:13 [INFO] [stderr] | [INFO] [stderr] 681 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [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/env.rs:682:13 [INFO] [stderr] | [INFO] [stderr] 682 | map_index: map_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `map_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/env.rs:1071:56 [INFO] [stderr] | [INFO] [stderr] 1071 | self.error(nameref, m::CannotRedefineVar { name: name }).done()?; [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/env.rs:1369:66 [INFO] [stderr] | [INFO] [stderr] 1369 | ctx.report.error(name, m::ClassSystemAlreadyExists { 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/env.rs:1423:53 [INFO] [stderr] | [INFO] [stderr] 1423 | self.error(name, m::NoSuchClassSystem { name: name }).done()?; [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/class_system/gideros.rs:81:21 [INFO] [stderr] | [INFO] [stderr] 81 | Ancestors { classes: classes, current: Some(current) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `classes` [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/class_system/gideros.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | generation: generation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generation` [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/class_system/gideros.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | parent: parent, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [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/check.rs:232:19 [INFO] [stderr] | [INFO] [stderr] 232 | Checker { env: env, pending_modules: Vec::new() } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/check.rs:531:29 [INFO] [stderr] | [INFO] [stderr] 531 | TySeq { head: head, tail: tail } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `head` [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/check.rs:531:41 [INFO] [stderr] | [INFO] [stderr] 531 | TySeq { head: head, tail: tail } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `tail` [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/check.rs:923:21 [INFO] [stderr] | [INFO] [stderr] 923 | Ok(Lvalue { found: found, slot: slot.with_loc(expspan) }) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `found` [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/check.rs:1691:25 [INFO] [stderr] | [INFO] [stderr] 1691 | tag: tag, selfparam: selfinfo, sig: sig, block: block, declspan: stmt.span, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tag` [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/check.rs:1691:56 [INFO] [stderr] | [INFO] [stderr] 1691 | tag: tag, selfparam: selfinfo, sig: sig, block: block, declspan: stmt.span, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [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/check.rs:1691:66 [INFO] [stderr] | [INFO] [stderr] 1691 | tag: tag, selfparam: selfinfo, sig: sig, block: block, declspan: stmt.span, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/check.rs:1836:75 [INFO] [stderr] | [INFO] [stderr] 1836 | self.env.error(name, m::NoSuchPredefinedClassSystem { name: name }).done()?; [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/check.rs:2109:45 [INFO] [stderr] | [INFO] [stderr] 2109 | let frame = Frame { vararg: vainfo, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `returns` [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/check.rs:2201:31 [INFO] [stderr] | [INFO] [stderr] 2201 | let func = Function { args: args, argnames: argnames, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/check.rs:2201:43 [INFO] [stderr] | [INFO] [stderr] 2201 | let func = Function { args: args, argnames: argnames, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `argnames` [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/check.rs:2201:63 [INFO] [stderr] | [INFO] [stderr] 2201 | let func = Function { args: args, argnames: argnames, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `returns` [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/check.rs:2438:65 [INFO] [stderr] | [INFO] [stderr] 2438 | env.error(&k, m::TableLitWithDuplicateKey { key: key }) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/check.rs:2803:43 [INFO] [stderr] | [INFO] [stderr] 2803 | Ok(exprexit.with(SpannedSlotSeq { head: head, tail: last.tail, span: expspan })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `head` [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/options.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/options.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/env.rs:74:31 [INFO] [stderr] | [INFO] [stderr] 74 | IdDisplay { id: self, ctx: ctx } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ctx` [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/env.rs:251:65 [INFO] [stderr] | [INFO] [stderr] 251 | self.types.insert(name.base, TypeDef { span: name.span, ty: ty }).is_none() [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/env.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | report: report, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `report` [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/env.rs:439:17 [INFO] [stderr] | [INFO] [stderr] 439 | classes: classes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `classes` [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/env.rs:680:13 [INFO] [stderr] | [INFO] [stderr] 680 | context: context, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `context` [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/env.rs:681:13 [INFO] [stderr] | [INFO] [stderr] 681 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [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/env.rs:682:13 [INFO] [stderr] | [INFO] [stderr] 682 | map_index: map_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `map_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/env.rs:1071:56 [INFO] [stderr] | [INFO] [stderr] 1071 | self.error(nameref, m::CannotRedefineVar { name: name }).done()?; [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/env.rs:1369:66 [INFO] [stderr] | [INFO] [stderr] 1369 | ctx.report.error(name, m::ClassSystemAlreadyExists { 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/env.rs:1423:53 [INFO] [stderr] | [INFO] [stderr] 1423 | self.error(name, m::NoSuchClassSystem { name: name }).done()?; [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/class_system/gideros.rs:81:21 [INFO] [stderr] | [INFO] [stderr] 81 | Ancestors { classes: classes, current: Some(current) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `classes` [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/class_system/gideros.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | generation: generation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generation` [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/class_system/gideros.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | parent: parent, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [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/check.rs:232:19 [INFO] [stderr] | [INFO] [stderr] 232 | Checker { env: env, pending_modules: Vec::new() } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/check.rs:531:29 [INFO] [stderr] | [INFO] [stderr] 531 | TySeq { head: head, tail: tail } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `head` [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/check.rs:531:41 [INFO] [stderr] | [INFO] [stderr] 531 | TySeq { head: head, tail: tail } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `tail` [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/check.rs:923:21 [INFO] [stderr] | [INFO] [stderr] 923 | Ok(Lvalue { found: found, slot: slot.with_loc(expspan) }) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `found` [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/check.rs:1691:25 [INFO] [stderr] | [INFO] [stderr] 1691 | tag: tag, selfparam: selfinfo, sig: sig, block: block, declspan: stmt.span, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `tag` [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/check.rs:1691:56 [INFO] [stderr] | [INFO] [stderr] 1691 | tag: tag, selfparam: selfinfo, sig: sig, block: block, declspan: stmt.span, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [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/check.rs:1691:66 [INFO] [stderr] | [INFO] [stderr] 1691 | tag: tag, selfparam: selfinfo, sig: sig, block: block, declspan: stmt.span, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/check.rs:1836:75 [INFO] [stderr] | [INFO] [stderr] 1836 | self.env.error(name, m::NoSuchPredefinedClassSystem { name: name }).done()?; [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/check.rs:2109:45 [INFO] [stderr] | [INFO] [stderr] 2109 | let frame = Frame { vararg: vainfo, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `returns` [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/check.rs:2201:31 [INFO] [stderr] | [INFO] [stderr] 2201 | let func = Function { args: args, argnames: argnames, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/check.rs:2201:43 [INFO] [stderr] | [INFO] [stderr] 2201 | let func = Function { args: args, argnames: argnames, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `argnames` [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/check.rs:2201:63 [INFO] [stderr] | [INFO] [stderr] 2201 | let func = Function { args: args, argnames: argnames, returns: returns }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `returns` [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/check.rs:2438:65 [INFO] [stderr] | [INFO] [stderr] 2438 | env.error(&k, m::TableLitWithDuplicateKey { key: key }) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/check.rs:2803:43 [INFO] [stderr] | [INFO] [stderr] 2803 | Ok(exprexit.with(SpannedSlotSeq { head: head, tail: last.tail, span: expspan })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/env.rs:885:9 [INFO] [stderr] | [INFO] [stderr] 885 | / if self.assign_special(lhs, rhs)? { [INFO] [stderr] 886 | | if lhs.accept(rhs, self.types(), init).is_err() { [INFO] [stderr] 887 | | self.error(lhs, m::CannotAssign { lhs: self.display(lhs), rhs: self.display(rhs) }) [INFO] [stderr] 888 | | .note_if(rhs, m::OtherTypeOrigin {}) [INFO] [stderr] 889 | | .done()?; [INFO] [stderr] 890 | | } [INFO] [stderr] 891 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 885 | if self.assign_special(lhs, rhs)? && lhs.accept(rhs, self.types(), init).is_err() { [INFO] [stderr] 886 | self.error(lhs, m::CannotAssign { lhs: self.display(lhs), rhs: self.display(rhs) }) [INFO] [stderr] 887 | .note_if(rhs, m::OtherTypeOrigin {}) [INFO] [stderr] 888 | .done()?; [INFO] [stderr] 889 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/defs.rs:45:20 [INFO] [stderr] | [INFO] [stderr] 45 | const LUA51_DEFS: &'static [Def] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[Def]` [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/class_system/gideros.rs:110:17 [INFO] [stderr] | [INFO] [stderr] 110 | const NEW_KEY: &'static [u8] = b"new"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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/class_system/gideros.rs:111:18 [INFO] [stderr] | [INFO] [stderr] 111 | const INIT_KEY: &'static [u8] = b"init"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/check.rs:717:24 [INFO] [stderr] | [INFO] [stderr] 717 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 718 | | if let Some(info) = self.context().index_class_rval(cls, litkey, expspan)? { [INFO] [stderr] 719 | | return Ok(Index::Found(info)); [INFO] [stderr] 720 | | } else { [INFO] [stderr] 721 | | return Ok(Index::Missing); [INFO] [stderr] 722 | | } [INFO] [stderr] 723 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 717 | } else if let Some(info) = self.context().index_class_rval(cls, litkey, expspan)? { [INFO] [stderr] 718 | return Ok(Index::Found(info)); [INFO] [stderr] 719 | } else { [INFO] [stderr] 720 | return Ok(Index::Missing); [INFO] [stderr] 721 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/check.rs:932:16 [INFO] [stderr] | [INFO] [stderr] 932 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 933 | | if self.env.assign_new(&lvalue.slot, initrhs, specrhs).is_err() { [INFO] [stderr] 934 | | let specrhs = specrhs.map_or(&initrhs.base, |spec| spec.slot()); [INFO] [stderr] 935 | | self.env.error(&lvalue.slot, [INFO] [stderr] ... | [INFO] [stderr] 941 | | } [INFO] [stderr] 942 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 932 | } else if self.env.assign_new(&lvalue.slot, initrhs, specrhs).is_err() { [INFO] [stderr] 933 | let specrhs = specrhs.map_or(&initrhs.base, |spec| spec.slot()); [INFO] [stderr] 934 | self.env.error(&lvalue.slot, [INFO] [stderr] 935 | m::CannotCreateIndex { [INFO] [stderr] 936 | tab: self.display(ety), key: self.display(kty), [INFO] [stderr] 937 | specrhs: self.display(specrhs), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/check.rs:1432:24 [INFO] [stderr] | [INFO] [stderr] 1432 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 1433 | | if ignored_blocks.is_none() { [INFO] [stderr] 1434 | | exit |= condexit; [INFO] [stderr] 1435 | | } [INFO] [stderr] 1436 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1432 | } else if ignored_blocks.is_none() { [INFO] [stderr] 1433 | exit |= condexit; [INFO] [stderr] 1434 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/options.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/env.rs:885:9 [INFO] [stderr] | [INFO] [stderr] 885 | / if self.assign_special(lhs, rhs)? { [INFO] [stderr] 886 | | if lhs.accept(rhs, self.types(), init).is_err() { [INFO] [stderr] 887 | | self.error(lhs, m::CannotAssign { lhs: self.display(lhs), rhs: self.display(rhs) }) [INFO] [stderr] 888 | | .note_if(rhs, m::OtherTypeOrigin {}) [INFO] [stderr] 889 | | .done()?; [INFO] [stderr] 890 | | } [INFO] [stderr] 891 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 885 | if self.assign_special(lhs, rhs)? && lhs.accept(rhs, self.types(), init).is_err() { [INFO] [stderr] 886 | self.error(lhs, m::CannotAssign { lhs: self.display(lhs), rhs: self.display(rhs) }) [INFO] [stderr] 887 | .note_if(rhs, m::OtherTypeOrigin {}) [INFO] [stderr] 888 | .done()?; [INFO] [stderr] 889 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/defs.rs:45:20 [INFO] [stderr] | [INFO] [stderr] 45 | const LUA51_DEFS: &'static [Def] = &[ [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[Def]` [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/class_system/gideros.rs:110:17 [INFO] [stderr] | [INFO] [stderr] 110 | const NEW_KEY: &'static [u8] = b"new"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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/class_system/gideros.rs:111:18 [INFO] [stderr] | [INFO] [stderr] 111 | const INIT_KEY: &'static [u8] = b"init"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/check.rs:717:24 [INFO] [stderr] | [INFO] [stderr] 717 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 718 | | if let Some(info) = self.context().index_class_rval(cls, litkey, expspan)? { [INFO] [stderr] 719 | | return Ok(Index::Found(info)); [INFO] [stderr] 720 | | } else { [INFO] [stderr] 721 | | return Ok(Index::Missing); [INFO] [stderr] 722 | | } [INFO] [stderr] 723 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 717 | } else if let Some(info) = self.context().index_class_rval(cls, litkey, expspan)? { [INFO] [stderr] 718 | return Ok(Index::Found(info)); [INFO] [stderr] 719 | } else { [INFO] [stderr] 720 | return Ok(Index::Missing); [INFO] [stderr] 721 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/check.rs:932:16 [INFO] [stderr] | [INFO] [stderr] 932 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 933 | | if self.env.assign_new(&lvalue.slot, initrhs, specrhs).is_err() { [INFO] [stderr] 934 | | let specrhs = specrhs.map_or(&initrhs.base, |spec| spec.slot()); [INFO] [stderr] 935 | | self.env.error(&lvalue.slot, [INFO] [stderr] ... | [INFO] [stderr] 941 | | } [INFO] [stderr] 942 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 932 | } else if self.env.assign_new(&lvalue.slot, initrhs, specrhs).is_err() { [INFO] [stderr] 933 | let specrhs = specrhs.map_or(&initrhs.base, |spec| spec.slot()); [INFO] [stderr] 934 | self.env.error(&lvalue.slot, [INFO] [stderr] 935 | m::CannotCreateIndex { [INFO] [stderr] 936 | tab: self.display(ety), key: self.display(kty), [INFO] [stderr] 937 | specrhs: self.display(specrhs), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/check.rs:1432:24 [INFO] [stderr] | [INFO] [stderr] 1432 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 1433 | | if ignored_blocks.is_none() { [INFO] [stderr] 1434 | | exit |= condexit; [INFO] [stderr] 1435 | | } [INFO] [stderr] 1436 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1432 | } else if ignored_blocks.is_none() { [INFO] [stderr] 1433 | exit |= condexit; [INFO] [stderr] 1434 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/options.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/options.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/options.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/env.rs:974:17 [INFO] [stderr] | [INFO] [stderr] 974 | let mut def = def.expect("Env::ensure_var with an undefined var"); [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/env.rs:1194:13 [INFO] [stderr] | [INFO] [stderr] 1194 | let mut def = self.context.ids.entry(id).or_insert_with(|| { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/check.rs:1302:13 [INFO] [stderr] | [INFO] [stderr] 1302 | let mut modules = self.pending_modules.last_mut().unwrap(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/env.rs:974:17 [INFO] [stderr] | [INFO] [stderr] 974 | let mut def = def.expect("Env::ensure_var with an undefined var"); [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/env.rs:1194:13 [INFO] [stderr] | [INFO] [stderr] 1194 | let mut def = self.context.ids.entry(id).or_insert_with(|| { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/check.rs:2882:17 [INFO] [stderr] | [INFO] [stderr] 2882 | let mut modules = self.pending_modules.last_mut().expect("missing PendingModules"); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/check.rs:1302:13 [INFO] [stderr] | [INFO] [stderr] 1302 | let mut modules = self.pending_modules.last_mut().unwrap(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/check.rs:2882:17 [INFO] [stderr] | [INFO] [stderr] 2882 | let mut modules = self.pending_modules.last_mut().expect("missing PendingModules"); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `env::Scope` [INFO] [stderr] --> src/env.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | / pub fn new() -> Scope { [INFO] [stderr] 229 | | Scope { frame: None, types: HashMap::new() } [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 222 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | / pub fn get_frame<'a>(&'a self) -> Option<&'a Frame> { [INFO] [stderr] 237 | | self.frame.as_ref() [INFO] [stderr] 238 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / pub fn get_frame_mut<'a>(&'a mut self) -> Option<&'a mut Frame> { [INFO] [stderr] 241 | | self.frame.as_mut() [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/env.rs:318:20 [INFO] [stderr] | [INFO] [stderr] 318 | class_systems: Vec<(Option>, Box)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:338:5 [INFO] [stderr] | [INFO] [stderr] 338 | / fn read<'a>(&'a self) -> RwLockReadGuard<'a, ClassContextInner> { [INFO] [stderr] 339 | | self.inner.read() [INFO] [stderr] 340 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:342:5 [INFO] [stderr] | [INFO] [stderr] 342 | / fn write<'a>(&'a mut self) -> RwLockWriteGuard<'a, ClassContextInner> { [INFO] [stderr] 343 | | self.inner.write() [INFO] [stderr] 344 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/env.rs:348:50 [INFO] [stderr] | [INFO] [stderr] 348 | fn get(&self, csid: ClassSystemId) -> Option<&Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `&ClassSystem` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/env.rs:487:44 [INFO] [stderr] | [INFO] [stderr] 487 | self.loaded.entry(name.to_owned()).or_insert(LoadStatus::Ongoing(span)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| LoadStatus::Ongoing(span))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:568:5 [INFO] [stderr] | [INFO] [stderr] 568 | / pub fn all<'a>(&'a self) -> hash_map::Iter<'a, Id, NameDef> { [INFO] [stderr] 569 | | self.ids.iter() [INFO] [stderr] 570 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/env.rs:737:31 [INFO] [stderr] | [INFO] [stderr] 737 | pub fn resolve_exact_type<'a>(&self, ty: &Ty) -> Option { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:827:5 [INFO] [stderr] | [INFO] [stderr] 827 | / pub fn get_frame<'a>(&'a self) -> &'a Frame { [INFO] [stderr] 828 | | for scope in self.scopes.iter().rev() { [INFO] [stderr] 829 | | if let Some(frame) = scope.get_frame() { return frame; } [INFO] [stderr] 830 | | } [INFO] [stderr] 831 | | self.context.global_scope().get_frame().expect("global scope lacks a frame") [INFO] [stderr] 832 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:834:5 [INFO] [stderr] | [INFO] [stderr] 834 | / pub fn get_frame_mut<'a>(&'a mut self) -> &'a mut Frame { [INFO] [stderr] 835 | | for scope in self.scopes.iter_mut().rev() { [INFO] [stderr] 836 | | if let Some(frame) = scope.get_frame_mut() { return frame; } [INFO] [stderr] 837 | | } [INFO] [stderr] 838 | | self.context.global_scope_mut().get_frame_mut().expect("global scope lacks a frame") [INFO] [stderr] 839 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:841:5 [INFO] [stderr] | [INFO] [stderr] 841 | / pub fn get_vararg<'a>(&'a self) -> Option<&'a TySeq> { [INFO] [stderr] 842 | | self.get_frame().vararg.as_ref() [INFO] [stderr] 843 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/env.rs:1163:9 [INFO] [stderr] | [INFO] [stderr] 1163 | / match info.tag() { [INFO] [stderr] 1164 | | Some(Tag::StringMeta) => { [INFO] [stderr] 1165 | | if let Some(ref prevmeta) = self.context.string_meta { [INFO] [stderr] 1166 | | // while it is possible to alter the string metatable from C, [INFO] [stderr] ... | [INFO] [stderr] 1174 | | _ => {} [INFO] [stderr] 1175 | | } [INFO] [stderr] | |_________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 1163 | if let Some(Tag::StringMeta) = info.tag() { [INFO] [stderr] 1164 | if let Some(ref prevmeta) = self.context.string_meta { [INFO] [stderr] 1165 | // while it is possible to alter the string metatable from C, [INFO] [stderr] 1166 | // we don't think that it is useful after the initialization. [INFO] [stderr] 1167 | self.error(info, m::CannotRedefineStringMeta {}) [INFO] [stderr] 1168 | .note(prevmeta, m::PreviousStringMeta {}) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/class_system/gideros.rs:184:29 [INFO] [stderr] | [INFO] [stderr] 184 | Ancestors::new(classes, cid.1).find(|&(c, _)| c == cid_.1).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|&(c, _)| c == cid_.1).is_some()` with `any(|&(c, _)| c == cid_.1)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/class_system/gideros.rs:214:33 [INFO] [stderr] | [INFO] [stderr] 214 | parent = parent.or(Some(ClassId(self_csid, GENESIS_CLASS).without_loc())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| Some(ClassId(self_csid, GENESIS_CLASS).without_loc()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/class_system/gideros.rs:313:32 [INFO] [stderr] | [INFO] [stderr] 313 | if let Some(new) = classes[cid.1 as usize].new_ty.as_ref().map(|s| s.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `classes[cid.1 as usize].new_ty.as_ref().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: consider using `Option` instead of `Option>` or a custom enum if you need to distinguish all 3 cases [INFO] [stderr] --> src/class_system/mod.rs:109:59 [INFO] [stderr] | [INFO] [stderr] 109 | report: &Report) -> kailua_diag::Result>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_option)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_option [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/check.rs:34:22 [INFO] [stderr] | [INFO] [stderr] 34 | fn loop_boundary(&self, normal_exit: Exit) -> Exit { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/check.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | / let numty; [INFO] [stderr] 369 | | if lflags.is_integral() && rflags.is_integral() && [INFO] [stderr] 370 | | !(lflags.is_dynamic() && rflags.is_dynamic()) { [INFO] [stderr] 371 | | // we are definitely sure that it will be an integer [INFO] [stderr] ... | [INFO] [stderr] 376 | | numty = T::Number; [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 368 | let numty = if lflags.is_integral() && rflags.is_integral() && [INFO] [stderr] 369 | !(lflags.is_dynamic() && rflags.is_dynamic()) { T::Integer } else { T::Number }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/check.rs:845:28 [INFO] [stderr] | [INFO] [stderr] 845 | if &s[..] == &b"n"[..] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 845 | if s[..] == b"n"[..] { [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/check.rs:1175:52 [INFO] [stderr] | [INFO] [stderr] 1175 | defslot.unwrap_or_else(|| Slot::dummy()).with_loc(nameref) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `Slot::dummy` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `env::Scope` [INFO] [stderr] --> src/env.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | / pub fn new() -> Scope { [INFO] [stderr] 229 | | Scope { frame: None, types: HashMap::new() } [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 222 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:236:5 [INFO] [stderr] | [INFO] [stderr] 236 | / pub fn get_frame<'a>(&'a self) -> Option<&'a Frame> { [INFO] [stderr] 237 | | self.frame.as_ref() [INFO] [stderr] 238 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / pub fn get_frame_mut<'a>(&'a mut self) -> Option<&'a mut Frame> { [INFO] [stderr] 241 | | self.frame.as_mut() [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/check.rs:1315:52 [INFO] [stderr] | [INFO] [stderr] 1315 | ignored_stmts = Some(ignored_stmts.unwrap_or(Span::dummy()) | stmt.span); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Span::dummy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 49 [INFO] [stderr] --> src/check.rs:1330:5 [INFO] [stderr] | [INFO] [stderr] 1330 | / fn visit_stmt(&mut self, stmt: &'inp Spanned) -> Result { [INFO] [stderr] 1331 | | debug!("visiting stmt {:?}", *stmt); [INFO] [stderr] 1332 | | [INFO] [stderr] 1333 | | match *stmt.base { [INFO] [stderr] ... | [INFO] [stderr] 1891 | | } [INFO] [stderr] 1892 | | } [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/env.rs:318:20 [INFO] [stderr] | [INFO] [stderr] 318 | class_systems: Vec<(Option>, Box)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:338:5 [INFO] [stderr] | [INFO] [stderr] 338 | / fn read<'a>(&'a self) -> RwLockReadGuard<'a, ClassContextInner> { [INFO] [stderr] 339 | | self.inner.read() [INFO] [stderr] 340 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:342:5 [INFO] [stderr] | [INFO] [stderr] 342 | / fn write<'a>(&'a mut self) -> RwLockWriteGuard<'a, ClassContextInner> { [INFO] [stderr] 343 | | self.inner.write() [INFO] [stderr] 344 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/env.rs:348:50 [INFO] [stderr] | [INFO] [stderr] 348 | fn get(&self, csid: ClassSystemId) -> Option<&Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `&ClassSystem` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/env.rs:487:44 [INFO] [stderr] | [INFO] [stderr] 487 | self.loaded.entry(name.to_owned()).or_insert(LoadStatus::Ongoing(span)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| LoadStatus::Ongoing(span))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:568:5 [INFO] [stderr] | [INFO] [stderr] 568 | / pub fn all<'a>(&'a self) -> hash_map::Iter<'a, Id, NameDef> { [INFO] [stderr] 569 | | self.ids.iter() [INFO] [stderr] 570 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/env.rs:737:31 [INFO] [stderr] | [INFO] [stderr] 737 | pub fn resolve_exact_type<'a>(&self, ty: &Ty) -> Option { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:827:5 [INFO] [stderr] | [INFO] [stderr] 827 | / pub fn get_frame<'a>(&'a self) -> &'a Frame { [INFO] [stderr] 828 | | for scope in self.scopes.iter().rev() { [INFO] [stderr] 829 | | if let Some(frame) = scope.get_frame() { return frame; } [INFO] [stderr] 830 | | } [INFO] [stderr] 831 | | self.context.global_scope().get_frame().expect("global scope lacks a frame") [INFO] [stderr] 832 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:834:5 [INFO] [stderr] | [INFO] [stderr] 834 | / pub fn get_frame_mut<'a>(&'a mut self) -> &'a mut Frame { [INFO] [stderr] 835 | | for scope in self.scopes.iter_mut().rev() { [INFO] [stderr] 836 | | if let Some(frame) = scope.get_frame_mut() { return frame; } [INFO] [stderr] 837 | | } [INFO] [stderr] 838 | | self.context.global_scope_mut().get_frame_mut().expect("global scope lacks a frame") [INFO] [stderr] 839 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/env.rs:841:5 [INFO] [stderr] | [INFO] [stderr] 841 | / pub fn get_vararg<'a>(&'a self) -> Option<&'a TySeq> { [INFO] [stderr] 842 | | self.get_frame().vararg.as_ref() [INFO] [stderr] 843 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/check.rs:1426:17 [INFO] [stderr] | [INFO] [stderr] 1426 | / if let &Some(ref block) = lastblock { [INFO] [stderr] 1427 | | if let Some((_, ref mut blocks_span)) = ignored_blocks { [INFO] [stderr] 1428 | | *blocks_span |= block.span; [INFO] [stderr] 1429 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 1435 | | } [INFO] [stderr] 1436 | | } [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] 1426 | if let Some(ref block) = *lastblock { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/check.rs:1475:17 [INFO] [stderr] | [INFO] [stderr] 1475 | / let indty; [INFO] [stderr] 1476 | | if startflags.is_integral() && endflags.is_integral() && stepflags.is_integral() && [INFO] [stderr] 1477 | | !(startflags.is_dynamic() && endflags.is_dynamic() && stepflags.is_dynamic()) { [INFO] [stderr] 1478 | | indty = T::Integer; [INFO] [stderr] 1479 | | } else { [INFO] [stderr] 1480 | | indty = T::Number; [INFO] [stderr] 1481 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 1475 | let indty = if startflags.is_integral() && endflags.is_integral() && stepflags.is_integral() && [INFO] [stderr] 1476 | !(startflags.is_dynamic() && endflags.is_dynamic() && stepflags.is_dynamic()) { T::Integer } else { T::Number }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/check.rs:1459:45 [INFO] [stderr] | [INFO] [stderr] 1459 | let Exitable(exit3, step) = if let &Some(ref step) = step { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 1460 | | expspan |= step.span; [INFO] [stderr] 1461 | | let step = self.visit_exp(step, None)?; [INFO] [stderr] 1462 | | step.map(|slot| slot.into_first().map(|s| s.unlift().clone())) [INFO] [stderr] 1463 | | } else { [INFO] [stderr] 1464 | | Exitable::new(Ty::new(T::Integer).without_loc()) // to simplify the matter [INFO] [stderr] 1465 | | }; [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] 1459 | let Exitable(exit3, step) = if let Some(ref step) = *step { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [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/env.rs:1163:9 [INFO] [stderr] | [INFO] [stderr] 1163 | / match info.tag() { [INFO] [stderr] 1164 | | Some(Tag::StringMeta) => { [INFO] [stderr] 1165 | | if let Some(ref prevmeta) = self.context.string_meta { [INFO] [stderr] 1166 | | // while it is possible to alter the string metatable from C, [INFO] [stderr] ... | [INFO] [stderr] 1174 | | _ => {} [INFO] [stderr] 1175 | | } [INFO] [stderr] | |_________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 1163 | if let Some(Tag::StringMeta) = info.tag() { [INFO] [stderr] 1164 | if let Some(ref prevmeta) = self.context.string_meta { [INFO] [stderr] 1165 | // while it is possible to alter the string metatable from C, [INFO] [stderr] 1166 | // we don't think that it is useful after the initialization. [INFO] [stderr] 1167 | self.error(info, m::CannotRedefineStringMeta {}) [INFO] [stderr] 1168 | .note(prevmeta, m::PreviousStringMeta {}) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/check.rs:1632:25 [INFO] [stderr] | [INFO] [stderr] 1632 | assert!(meths.len() >= 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!meths.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: this function has too many arguments (8/7) [INFO] [stderr] --> src/check.rs:2008:5 [INFO] [stderr] | [INFO] [stderr] 2008 | / fn visit_func_body(&mut self, tag: Option, no_check: Option, [INFO] [stderr] 2009 | | selfparam: Option<(&Spanned, Slot)>, sig: &Sig, [INFO] [stderr] 2010 | | block: &'inp Spanned>>, declspan: Span, [INFO] [stderr] 2011 | | hint: Option>) -> Result { [INFO] [stderr] ... | [INFO] [stderr] 2202 | | Ok(Slot::just(Ty::new(T::func(func)).with_tag(tag))) [INFO] [stderr] 2203 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/class_system/gideros.rs:184:29 [INFO] [stderr] | [INFO] [stderr] 184 | Ancestors::new(classes, cid.1).find(|&(c, _)| c == cid_.1).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|&(c, _)| c == cid_.1).is_some()` with `any(|&(c, _)| c == cid_.1)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/class_system/gideros.rs:214:33 [INFO] [stderr] | [INFO] [stderr] 214 | parent = parent.or(Some(ClassId(self_csid, GENESIS_CLASS).without_loc())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| Some(ClassId(self_csid, GENESIS_CLASS).without_loc()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/class_system/gideros.rs:313:32 [INFO] [stderr] | [INFO] [stderr] 313 | if let Some(new) = classes[cid.1 as usize].new_ty.as_ref().map(|s| s.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `classes[cid.1 as usize].new_ty.as_ref().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: consider using `Option` instead of `Option>` or a custom enum if you need to distinguish all 3 cases [INFO] [stderr] --> src/class_system/mod.rs:109:59 [INFO] [stderr] | [INFO] [stderr] 109 | report: &Report) -> kailua_diag::Result>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_option)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_option [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/check.rs:34:22 [INFO] [stderr] | [INFO] [stderr] 34 | fn loop_boundary(&self, normal_exit: Exit) -> Exit { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/check.rs:2637:27 [INFO] [stderr] | [INFO] [stderr] 2637 | Ex::Num(v) if v.floor() == v => [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(v.floor() - v).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/check.rs:2637:27 [INFO] [stderr] | [INFO] [stderr] 2637 | Ex::Num(v) if v.floor() == v => [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/check.rs:2638:20 [INFO] [stderr] | [INFO] [stderr] 2638 | if i32::MIN as f64 <= v && v <= i32::MAX as f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i32::MIN)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/check.rs:2638:49 [INFO] [stderr] | [INFO] [stderr] 2638 | if i32::MIN as f64 <= v && v <= i32::MAX as f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/check.rs:2897:45 [INFO] [stderr] | [INFO] [stderr] 2897 | Args::List(ref args) if args.len() >= 1 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/check.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | / let numty; [INFO] [stderr] 369 | | if lflags.is_integral() && rflags.is_integral() && [INFO] [stderr] 370 | | !(lflags.is_dynamic() && rflags.is_dynamic()) { [INFO] [stderr] 371 | | // we are definitely sure that it will be an integer [INFO] [stderr] ... | [INFO] [stderr] 376 | | numty = T::Number; [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 368 | let numty = if lflags.is_integral() && rflags.is_integral() && [INFO] [stderr] 369 | !(lflags.is_dynamic() && rflags.is_dynamic()) { T::Integer } else { T::Number }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/check.rs:845:28 [INFO] [stderr] | [INFO] [stderr] 845 | if &s[..] == &b"n"[..] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 845 | if s[..] == b"n"[..] { [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/check.rs:1175:52 [INFO] [stderr] | [INFO] [stderr] 1175 | defslot.unwrap_or_else(|| Slot::dummy()).with_loc(nameref) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `Slot::dummy` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: Could not compile `kailua_check`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/check.rs:1315:52 [INFO] [stderr] | [INFO] [stderr] 1315 | ignored_stmts = Some(ignored_stmts.unwrap_or(Span::dummy()) | stmt.span); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Span::dummy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 49 [INFO] [stderr] --> src/check.rs:1330:5 [INFO] [stderr] | [INFO] [stderr] 1330 | / fn visit_stmt(&mut self, stmt: &'inp Spanned) -> Result { [INFO] [stderr] 1331 | | debug!("visiting stmt {:?}", *stmt); [INFO] [stderr] 1332 | | [INFO] [stderr] 1333 | | match *stmt.base { [INFO] [stderr] ... | [INFO] [stderr] 1891 | | } [INFO] [stderr] 1892 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/check.rs:1426:17 [INFO] [stderr] | [INFO] [stderr] 1426 | / if let &Some(ref block) = lastblock { [INFO] [stderr] 1427 | | if let Some((_, ref mut blocks_span)) = ignored_blocks { [INFO] [stderr] 1428 | | *blocks_span |= block.span; [INFO] [stderr] 1429 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 1435 | | } [INFO] [stderr] 1436 | | } [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] 1426 | if let Some(ref block) = *lastblock { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/check.rs:1475:17 [INFO] [stderr] | [INFO] [stderr] 1475 | / let indty; [INFO] [stderr] 1476 | | if startflags.is_integral() && endflags.is_integral() && stepflags.is_integral() && [INFO] [stderr] 1477 | | !(startflags.is_dynamic() && endflags.is_dynamic() && stepflags.is_dynamic()) { [INFO] [stderr] 1478 | | indty = T::Integer; [INFO] [stderr] 1479 | | } else { [INFO] [stderr] 1480 | | indty = T::Number; [INFO] [stderr] 1481 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 1475 | let indty = if startflags.is_integral() && endflags.is_integral() && stepflags.is_integral() && [INFO] [stderr] 1476 | !(startflags.is_dynamic() && endflags.is_dynamic() && stepflags.is_dynamic()) { T::Integer } else { T::Number }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/check.rs:1459:45 [INFO] [stderr] | [INFO] [stderr] 1459 | let Exitable(exit3, step) = if let &Some(ref step) = step { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 1460 | | expspan |= step.span; [INFO] [stderr] 1461 | | let step = self.visit_exp(step, None)?; [INFO] [stderr] 1462 | | step.map(|slot| slot.into_first().map(|s| s.unlift().clone())) [INFO] [stderr] 1463 | | } else { [INFO] [stderr] 1464 | | Exitable::new(Ty::new(T::Integer).without_loc()) // to simplify the matter [INFO] [stderr] 1465 | | }; [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] 1459 | let Exitable(exit3, step) = if let Some(ref step) = *step { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/check.rs:1632:25 [INFO] [stderr] | [INFO] [stderr] 1632 | assert!(meths.len() >= 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!meths.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: this function has too many arguments (8/7) [INFO] [stderr] --> src/check.rs:2008:5 [INFO] [stderr] | [INFO] [stderr] 2008 | / fn visit_func_body(&mut self, tag: Option, no_check: Option, [INFO] [stderr] 2009 | | selfparam: Option<(&Spanned, Slot)>, sig: &Sig, [INFO] [stderr] 2010 | | block: &'inp Spanned>>, declspan: Span, [INFO] [stderr] 2011 | | hint: Option>) -> Result { [INFO] [stderr] ... | [INFO] [stderr] 2202 | | Ok(Slot::just(Ty::new(T::func(func)).with_tag(tag))) [INFO] [stderr] 2203 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/check.rs:2637:27 [INFO] [stderr] | [INFO] [stderr] 2637 | Ex::Num(v) if v.floor() == v => [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(v.floor() - v).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/check.rs:2637:27 [INFO] [stderr] | [INFO] [stderr] 2637 | Ex::Num(v) if v.floor() == v => [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/check.rs:2638:20 [INFO] [stderr] | [INFO] [stderr] 2638 | if i32::MIN as f64 <= v && v <= i32::MAX as f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i32::MIN)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/check.rs:2638:49 [INFO] [stderr] | [INFO] [stderr] 2638 | if i32::MIN as f64 <= v && v <= i32::MAX as f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(i32::MAX)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/check.rs:2897:45 [INFO] [stderr] | [INFO] [stderr] 2897 | Args::List(ref args) if args.len() >= 1 => { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `kailua_check`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "366d9759cdc838df6279b21a1be18c5fbb2b4058af42070d3f1673758696cd76"` [INFO] running `"docker" "rm" "-f" "366d9759cdc838df6279b21a1be18c5fbb2b4058af42070d3f1673758696cd76"` [INFO] [stdout] 366d9759cdc838df6279b21a1be18c5fbb2b4058af42070d3f1673758696cd76