[INFO] crate vhdl_parser 0.4.0 is already in cache [INFO] extracting crate vhdl_parser 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/vhdl_parser/0.4.0 [INFO] extracting crate vhdl_parser 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/vhdl_parser/0.4.0 [INFO] validating manifest of vhdl_parser-0.4.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 vhdl_parser-0.4.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 vhdl_parser-0.4.0 [INFO] finished frobbing vhdl_parser-0.4.0 [INFO] frobbed toml for vhdl_parser-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/vhdl_parser/0.4.0/Cargo.toml [INFO] started frobbing vhdl_parser-0.4.0 [INFO] finished frobbing vhdl_parser-0.4.0 [INFO] frobbed toml for vhdl_parser-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/vhdl_parser/0.4.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 vhdl_parser-0.4.0 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/reg/vhdl_parser/0.4.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] f01e2fc17341365aae49468968fd6a566542ae11771273742cfa24dd4939f68f [INFO] running `"docker" "start" "-a" "f01e2fc17341365aae49468968fd6a566542ae11771273742cfa24dd4939f68f"` [INFO] [stderr] Checking vhdl_parser v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokenizer.rs:1277:17 [INFO] [stderr] | [INFO] [stderr] 1277 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/tokenizer.rs:1278:17 [INFO] [stderr] | [INFO] [stderr] 1278 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/alias_declaration.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | subtype_indication: subtype_indication, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `subtype_indication` [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/alias_declaration.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | 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/alias_declaration.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | signature: signature, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `signature` [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/component_declaration.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/component_declaration.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/component_declaration.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | generic_list: generic_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generic_list` [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/component_declaration.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | port_list: port_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `port_list` [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/concurrent_statement.rs:369:9 [INFO] [stderr] | [INFO] [stderr] 369 | conditionals: conditionals, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `conditionals` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokenizer.rs:1277:17 [INFO] [stderr] | [INFO] [stderr] 1277 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/tokenizer.rs:1278:17 [INFO] [stderr] | [INFO] [stderr] 1278 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/alias_declaration.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | subtype_indication: subtype_indication, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `subtype_indication` [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/alias_declaration.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | 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/alias_declaration.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | signature: signature, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `signature` [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/design_unit.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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] warning: redundant field names in struct initialization [INFO] [stderr] --> src/component_declaration.rs:94:9 [INFO] [stderr] --> src/design_unit.rs:56:9 [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] 94 | ident: ident, [INFO] [stderr] 56 | generic_clause: generic_clause, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generic_clause` [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] | [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/component_declaration.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/design_unit.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | port_clause: port_clause, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `port_clause` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/component_declaration.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | generic_list: generic_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generic_list` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/component_declaration.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | port_list: port_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `port_list` [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/design_unit.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/concurrent_statement.rs:369:9 [INFO] [stderr] | [INFO] [stderr] 369 | conditionals: conditionals, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `conditionals` [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/expression.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expression.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | constraint: constraint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `constraint` [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/expression.rs:260:21 [INFO] [stderr] | [INFO] [stderr] 260 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expression.rs:356:21 [INFO] [stderr] | [INFO] [stderr] 356 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expression.rs:389:21 [INFO] [stderr] | [INFO] [stderr] 389 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/design_unit.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/design_unit.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | generic_clause: generic_clause, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `generic_clause` [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/design_unit.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | port_clause: port_clause, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `port_clause` [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/design_unit.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/expression.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expression.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | constraint: constraint, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `constraint` [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/expression.rs:260:21 [INFO] [stderr] | [INFO] [stderr] 260 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expression.rs:356:21 [INFO] [stderr] | [INFO] [stderr] 356 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expression.rs:389:21 [INFO] [stderr] | [INFO] [stderr] 389 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/interface_declaration.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/interface_declaration.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/interface_declaration.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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/interface_declaration.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/message.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | severity: severity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `severity` [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/names.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/names.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | 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/names.rs:235:13 [INFO] [stderr] | [INFO] [stderr] 235 | attr: attr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `attr` [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/names.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | signature: signature, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `signature` [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/message.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | severity: severity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `severity` [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/names.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/object_declaration.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | class: class, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `class` [INFO] [stderr] | [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] = 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/object_declaration.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/names.rs:234:13 [INFO] [stderr] | [INFO] [stderr] 234 | 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/names.rs:235:13 [INFO] [stderr] | [INFO] [stderr] 235 | attr: attr, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `attr` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] | [INFO] [stderr] --> src/object_declaration.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/names.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | signature: signature, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `signature` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [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/object_declaration.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | class: class, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `class` [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/object_declaration.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/object_declaration.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/source.rs:249:17 [INFO] [stderr] | [INFO] [stderr] 249 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [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/subprogram.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | designator: designator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `designator` [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/subprogram.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | parameter_list: parameter_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameter_list` [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/subprogram.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | return_type: return_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `return_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/subprogram.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | designator: designator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `designator` [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/subprogram.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | parameter_list: parameter_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameter_list` [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/subtype_indication.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | resolution: resolution, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resolution` [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/subtype_indication.rs:192:9 [INFO] [stderr] | [INFO] [stderr] 192 | type_mark: type_mark, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_mark` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/symbol_table.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/type_declaration.rs:142:36 [INFO] [stderr] | [INFO] [stderr] 142 | Ok((ProtectedTypeDeclaration { items: items }, end_ident)) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `items` [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/type_declaration.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | range: range, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `range` [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/type_declaration.rs:196:13 [INFO] [stderr] | [INFO] [stderr] 196 | primary_unit: primary_unit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `primary_unit` [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/type_declaration.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | secondary_units: secondary_units, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `secondary_units` [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/type_declaration.rs:613:13 [INFO] [stderr] | [INFO] [stderr] 613 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/type_declaration.rs:614:71 [INFO] [stderr] | [INFO] [stderr] 614 | def: TypeDefinition::Protected(ProtectedTypeDeclaration { items: items }), [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `items` [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/source.rs:249:17 [INFO] [stderr] | [INFO] [stderr] 249 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [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/subprogram.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | designator: designator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `designator` [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/subprogram.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | parameter_list: parameter_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameter_list` [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/subprogram.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | return_type: return_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `return_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/subprogram.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | designator: designator, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `designator` [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/subprogram.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | parameter_list: parameter_list, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameter_list` [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/subtype_indication.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | resolution: resolution, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resolution` [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/subtype_indication.rs:192:9 [INFO] [stderr] | [INFO] [stderr] 192 | type_mark: type_mark, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `type_mark` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/symbol_table.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/type_declaration.rs:142:36 [INFO] [stderr] | [INFO] [stderr] 142 | Ok((ProtectedTypeDeclaration { items: items }, end_ident)) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `items` [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/type_declaration.rs:195:13 [INFO] [stderr] | [INFO] [stderr] 195 | range: range, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `range` [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/type_declaration.rs:196:13 [INFO] [stderr] | [INFO] [stderr] 196 | primary_unit: primary_unit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `primary_unit` [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/type_declaration.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | secondary_units: secondary_units, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `secondary_units` [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/type_declaration.rs:613:13 [INFO] [stderr] | [INFO] [stderr] 613 | ident: ident, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `ident` [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/type_declaration.rs:614:71 [INFO] [stderr] | [INFO] [stderr] 614 | def: TypeDefinition::Protected(ProtectedTypeDeclaration { items: items }), [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `items` [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/test_util.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | 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: Closure called just once immediately after it was declared [INFO] [stderr] --> src/tokenizer.rs:617:9 [INFO] [stderr] | [INFO] [stderr] 617 | result = compure_result(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tokenizer.rs:622:12 [INFO] [stderr] | [INFO] [stderr] 622 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 623 | | if let Some(result) = result { [INFO] [stderr] 624 | | Ok(result) [INFO] [stderr] 625 | | } else { [INFO] [stderr] 626 | | Err("Integer too large for 64-bits signed".to_string()) [INFO] [stderr] 627 | | } [INFO] [stderr] 628 | | } [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] 622 | } else if let Some(result) = result { [INFO] [stderr] 623 | Ok(result) [INFO] [stderr] 624 | } else { [INFO] [stderr] 625 | Err("Integer too large for 64-bits signed".to_string()) [INFO] [stderr] 626 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:648:5 [INFO] [stderr] | [INFO] [stderr] 648 | return Err("Exponent too large for 32-bits signed".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Exponent too large for 32-bits signed".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:1285:9 [INFO] [stderr] | [INFO] [stderr] 1285 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/attributes.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | attributes [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/attributes.rs:107:30 [INFO] [stderr] | [INFO] [stderr] 107 | let attributes = entity_names [INFO] [stderr] | ______________________________^ [INFO] [stderr] 108 | | .into_iter() [INFO] [stderr] 109 | | .map(|entity_name| { [INFO] [stderr] 110 | | Attribute::Specification(AttributeSpecification { [INFO] [stderr] ... | [INFO] [stderr] 115 | | }) [INFO] [stderr] 116 | | }).collect(); [INFO] [stderr] | |____________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/concurrent_statement.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | / return Err(Message::error( [INFO] [stderr] 129 | | target, [INFO] [stderr] 130 | | "Expected procedure call, got aggregate", [INFO] [stderr] 131 | | )); [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 128 | Err(Message::error( [INFO] [stderr] 129 | target, [INFO] [stderr] 130 | "Expected procedure call, got aggregate", [INFO] [stderr] 131 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/configuration.rs:355:13 [INFO] [stderr] | [INFO] [stderr] 355 | return Err(Message::error(name, "Expected component specification")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Message::error(name, "Expected component specification"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/design_unit.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / return Ok(PackageDeclaration { [INFO] [stderr] 121 | | ident, [INFO] [stderr] 122 | | generic_clause, [INFO] [stderr] 123 | | decl, [INFO] [stderr] 124 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 120 | Ok(PackageDeclaration { [INFO] [stderr] 121 | ident, [INFO] [stderr] 122 | generic_clause, [INFO] [stderr] 123 | decl, [INFO] [stderr] 124 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/design_unit.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | return Ok(PackageBody { ident, decl }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(PackageBody { ident, decl })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | return Ok(range); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(range)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | return Ok(Choice::DiscreteRange(range)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Choice::DiscreteRange(range))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:182:9 [INFO] [stderr] | [INFO] [stderr] 182 | return Ok(Choice::DiscreteRange(range)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Choice::DiscreteRange(range))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | return Ok(Choice::Expression(left_expr)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Choice::Expression(left_expr))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/latin_1.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return self.bytes.len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.bytes.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/names.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | return Err(Message::error(&expr, "Expected name")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Message::error(&expr, "Expected name"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/range.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | return Err(Message::error(&expr, "Expected name or range")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Message::error(&expr, "Expected name or range"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/source.rs:342:9 [INFO] [stderr] | [INFO] [stderr] 342 | return (first_lineno.unwrap_or(lineno - 1), lines); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(first_lineno.unwrap_or(lineno - 1), lines)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/source.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | return (first_lineno, max_len, result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(first_lineno, max_len, result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/subtype_indication.rs:190:5 [INFO] [stderr] | [INFO] [stderr] 190 | / return Ok(SubtypeIndication { [INFO] [stderr] 191 | | resolution: resolution, [INFO] [stderr] 192 | | type_mark: type_mark, [INFO] [stderr] 193 | | constraint, [INFO] [stderr] 194 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 190 | Ok(SubtypeIndication { [INFO] [stderr] 191 | resolution: resolution, [INFO] [stderr] 192 | type_mark: type_mark, [INFO] [stderr] 193 | constraint, [INFO] [stderr] 194 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenstream.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(true)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenstream.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Closure called just once immediately after it was declared [INFO] [stderr] --> src/tokenizer.rs:617:9 [INFO] [stderr] | [INFO] [stderr] 617 | result = compure_result(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tokenizer.rs:622:12 [INFO] [stderr] | [INFO] [stderr] 622 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 623 | | if let Some(result) = result { [INFO] [stderr] 624 | | Ok(result) [INFO] [stderr] 625 | | } else { [INFO] [stderr] 626 | | Err("Integer too large for 64-bits signed".to_string()) [INFO] [stderr] 627 | | } [INFO] [stderr] 628 | | } [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] 622 | } else if let Some(result) = result { [INFO] [stderr] 623 | Ok(result) [INFO] [stderr] 624 | } else { [INFO] [stderr] 625 | Err("Integer too large for 64-bits signed".to_string()) [INFO] [stderr] 626 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:648:5 [INFO] [stderr] | [INFO] [stderr] 648 | return Err("Exponent too large for 32-bits signed".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err("Exponent too large for 32-bits signed".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:1285:9 [INFO] [stderr] | [INFO] [stderr] 1285 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tokenizer.rs:1569:67 [INFO] [stderr] | [INFO] [stderr] 1569 | Value::AbstractLiteral(ast::AbstractLiteral::Real(2.7182818284590452)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `2.718_281_828_459_045_2` [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: inconsistent casing in hexadecimal literal [INFO] [stderr] --> src/tokenizer.rs:1706:70 [INFO] [stderr] | [INFO] [stderr] 1706 | Value::AbstractLiteral(ast::AbstractLiteral::Integer(0xeEffa)) [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mixed_case_hex_literals)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mixed_case_hex_literals [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/attributes.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | attributes [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/attributes.rs:107:30 [INFO] [stderr] | [INFO] [stderr] 107 | let attributes = entity_names [INFO] [stderr] | ______________________________^ [INFO] [stderr] 108 | | .into_iter() [INFO] [stderr] 109 | | .map(|entity_name| { [INFO] [stderr] 110 | | Attribute::Specification(AttributeSpecification { [INFO] [stderr] ... | [INFO] [stderr] 115 | | }) [INFO] [stderr] 116 | | }).collect(); [INFO] [stderr] | |____________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/concurrent_statement.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | / return Err(Message::error( [INFO] [stderr] 129 | | target, [INFO] [stderr] 130 | | "Expected procedure call, got aggregate", [INFO] [stderr] 131 | | )); [INFO] [stderr] | |_______________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 128 | Err(Message::error( [INFO] [stderr] 129 | target, [INFO] [stderr] 130 | "Expected procedure call, got aggregate", [INFO] [stderr] 131 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/configuration.rs:355:13 [INFO] [stderr] | [INFO] [stderr] 355 | return Err(Message::error(name, "Expected component specification")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Message::error(name, "Expected component specification"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/design_unit.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / return Ok(PackageDeclaration { [INFO] [stderr] 121 | | ident, [INFO] [stderr] 122 | | generic_clause, [INFO] [stderr] 123 | | decl, [INFO] [stderr] 124 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 120 | Ok(PackageDeclaration { [INFO] [stderr] 121 | ident, [INFO] [stderr] 122 | generic_clause, [INFO] [stderr] 123 | decl, [INFO] [stderr] 124 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/design_unit.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | return Ok(PackageBody { ident, decl }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(PackageBody { ident, decl })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | return Ok(range); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(range)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | return Ok(Choice::DiscreteRange(range)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Choice::DiscreteRange(range))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:182:9 [INFO] [stderr] | [INFO] [stderr] 182 | return Ok(Choice::DiscreteRange(range)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Choice::DiscreteRange(range))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expression.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | return Ok(Choice::Expression(left_expr)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Choice::Expression(left_expr))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/latin_1.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return self.bytes.len(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.bytes.len()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/names.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | return Err(Message::error(&expr, "Expected name")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Message::error(&expr, "Expected name"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/range.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | return Err(Message::error(&expr, "Expected name or range")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Message::error(&expr, "Expected name or range"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/source.rs:342:9 [INFO] [stderr] | [INFO] [stderr] 342 | return (first_lineno.unwrap_or(lineno - 1), lines); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(first_lineno.unwrap_or(lineno - 1), lines)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/source.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | return (first_lineno, max_len, result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(first_lineno, max_len, result)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/subtype_indication.rs:190:5 [INFO] [stderr] | [INFO] [stderr] 190 | / return Ok(SubtypeIndication { [INFO] [stderr] 191 | | resolution: resolution, [INFO] [stderr] 192 | | type_mark: type_mark, [INFO] [stderr] 193 | | constraint, [INFO] [stderr] 194 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 190 | Ok(SubtypeIndication { [INFO] [stderr] 191 | resolution: resolution, [INFO] [stderr] 192 | type_mark: type_mark, [INFO] [stderr] 193 | constraint, [INFO] [stderr] 194 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenstream.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(true)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenstream.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/test_util.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/test_util.rs:147:22 [INFO] [stderr] | [INFO] [stderr] 147 | let result = { [INFO] [stderr] | ______________________^ [INFO] [stderr] 148 | | let tokenizer = Tokenizer::new( [INFO] [stderr] 149 | | self.symtab.clone(), [INFO] [stderr] 150 | | self.source.clone(), [INFO] [stderr] ... | [INFO] [stderr] 154 | | parse_fun(&mut stream) [INFO] [stderr] 155 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/test_util.rs:177:21 [INFO] [stderr] | [INFO] [stderr] 177 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/test_util.rs:198:21 [INFO] [stderr] | [INFO] [stderr] 198 | return err; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:390:5 [INFO] [stderr] | [INFO] [stderr] 390 | Specification(AttributeSpecification), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 390 | Specification(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:565:5 [INFO] [stderr] | [INFO] [stderr] 565 | Object(InterfaceObjectDeclaration), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 565 | Object(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:599:5 [INFO] [stderr] | [INFO] [stderr] 599 | File(FileDeclaration), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 599 | File(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:683:5 [INFO] [stderr] | [INFO] [stderr] 683 | Selected(Selection), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 683 | Selected(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:757:5 [INFO] [stderr] | [INFO] [stderr] 757 | Assert(AssertStatement), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 757 | Assert(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:861:5 [INFO] [stderr] | [INFO] [stderr] 861 | Assert(ConcurrentAssertStatement), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 861 | Assert(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:1043:5 [INFO] [stderr] | [INFO] [stderr] 1043 | Configuration(DesignUnit), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1043 | Configuration(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tokenizer.rs:220:23 [INFO] [stderr] | [INFO] [stderr] 220 | pub fn kind_str(kind: &Kind) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Kind` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/tokenizer.rs:372:18 [INFO] [stderr] | [INFO] [stderr] 372 | pub fn kinds_str<'a>(kinds: &[Kind]) -> String { [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tokenizer.rs:516:33 [INFO] [stderr] | [INFO] [stderr] 516 | fn can_be_char(last_token_kind: &Option) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:581:21 [INFO] [stderr] | [INFO] [stderr] 581 | let digit = match b { [INFO] [stderr] | _____________________^ [INFO] [stderr] 582 | | b'0'..=b'9' => { [INFO] [stderr] 583 | | cursor.pop(); [INFO] [stderr] 584 | | (b - b'0') [INFO] [stderr] ... | [INFO] [stderr] 606 | | } [INFO] [stderr] 607 | | } as i64; [INFO] [stderr] | |________________^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 581 | let digit = i64::from(match b { [INFO] [stderr] 582 | b'0'..=b'9' => { [INFO] [stderr] 583 | cursor.pop(); [INFO] [stderr] 584 | (b - b'0') [INFO] [stderr] 585 | } [INFO] [stderr] 586 | b'a'..=b'f' => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:643:12 [INFO] [stderr] | [INFO] [stderr] 643 | if (i32::min_value() as i64) <= exp && exp <= (i32::max_value() as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::min_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:643:55 [INFO] [stderr] | [INFO] [stderr] 643 | if (i32::min_value() as i64) <= exp && exp <= (i32::max_value() as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::max_value())` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokenizer.rs:706:27 [INFO] [stderr] | [INFO] [stderr] 706 | buffer.bytes.push(chr.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `chr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/tokenizer.rs:737:27 [INFO] [stderr] | [INFO] [stderr] 737 | b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F' | b'.' => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/tokenizer.rs:734:13 [INFO] [stderr] | [INFO] [stderr] 734 | b'e' => { [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/tokenizer.rs:1055:14 [INFO] [stderr] | [INFO] [stderr] 1055 | .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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/component_declaration.rs:95:23 [INFO] [stderr] | [INFO] [stderr] 95 | generic_list: generic_list.unwrap_or(Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `generic_list.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/component_declaration.rs:96:20 [INFO] [stderr] | [INFO] [stderr] 96 | port_list: port_list.unwrap_or(Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `port_list.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/design_unit.rs:195:24 [INFO] [stderr] | [INFO] [stderr] 195 | if context_clause.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!context_clause.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expression.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / if let &[Choice::Expression(ref choice)] = choices.as_slice() { [INFO] [stderr] 108 | | result.push(ElementAssociation::Positional(choice.clone())); [INFO] [stderr] 109 | | return Ok(WithPos::from(result, token)) [INFO] [stderr] 110 | | } else { [INFO] [stderr] 111 | | return Err(Message::error(&token, "Expected => after others")); [INFO] [stderr] 112 | | } [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] 107 | if let [Choice::Expression(ref choice)] = *choices.as_slice() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expression.rs:115:17 [INFO] [stderr] | [INFO] [stderr] 115 | / if let &[Choice::Expression(ref choice)] = choices.as_slice() { [INFO] [stderr] 116 | | result.push(ElementAssociation::Positional(choice.clone())); [INFO] [stderr] 117 | | } else { [INFO] [stderr] 118 | | return Err(Message::error(&token, "Expected => after others")); [INFO] [stderr] 119 | | } [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 | if let [Choice::Expression(ref choice)] = *choices.as_slice() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/expression.rs:216:23 [INFO] [stderr] | [INFO] [stderr] 216 | let mut pos = selected_name.get(0).unwrap().pos.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&selected_name[0]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/expression.rs:223:36 [INFO] [stderr] | [INFO] [stderr] 223 | pos = pos.combine(&selected_name.get(selected_name.len() - 1).unwrap().pos); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `selected_name[selected_name.len() - 1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expression.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | / match choices.as_slice() { [INFO] [stderr] 315 | | // Can be aggregate or expression [INFO] [stderr] 316 | | &[Choice::Expression(ref expr)] => { [INFO] [stderr] 317 | | let sep_token = stream.peek_expect()?; [INFO] [stderr] ... | [INFO] [stderr] 345 | | .combine_pos_with(&token)), [INFO] [stderr] 346 | | } [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] 314 | match *choices.as_slice() { [INFO] [stderr] 315 | // Can be aggregate or expression [INFO] [stderr] 316 | [Choice::Expression(ref expr)] => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/tokenizer.rs:200:9 [INFO] [stderr] | [INFO] [stderr] 200 | / { [INFO] [stderr] 201 | | match $token.kind { [INFO] [stderr] 202 | | $( [INFO] [stderr] 203 | | $($kind)|+ => $result [INFO] [stderr] ... | [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/interface_declaration.rs:251:8 [INFO] [stderr] | [INFO] [stderr] 251 | Ok(try_token_kind!(token, [INFO] [stderr] | ________- [INFO] [stderr] 252 | | SemiColon => { [INFO] [stderr] 253 | | stream.move_after(&token); [INFO] [stderr] 254 | | if stream.peek_expect()?.kind == RightPar { [INFO] [stderr] ... | [INFO] [stderr] 260 | | RightPar => {} [INFO] [stderr] 261 | | )) [INFO] [stderr] | |_____- in this macro invocation [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] 200 | () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/latin_1.rs:54:27 [INFO] [stderr] | [INFO] [stderr] 54 | b'A'..=b'Z' | 192..=222 => chr + 32, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/latin_1.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | 215 => chr, [INFO] [stderr] | ^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/latin_1.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn into_lowercase(&mut self) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/library.rs:175:16 [INFO] [stderr] | [INFO] [stderr] 175 | if let Some(_) = self.body { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 176 | | messages.push(Message::error( [INFO] [stderr] 177 | | body.ident(), [INFO] [stderr] 178 | | format!( [INFO] [stderr] ... | [INFO] [stderr] 199 | | self.body = Some(body); [INFO] [stderr] 200 | | } [INFO] [stderr] | |_________- help: try this: `if self.body.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/library.rs:352:64 [INFO] [stderr] | [INFO] [stderr] 352 | messages.push(Message::error(&pos, format!("Invalid selected name for entity")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Invalid selected name for entity".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/names.rs:61:20 [INFO] [stderr] | [INFO] [stderr] 61 | let mut name = simple_names.get(0).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&simple_names[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/names.rs:319:5 [INFO] [stderr] | [INFO] [stderr] 319 | / loop { [INFO] [stderr] 320 | | if let Some(token) = stream.peek()? { [INFO] [stderr] 321 | | match token.kind { [INFO] [stderr] 322 | | Dot => { [INFO] [stderr] ... | [INFO] [stderr] 406 | | } [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(token) = stream.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] error: this loop never actually loops [INFO] [stderr] --> src/names.rs:352:21 [INFO] [stderr] | [INFO] [stderr] 352 | / loop { [INFO] [stderr] 353 | | let assoc = parse_association_element(stream)?; [INFO] [stderr] 354 | | let sep_token = stream.expect()?; [INFO] [stderr] 355 | | try_token_kind!( [INFO] [stderr] ... | [INFO] [stderr] 397 | | ) [INFO] [stderr] 398 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/object_declaration.rs:20:12 [INFO] [stderr] | [INFO] [stderr] 20 | if let Some(_) = stream.pop_if_kind(ColonEq)? { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 21 | | let expr = parse_expression(stream)?; [INFO] [stderr] 22 | | Ok(Some(expr)) [INFO] [stderr] 23 | | } else { [INFO] [stderr] 24 | | Ok(None) [INFO] [stderr] 25 | | } [INFO] [stderr] | |_____- help: try this: `if stream.pop_if_kind(ColonEq)?.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `parser::VHDLParser` [INFO] [stderr] --> src/parser.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | / pub fn new() -> VHDLParser { [INFO] [stderr] 52 | | VHDLParser { [INFO] [stderr] 53 | | symtab: Arc::new(SymbolTable::new()), [INFO] [stderr] 54 | | } [INFO] [stderr] 55 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 50 | impl Default for parser::VHDLParser { [INFO] [stderr] 51 | fn default() -> Self { [INFO] [stderr] 52 | Self::new() [INFO] [stderr] 53 | } [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/parser.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | input: Arc)>>>>, [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: you should consider adding a `Default` implementation for `project::Project` [INFO] [stderr] --> src/project.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Project { [INFO] [stderr] 28 | | Project { [INFO] [stderr] 29 | | parser: VHDLParser::new(), [INFO] [stderr] 30 | | files: FnvHashMap::default(), [INFO] [stderr] 31 | | } [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | impl Default for project::Project { [INFO] [stderr] 27 | fn default() -> Self { [INFO] [stderr] 28 | Self::new() [INFO] [stderr] 29 | } [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/range.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / if let &Name::Attribute(ref attribute_name) = name.as_ref() { [INFO] [stderr] 55 | | if attribute_name.attr.item == stream.tokenizer.range_ident [INFO] [stderr] 56 | | || attribute_name.attr.item == stream.tokenizer.reverse_range_ident [INFO] [stderr] 57 | | { [INFO] [stderr] ... | [INFO] [stderr] 61 | | } [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] 54 | if let Name::Attribute(ref attribute_name) = *name.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/semantic.rs:118:86 [INFO] [stderr] | [INFO] [stderr] 118 | } else if self.ast.is_protected_type() && other.ast.is_protected_type_body() { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 119 | | true [INFO] [stderr] 120 | | } else if self.ast.is_incomplete_type() [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/semantic.rs:116:84 [INFO] [stderr] | [INFO] [stderr] 116 | if self.ast.is_deferred_constant() && other.ast.is_non_deferred_constant() { [INFO] [stderr] | ____________________________________________________________________________________^ [INFO] [stderr] 117 | | true [INFO] [stderr] 118 | | } else if self.ast.is_protected_type() && other.ast.is_protected_type_body() { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/semantic.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | } else if self.ast.is_incomplete_type() [INFO] [stderr] | ________________^ [INFO] [stderr] 121 | | && other.ast.is_type_declaration() [INFO] [stderr] 122 | | && !other.ast.is_incomplete_type() [INFO] [stderr] 123 | | { [INFO] [stderr] ... | [INFO] [stderr] 126 | | false [INFO] [stderr] 127 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 120 | } else self.ast.is_incomplete_type() [INFO] [stderr] 121 | && other.ast.is_type_declaration() [INFO] [stderr] 122 | && !other.ast.is_incomplete_type() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/semantic.rs:307:22 [INFO] [stderr] | [INFO] [stderr] 307 | fn to_designator(self) -> Designator { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/semantic.rs:331:22 [INFO] [stderr] | [INFO] [stderr] 331 | fn to_designator(self) -> Designator { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [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/semantic.rs:481:5 [INFO] [stderr] | [INFO] [stderr] 481 | / fn interface_list<'a>(&'a self) -> &[InterfaceDeclaration] { [INFO] [stderr] 482 | | match self { [INFO] [stderr] 483 | | SubprogramDeclaration::Function(fun) => &fun.parameter_list, [INFO] [stderr] 484 | | SubprogramDeclaration::Procedure(proc) => &proc.parameter_list, [INFO] [stderr] 485 | | } [INFO] [stderr] 486 | | } [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/semantic.rs:652:25 [INFO] [stderr] | [INFO] [stderr] 652 | context_clause: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[WithPos]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/semantic.rs:656:13 [INFO] [stderr] | [INFO] [stderr] 656 | / match context_item.item { [INFO] [stderr] 657 | | ContextItem::Library(LibraryClause { ref name_list }) => { [INFO] [stderr] 658 | | for library_name in name_list.iter() { [INFO] [stderr] 659 | | if self.std_sym == library_name.item { [INFO] [stderr] ... | [INFO] [stderr] 674 | | _ => {} [INFO] [stderr] 675 | | } [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] 656 | if let ContextItem::Library(LibraryClause { ref name_list }) = context_item.item { [INFO] [stderr] 657 | for library_name in name_list.iter() { [INFO] [stderr] 658 | if self.std_sym == library_name.item { [INFO] [stderr] 659 | // std is pre-defined [INFO] [stderr] 660 | } else if self.work_sym == library_name.item { [INFO] [stderr] 661 | messages.push(Message::hint( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/semantic.rs:664:33 [INFO] [stderr] | [INFO] [stderr] 664 | format!("Library clause not necessary for current working library"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Library clause not necessary for current working library".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/source.rs:325:16 [INFO] [stderr] | [INFO] [stderr] 325 | if lines.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!lines.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: called `.get_mut().unwrap()` on a VecDeque. Using `[]` is more clear and more concise [INFO] [stderr] --> src/source.rs:327:53 [INFO] [stderr] | [INFO] [stderr] 327 | let (_, ref offset, ref mut line) = lines.get_mut(last_idx).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `lines[last_idx]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/source.rs:403:45 [INFO] [stderr] | [INFO] [stderr] 403 | Some((ref lineno, _, _)) => lineno.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*lineno` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | write!(result, "{} --> ", lineno_str); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:423:17 [INFO] [stderr] | [INFO] [stderr] 423 | write!(result, "{} | ", lineno_str); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | writeln!(result, "{}", &message); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:463:9 [INFO] [stderr] | [INFO] [stderr] 463 | writeln!(result, " --> {}:{}", file_name, lineno); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:467:9 [INFO] [stderr] | [INFO] [stderr] 467 | writeln!(result, " |"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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 should consider deriving a `Default` implementation for `symbol_table::SymbolTable` [INFO] [stderr] --> src/symbol_table.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / pub fn new() -> SymbolTable { [INFO] [stderr] 73 | | SymbolTable { [INFO] [stderr] 74 | | name_to_symbol: RwLock::new(FnvHashMap::default()), [INFO] [stderr] 75 | | } [INFO] [stderr] 76 | | } [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] 66 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/tokenstream.rs:79:26 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn is_peek_kinds(self: &mut Self, kinds: &[Kind]) -> ParseResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `vhdl_parser`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:390:5 [INFO] [stderr] | [INFO] [stderr] 390 | Specification(AttributeSpecification), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 390 | Specification(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:565:5 [INFO] [stderr] | [INFO] [stderr] 565 | Object(InterfaceObjectDeclaration), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 565 | Object(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:599:5 [INFO] [stderr] | [INFO] [stderr] 599 | File(FileDeclaration), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 599 | File(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:683:5 [INFO] [stderr] | [INFO] [stderr] 683 | Selected(Selection), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 683 | Selected(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:757:5 [INFO] [stderr] | [INFO] [stderr] 757 | Assert(AssertStatement), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 757 | Assert(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:861:5 [INFO] [stderr] | [INFO] [stderr] 861 | Assert(ConcurrentAssertStatement), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 861 | Assert(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:1043:5 [INFO] [stderr] | [INFO] [stderr] 1043 | Configuration(DesignUnit), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1043 | Configuration(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tokenizer.rs:220:23 [INFO] [stderr] | [INFO] [stderr] 220 | pub fn kind_str(kind: &Kind) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Kind` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/tokenizer.rs:372:18 [INFO] [stderr] | [INFO] [stderr] 372 | pub fn kinds_str<'a>(kinds: &[Kind]) -> String { [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tokenizer.rs:516:33 [INFO] [stderr] | [INFO] [stderr] 516 | fn can_be_char(last_token_kind: &Option) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:581:21 [INFO] [stderr] | [INFO] [stderr] 581 | let digit = match b { [INFO] [stderr] | _____________________^ [INFO] [stderr] 582 | | b'0'..=b'9' => { [INFO] [stderr] 583 | | cursor.pop(); [INFO] [stderr] 584 | | (b - b'0') [INFO] [stderr] ... | [INFO] [stderr] 606 | | } [INFO] [stderr] 607 | | } as i64; [INFO] [stderr] | |________________^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 581 | let digit = i64::from(match b { [INFO] [stderr] 582 | b'0'..=b'9' => { [INFO] [stderr] 583 | cursor.pop(); [INFO] [stderr] 584 | (b - b'0') [INFO] [stderr] 585 | } [INFO] [stderr] 586 | b'a'..=b'f' => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:643:12 [INFO] [stderr] | [INFO] [stderr] 643 | if (i32::min_value() as i64) <= exp && exp <= (i32::max_value() as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::min_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:643:55 [INFO] [stderr] | [INFO] [stderr] 643 | if (i32::min_value() as i64) <= exp && exp <= (i32::max_value() as i64) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::max_value())` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokenizer.rs:706:27 [INFO] [stderr] | [INFO] [stderr] 706 | buffer.bytes.push(chr.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `chr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/tokenizer.rs:737:27 [INFO] [stderr] | [INFO] [stderr] 737 | b'0'..=b'9' | b'a'..=b'f' | b'A'..=b'F' | b'.' => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/tokenizer.rs:734:13 [INFO] [stderr] | [INFO] [stderr] 734 | b'e' => { [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/tokenizer.rs:1055:14 [INFO] [stderr] | [INFO] [stderr] 1055 | .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: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokenizer.rs:1327:37 [INFO] [stderr] | [INFO] [stderr] 1327 | tokens.iter().map(|ref tok| tok.kind.clone()).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `tok.kind` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokenizer.rs:1341:29 [INFO] [stderr] | [INFO] [stderr] 1341 | .map(|ref tok| (tok.kind.clone(), tok.value.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `tok.kind` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/tokenizer.rs:1569:67 [INFO] [stderr] | [INFO] [stderr] 1569 | Value::AbstractLiteral(ast::AbstractLiteral::Real(2.7182818284590452)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `2.718_281_828_459_045` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:1915:41 [INFO] [stderr] | [INFO] [stderr] 1915 | let large_int = format!("1e{}", (i32::max_value() as i64) + 1).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::max_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:1925:43 [INFO] [stderr] | [INFO] [stderr] 1925 | let large_int = format!("1.0e{}", (i32::min_value() as i64) - 1).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(i32::min_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i64 to i128 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:1935:26 [INFO] [stderr] | [INFO] [stderr] 1935 | let large_int = ((i64::max_value() as i128) + 1).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i128::from(i64::max_value())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/component_declaration.rs:95:23 [INFO] [stderr] | [INFO] [stderr] 95 | generic_list: generic_list.unwrap_or(Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `generic_list.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/component_declaration.rs:96:20 [INFO] [stderr] | [INFO] [stderr] 96 | port_list: port_list.unwrap_or(Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `port_list.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/design_unit.rs:195:24 [INFO] [stderr] | [INFO] [stderr] 195 | if context_clause.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!context_clause.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/design_unit.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | / match design_file.design_units.as_slice() { [INFO] [stderr] 291 | | &[AnyDesignUnit::Primary(PrimaryUnit::EntityDeclaration(DesignUnit { [INFO] [stderr] 292 | | unit: ref entity, [INFO] [stderr] 293 | | .. [INFO] [stderr] 294 | | }))] => entity.to_owned(), [INFO] [stderr] 295 | | _ => panic!("Expected single entity {:?}", design_file), [INFO] [stderr] 296 | | } [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] 290 | match *design_file.design_units.as_slice() { [INFO] [stderr] 291 | [AnyDesignUnit::Primary(PrimaryUnit::EntityDeclaration(DesignUnit { [INFO] [stderr] 292 | unit: ref entity, [INFO] [stderr] 293 | .. [INFO] [stderr] 294 | }))] => entity.to_owned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/design_unit.rs:745:15 [INFO] [stderr] | [INFO] [stderr] 745 | match design_file.design_units.get(1).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&design_file.design_units[1]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expression.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / if let &[Choice::Expression(ref choice)] = choices.as_slice() { [INFO] [stderr] 108 | | result.push(ElementAssociation::Positional(choice.clone())); [INFO] [stderr] 109 | | return Ok(WithPos::from(result, token)) [INFO] [stderr] 110 | | } else { [INFO] [stderr] 111 | | return Err(Message::error(&token, "Expected => after others")); [INFO] [stderr] 112 | | } [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] 107 | if let [Choice::Expression(ref choice)] = *choices.as_slice() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expression.rs:115:17 [INFO] [stderr] | [INFO] [stderr] 115 | / if let &[Choice::Expression(ref choice)] = choices.as_slice() { [INFO] [stderr] 116 | | result.push(ElementAssociation::Positional(choice.clone())); [INFO] [stderr] 117 | | } else { [INFO] [stderr] 118 | | return Err(Message::error(&token, "Expected => after others")); [INFO] [stderr] 119 | | } [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 | if let [Choice::Expression(ref choice)] = *choices.as_slice() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/expression.rs:216:23 [INFO] [stderr] | [INFO] [stderr] 216 | let mut pos = selected_name.get(0).unwrap().pos.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&selected_name[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/expression.rs:223:36 [INFO] [stderr] | [INFO] [stderr] 223 | pos = pos.combine(&selected_name.get(selected_name.len() - 1).unwrap().pos); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `selected_name[selected_name.len() - 1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/expression.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | / match choices.as_slice() { [INFO] [stderr] 315 | | // Can be aggregate or expression [INFO] [stderr] 316 | | &[Choice::Expression(ref expr)] => { [INFO] [stderr] 317 | | let sep_token = stream.peek_expect()?; [INFO] [stderr] ... | [INFO] [stderr] 345 | | .combine_pos_with(&token)), [INFO] [stderr] 346 | | } [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] 314 | match *choices.as_slice() { [INFO] [stderr] 315 | // Can be aggregate or expression [INFO] [stderr] 316 | [Choice::Expression(ref expr)] => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/tokenizer.rs:200:9 [INFO] [stderr] | [INFO] [stderr] 200 | / { [INFO] [stderr] 201 | | match $token.kind { [INFO] [stderr] 202 | | $( [INFO] [stderr] 203 | | $($kind)|+ => $result [INFO] [stderr] ... | [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] ::: src/interface_declaration.rs:251:8 [INFO] [stderr] | [INFO] [stderr] 251 | Ok(try_token_kind!(token, [INFO] [stderr] | ________- [INFO] [stderr] 252 | | SemiColon => { [INFO] [stderr] 253 | | stream.move_after(&token); [INFO] [stderr] 254 | | if stream.peek_expect()?.kind == RightPar { [INFO] [stderr] ... | [INFO] [stderr] 260 | | RightPar => {} [INFO] [stderr] 261 | | )) [INFO] [stderr] | |_____- in this macro invocation [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] 200 | () [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/latin_1.rs:54:27 [INFO] [stderr] | [INFO] [stderr] 54 | b'A'..=b'Z' | 192..=222 => chr + 32, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/latin_1.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | 215 => chr, [INFO] [stderr] | ^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/latin_1.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn into_lowercase(&mut self) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/library.rs:175:16 [INFO] [stderr] | [INFO] [stderr] 175 | if let Some(_) = self.body { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 176 | | messages.push(Message::error( [INFO] [stderr] 177 | | body.ident(), [INFO] [stderr] 178 | | format!( [INFO] [stderr] ... | [INFO] [stderr] 199 | | self.body = Some(body); [INFO] [stderr] 200 | | } [INFO] [stderr] | |_________- help: try this: `if self.body.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/library.rs:352:64 [INFO] [stderr] | [INFO] [stderr] 352 | messages.push(Message::error(&pos, format!("Invalid selected name for entity")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Invalid selected name for entity".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/names.rs:61:20 [INFO] [stderr] | [INFO] [stderr] 61 | let mut name = simple_names.get(0).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&simple_names[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/names.rs:319:5 [INFO] [stderr] | [INFO] [stderr] 319 | / loop { [INFO] [stderr] 320 | | if let Some(token) = stream.peek()? { [INFO] [stderr] 321 | | match token.kind { [INFO] [stderr] 322 | | Dot => { [INFO] [stderr] ... | [INFO] [stderr] 406 | | } [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(token) = stream.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] error: this loop never actually loops [INFO] [stderr] --> src/names.rs:352:21 [INFO] [stderr] | [INFO] [stderr] 352 | / loop { [INFO] [stderr] 353 | | let assoc = parse_association_element(stream)?; [INFO] [stderr] 354 | | let sep_token = stream.expect()?; [INFO] [stderr] 355 | | try_token_kind!( [INFO] [stderr] ... | [INFO] [stderr] 397 | | ) [INFO] [stderr] 398 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/names.rs:498:13 [INFO] [stderr] | [INFO] [stderr] 498 | let foo = WithPos { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/names.rs:503:13 [INFO] [stderr] | [INFO] [stderr] 503 | let bar = WithPos { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `baz` [INFO] [stderr] --> src/names.rs:508:13 [INFO] [stderr] | [INFO] [stderr] 508 | let baz = WithPos { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/names.rs:530:13 [INFO] [stderr] | [INFO] [stderr] 530 | let foo = WithPos { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/names.rs:691:13 [INFO] [stderr] | [INFO] [stderr] 691 | let foo = WithPos { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/names.rs:764:13 [INFO] [stderr] | [INFO] [stderr] 764 | let foo = WithPos { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/object_declaration.rs:20:12 [INFO] [stderr] | [INFO] [stderr] 20 | if let Some(_) = stream.pop_if_kind(ColonEq)? { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 21 | | let expr = parse_expression(stream)?; [INFO] [stderr] 22 | | Ok(Some(expr)) [INFO] [stderr] 23 | | } else { [INFO] [stderr] 24 | | Ok(None) [INFO] [stderr] 25 | | } [INFO] [stderr] | |_____- help: try this: `if stream.pop_if_kind(ColonEq)?.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `parser::VHDLParser` [INFO] [stderr] --> src/parser.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | / pub fn new() -> VHDLParser { [INFO] [stderr] 52 | | VHDLParser { [INFO] [stderr] 53 | | symtab: Arc::new(SymbolTable::new()), [INFO] [stderr] 54 | | } [INFO] [stderr] 55 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 50 | impl Default for parser::VHDLParser { [INFO] [stderr] 51 | fn default() -> Self { [INFO] [stderr] 52 | Self::new() [INFO] [stderr] 53 | } [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/parser.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | input: Arc)>>>>, [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: you should consider adding a `Default` implementation for `project::Project` [INFO] [stderr] --> src/project.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Project { [INFO] [stderr] 28 | | Project { [INFO] [stderr] 29 | | parser: VHDLParser::new(), [INFO] [stderr] 30 | | files: FnvHashMap::default(), [INFO] [stderr] 31 | | } [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | impl Default for project::Project { [INFO] [stderr] 27 | fn default() -> Self { [INFO] [stderr] 28 | Self::new() [INFO] [stderr] 29 | } [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/range.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / if let &Name::Attribute(ref attribute_name) = name.as_ref() { [INFO] [stderr] 55 | | if attribute_name.attr.item == stream.tokenizer.range_ident [INFO] [stderr] 56 | | || attribute_name.attr.item == stream.tokenizer.reverse_range_ident [INFO] [stderr] 57 | | { [INFO] [stderr] ... | [INFO] [stderr] 61 | | } [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] 54 | if let Name::Attribute(ref attribute_name) = *name.as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/semantic.rs:118:86 [INFO] [stderr] | [INFO] [stderr] 118 | } else if self.ast.is_protected_type() && other.ast.is_protected_type_body() { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 119 | | true [INFO] [stderr] 120 | | } else if self.ast.is_incomplete_type() [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/semantic.rs:116:84 [INFO] [stderr] | [INFO] [stderr] 116 | if self.ast.is_deferred_constant() && other.ast.is_non_deferred_constant() { [INFO] [stderr] | ____________________________________________________________________________________^ [INFO] [stderr] 117 | | true [INFO] [stderr] 118 | | } else if self.ast.is_protected_type() && other.ast.is_protected_type_body() { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/semantic.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | } else if self.ast.is_incomplete_type() [INFO] [stderr] | ________________^ [INFO] [stderr] 121 | | && other.ast.is_type_declaration() [INFO] [stderr] 122 | | && !other.ast.is_incomplete_type() [INFO] [stderr] 123 | | { [INFO] [stderr] ... | [INFO] [stderr] 126 | | false [INFO] [stderr] 127 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 120 | } else self.ast.is_incomplete_type() [INFO] [stderr] 121 | && other.ast.is_type_declaration() [INFO] [stderr] 122 | && !other.ast.is_incomplete_type() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/semantic.rs:307:22 [INFO] [stderr] | [INFO] [stderr] 307 | fn to_designator(self) -> Designator { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/semantic.rs:331:22 [INFO] [stderr] | [INFO] [stderr] 331 | fn to_designator(self) -> Designator { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [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/semantic.rs:481:5 [INFO] [stderr] | [INFO] [stderr] 481 | / fn interface_list<'a>(&'a self) -> &[InterfaceDeclaration] { [INFO] [stderr] 482 | | match self { [INFO] [stderr] 483 | | SubprogramDeclaration::Function(fun) => &fun.parameter_list, [INFO] [stderr] 484 | | SubprogramDeclaration::Procedure(proc) => &proc.parameter_list, [INFO] [stderr] 485 | | } [INFO] [stderr] 486 | | } [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/semantic.rs:652:25 [INFO] [stderr] | [INFO] [stderr] 652 | context_clause: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[WithPos]` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/semantic.rs:656:13 [INFO] [stderr] | [INFO] [stderr] 656 | / match context_item.item { [INFO] [stderr] 657 | | ContextItem::Library(LibraryClause { ref name_list }) => { [INFO] [stderr] 658 | | for library_name in name_list.iter() { [INFO] [stderr] 659 | | if self.std_sym == library_name.item { [INFO] [stderr] ... | [INFO] [stderr] 674 | | _ => {} [INFO] [stderr] 675 | | } [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] 656 | if let ContextItem::Library(LibraryClause { ref name_list }) = context_item.item { [INFO] [stderr] 657 | for library_name in name_list.iter() { [INFO] [stderr] 658 | if self.std_sym == library_name.item { [INFO] [stderr] 659 | // std is pre-defined [INFO] [stderr] 660 | } else if self.work_sym == library_name.item { [INFO] [stderr] 661 | messages.push(Message::hint( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/semantic.rs:664:33 [INFO] [stderr] | [INFO] [stderr] 664 | format!("Library clause not necessary for current working library"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Library clause not necessary for current working library".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: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/source.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | / pub fn from_str(contents: &str) -> Self { [INFO] [stderr] 128 | | Self::inline_utf8("{unknown file}", contents).unwrap() [INFO] [stderr] 129 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/source.rs:325:16 [INFO] [stderr] | [INFO] [stderr] 325 | if lines.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!lines.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: called `.get_mut().unwrap()` on a VecDeque. Using `[]` is more clear and more concise [INFO] [stderr] --> src/source.rs:327:53 [INFO] [stderr] | [INFO] [stderr] 327 | let (_, ref offset, ref mut line) = lines.get_mut(last_idx).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `lines[last_idx]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/source.rs:403:45 [INFO] [stderr] | [INFO] [stderr] 403 | Some((ref lineno, _, _)) => lineno.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*lineno` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | write!(result, "{} --> ", lineno_str); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:423:17 [INFO] [stderr] | [INFO] [stderr] 423 | write!(result, "{} | ", lineno_str); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | writeln!(result, "{}", &message); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:463:9 [INFO] [stderr] | [INFO] [stderr] 463 | writeln!(result, " --> {}:{}", file_name, lineno); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/source.rs:467:9 [INFO] [stderr] | [INFO] [stderr] 467 | writeln!(result, " |"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/source.rs:525:9 [INFO] [stderr] | [INFO] [stderr] 525 | / file.write(&Latin1String::from_utf8_unchecked(contents).bytes) [INFO] [stderr] 526 | | .unwrap(); [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `symbol_table::SymbolTable` [INFO] [stderr] --> src/symbol_table.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / pub fn new() -> SymbolTable { [INFO] [stderr] 73 | | SymbolTable { [INFO] [stderr] 74 | | name_to_symbol: RwLock::new(FnvHashMap::default()), [INFO] [stderr] 75 | | } [INFO] [stderr] 76 | | } [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] 66 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/tokenstream.rs:79:26 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn is_peek_kinds(self: &mut Self, kinds: &[Kind]) -> ParseResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [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/test_util.rs:418:36 [INFO] [stderr] | [INFO] [stderr] 418 | pub fn check_no_messages(messages: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Message]` [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/test_util.rs:422:8 [INFO] [stderr] | [INFO] [stderr] 422 | if messages.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!messages.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 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `vhdl_parser`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "f01e2fc17341365aae49468968fd6a566542ae11771273742cfa24dd4939f68f"` [INFO] running `"docker" "rm" "-f" "f01e2fc17341365aae49468968fd6a566542ae11771273742cfa24dd4939f68f"` [INFO] [stdout] f01e2fc17341365aae49468968fd6a566542ae11771273742cfa24dd4939f68f