[INFO] crate kailua_env 1.0.4 is already in cache [INFO] extracting crate kailua_env 1.0.4 into work/ex/clippy-test-run/sources/stable/reg/kailua_env/1.0.4 [INFO] extracting crate kailua_env 1.0.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kailua_env/1.0.4 [INFO] validating manifest of kailua_env-1.0.4 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of kailua_env-1.0.4 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing kailua_env-1.0.4 [INFO] finished frobbing kailua_env-1.0.4 [INFO] frobbed toml for kailua_env-1.0.4 written to work/ex/clippy-test-run/sources/stable/reg/kailua_env/1.0.4/Cargo.toml [INFO] started frobbing kailua_env-1.0.4 [INFO] finished frobbing kailua_env-1.0.4 [INFO] frobbed toml for kailua_env-1.0.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/kailua_env/1.0.4/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting kailua_env-1.0.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/kailua_env/1.0.4:/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] 0ac06a485ea84b58a36f01581214e6788515b9d9e46d35617edad4ebb142846b [INFO] running `"docker" "start" "-a" "0ac06a485ea84b58a36f01581214e6788515b9d9e46d35617edad4ebb142846b"` [INFO] [stderr] Checking kailua_env v1.0.4 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 22 | Unit { unit: unit } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `unit` [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/loc.rs:82:28 [INFO] [stderr] | [INFO] [stderr] 82 | Pos { unit: unit.unit, 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/loc.rs:149:29 [INFO] [stderr] | [INFO] [stderr] 149 | Span { unit: unit.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `begin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:149:43 [INFO] [stderr] | [INFO] [stderr] 149 | Span { unit: unit.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:241:37 [INFO] [stderr] | [INFO] [stderr] 241 | Span { unit: self.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `begin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:241:51 [INFO] [stderr] | [INFO] [stderr] 241 | Span { unit: self.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:110:23 [INFO] [stderr] | [INFO] [stderr] 110 | Spanned { span: span, base: Scope { scope: scope } } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `span` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:110:49 [INFO] [stderr] | [INFO] [stderr] 110 | Spanned { span: span, base: Scope { scope: scope } } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:149:66 [INFO] [stderr] | [INFO] [stderr] 149 | self.iter.next().map(|&(ref name, id)| (name, ScopedId { 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/scope.rs:169:48 [INFO] [stderr] | [INFO] [stderr] 169 | let scoped_id = ScopedId { 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/scope.rs:201:21 [INFO] [stderr] | [INFO] [stderr] 201 | ScopeItem { parent: parent, span: Span::dummy(), names: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:235:17 [INFO] [stderr] | [INFO] [stderr] 235 | Scope { scope: scope } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:242:17 [INFO] [stderr] | [INFO] [stderr] 242 | Scope { scope: scope } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:264:44 [INFO] [stderr] | [INFO] [stderr] 264 | let scoped_id = ScopedId { 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/scope.rs:296:17 [INFO] [stderr] | [INFO] [stderr] 296 | Names { iter: iter } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:342:48 [INFO] [stderr] | [INFO] [stderr] 342 | return Some((s, ScopedId { 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/source.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | lineoffs: lineoffs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `lineoffs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | lineoffs: lineoffs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `lineoffs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:226:78 [INFO] [stderr] | [INFO] [stderr] 226 | let spans = SourceLineSpans { slice: &self.lineoffs[begin..(end+2)], unit: unit }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `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/source.rs:498:13 [INFO] [stderr] | [INFO] [stderr] 498 | iter: iter, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:35:16 [INFO] [stderr] | [INFO] [stderr] 35 | Node { low: low, high: high, max: high, height: 1, value: value, left: None, right: None } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `low` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:35:26 [INFO] [stderr] | [INFO] [stderr] 35 | Node { low: low, high: high, max: high, height: 1, value: value, left: None, right: None } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `high` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:35:60 [INFO] [stderr] | [INFO] [stderr] 35 | Node { low: low, high: high, max: high, height: 1, value: value, left: None, right: None } [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/spanmap.rs:231:40 [INFO] [stderr] | [INFO] [stderr] 231 | return SpannedValues { iter: iter, unit: unit, stack: vec![root] }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:231:52 [INFO] [stderr] | [INFO] [stderr] 231 | return SpannedValues { iter: iter, unit: unit, stack: vec![root] }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `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/spanmap.rs:236:25 [INFO] [stderr] | [INFO] [stderr] 236 | SpannedValues { iter: iter, unit: Unit::dummy(), stack: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 22 | Unit { unit: unit } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `unit` [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/loc.rs:82:28 [INFO] [stderr] | [INFO] [stderr] 82 | Pos { unit: unit.unit, 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/loc.rs:149:29 [INFO] [stderr] | [INFO] [stderr] 149 | Span { unit: unit.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `begin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:149:43 [INFO] [stderr] | [INFO] [stderr] 149 | Span { unit: unit.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:241:37 [INFO] [stderr] | [INFO] [stderr] 241 | Span { unit: self.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `begin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/loc.rs:241:51 [INFO] [stderr] | [INFO] [stderr] 241 | Span { unit: self.unit, begin: begin, end: end } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:110:23 [INFO] [stderr] | [INFO] [stderr] 110 | Spanned { span: span, base: Scope { scope: scope } } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `span` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:110:49 [INFO] [stderr] | [INFO] [stderr] 110 | Spanned { span: span, base: Scope { scope: scope } } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:149:66 [INFO] [stderr] | [INFO] [stderr] 149 | self.iter.next().map(|&(ref name, id)| (name, ScopedId { 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/scope.rs:169:48 [INFO] [stderr] | [INFO] [stderr] 169 | let scoped_id = ScopedId { 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/scope.rs:201:21 [INFO] [stderr] | [INFO] [stderr] 201 | ScopeItem { parent: parent, span: Span::dummy(), names: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:235:17 [INFO] [stderr] | [INFO] [stderr] 235 | Scope { scope: scope } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:242:17 [INFO] [stderr] | [INFO] [stderr] 242 | Scope { scope: scope } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:264:44 [INFO] [stderr] | [INFO] [stderr] 264 | let scoped_id = ScopedId { 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/scope.rs:296:17 [INFO] [stderr] | [INFO] [stderr] 296 | Names { iter: iter } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:342:48 [INFO] [stderr] | [INFO] [stderr] 342 | return Some((s, ScopedId { 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/source.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | lineoffs: lineoffs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `lineoffs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:162:13 [INFO] [stderr] | [INFO] [stderr] 162 | lineoffs: lineoffs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `lineoffs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.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:226:78 [INFO] [stderr] | [INFO] [stderr] 226 | let spans = SourceLineSpans { slice: &self.lineoffs[begin..(end+2)], unit: unit }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `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/source.rs:498:13 [INFO] [stderr] | [INFO] [stderr] 498 | iter: iter, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:35:16 [INFO] [stderr] | [INFO] [stderr] 35 | Node { low: low, high: high, max: high, height: 1, value: value, left: None, right: None } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `low` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:35:26 [INFO] [stderr] | [INFO] [stderr] 35 | Node { low: low, high: high, max: high, height: 1, value: value, left: None, right: None } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `high` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:35:60 [INFO] [stderr] | [INFO] [stderr] 35 | Node { low: low, high: high, max: high, height: 1, value: value, left: None, right: None } [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/spanmap.rs:231:40 [INFO] [stderr] | [INFO] [stderr] 231 | return SpannedValues { iter: iter, unit: unit, stack: vec![root] }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spanmap.rs:231:52 [INFO] [stderr] | [INFO] [stderr] 231 | return SpannedValues { iter: iter, unit: unit, stack: vec![root] }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `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/spanmap.rs:236:25 [INFO] [stderr] | [INFO] [stderr] 236 | SpannedValues { iter: iter, unit: Unit::dummy(), stack: Vec::new() } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/loc.rs:25:27 [INFO] [stderr] | [INFO] [stderr] 25 | const BUILTIN_UNIT: u32 = 0xffffffff; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:262:43 [INFO] [stderr] | [INFO] [stderr] 262 | assert!(self.ids.len() <= 0xffffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:409:55 [INFO] [stderr] | [INFO] [stderr] 409 | let x = m.generate(g); m.set_span(x.with_loc(span(999000, 999999))); [INFO] [stderr] | ^^^^^^ help: consider: `999_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:409:63 [INFO] [stderr] | [INFO] [stderr] 409 | let x = m.generate(g); m.set_span(x.with_loc(span(999000, 999999))); [INFO] [stderr] | ^^^^^^ help: consider: `999_999` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:420:37 [INFO] [stderr] | [INFO] [stderr] 420 | assert_eq!(m.scope_from_pos(pos(888888)), None); [INFO] [stderr] | ^^^^^^ help: consider: `888_888` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:421:37 [INFO] [stderr] | [INFO] [stderr] 421 | assert_eq!(m.scope_from_pos(pos(999888)), Some(x)); [INFO] [stderr] | ^^^^^^ help: consider: `999_888` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:422:37 [INFO] [stderr] | [INFO] [stderr] 422 | assert_eq!(m.scope_from_pos(pos(1000000)), None); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/source.rs:270:20 [INFO] [stderr] | [INFO] [stderr] 270 | const SOURCE: &'static [u8] = b"\xef\xbb\xbfhello\nworld\r\n\ra\n\nxyz"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/loc.rs:25:27 [INFO] [stderr] | [INFO] [stderr] 25 | const BUILTIN_UNIT: u32 = 0xffffffff; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/scope.rs:262:43 [INFO] [stderr] | [INFO] [stderr] 262 | assert!(self.ids.len() <= 0xffffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn is_dummy(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:40:32 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn is_source_dependent(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn to_usize(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:94:21 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn is_dummy(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:98:32 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn is_source_dependent(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:102:17 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn unit(&self) -> Unit { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn to_usize(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: item `loc::Span` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/loc.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / impl Span { [INFO] [stderr] 153 | | pub fn new(begin: Pos, end: Pos) -> Span { [INFO] [stderr] 154 | | if begin.is_dummy() || end.is_dummy() { [INFO] [stderr] 155 | | Span::dummy() [INFO] [stderr] ... | [INFO] [stderr] 230 | | } [INFO] [stderr] 231 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/scope.rs:26:21 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn to_usize(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider adding a `Default` implementation for `scope::ScopeMap` [INFO] [stderr] --> src/scope.rs:223:5 [INFO] [stderr] | [INFO] [stderr] 223 | / pub fn new() -> ScopeMap { [INFO] [stderr] 224 | | ScopeMap { [INFO] [stderr] 225 | | scopes: vec![ScopeItem::new(0)], [INFO] [stderr] 226 | | names: HashMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | } [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] 222 | impl Default for scope::ScopeMap { [INFO] [stderr] 223 | fn default() -> Self { [INFO] [stderr] 224 | Self::new() [INFO] [stderr] 225 | } [INFO] [stderr] 226 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/scope.rs:258:53 [INFO] [stderr] | [INFO] [stderr] 258 | let scopes = self.names.entry(name.clone()).or_insert(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:284:5 [INFO] [stderr] | [INFO] [stderr] 284 | / pub fn all_scopes<'a>(&'a self) -> AllScopes<'a, Name> { [INFO] [stderr] 285 | | AllScopes { scopes: &self.scopes, range: 1..(self.scopes.len() as u32) } [INFO] [stderr] 286 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:288:5 [INFO] [stderr] | [INFO] [stderr] 288 | / pub fn ancestor_scopes<'a>(&'a self, scope: Scope) -> AncestorScopes<'a, Name> { [INFO] [stderr] 289 | | assert!((scope.scope as usize) < self.scopes.len()); [INFO] [stderr] 290 | | AncestorScopes { scopes: &self.scopes, current: scope.scope, done: false } [INFO] [stderr] 291 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:293:5 [INFO] [stderr] | [INFO] [stderr] 293 | / pub fn names<'a>(&'a self, scope: Scope) -> Names<'a, Name> { [INFO] [stderr] 294 | | assert!((scope.scope as usize) < self.scopes.len()); [INFO] [stderr] 295 | | let iter = self.scopes[scope.scope as usize].names.iter(); [INFO] [stderr] 296 | | Names { iter: iter } [INFO] [stderr] 297 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | / pub fn names_and_scopes<'a>(&'a self, scope: Scope) -> NamesAndScopes<'a, Name> { [INFO] [stderr] 302 | | assert!((scope.scope as usize) < self.scopes.len()); [INFO] [stderr] 303 | | let iter = self.scopes[scope.scope as usize].names.iter(); [INFO] [stderr] 304 | | NamesAndScopes { scopes: &self.scopes, current: scope.scope, iter: Some(iter) } [INFO] [stderr] 305 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | / pub fn find_id_with_index<'a>(&'a self, id: usize) -> Option<(&'a Name, Scope)> { [INFO] [stderr] 312 | | if id < self.ids.len() { [INFO] [stderr] 313 | | let (ref name, scope) = self.ids[id]; [INFO] [stderr] 314 | | Some((name, scope)) [INFO] [stderr] ... | [INFO] [stderr] 317 | | } [INFO] [stderr] 318 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/source.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / let begin; [INFO] [stderr] 96 | | if data.starts_with(bom) { [INFO] [stderr] 97 | | data = &data[bom.len()..]; [INFO] [stderr] 98 | | begin = bom.len() as u32; [INFO] [stderr] 99 | | } else { [INFO] [stderr] 100 | | begin = 0; [INFO] [stderr] 101 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let begin = if data.starts_with(bom) { ..; bom.len() as u32 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [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/source.rs:177:5 [INFO] [stderr] | [INFO] [stderr] 177 | / pub fn data<'a>(&'a self) -> SourceSlice<'a> { [INFO] [stderr] 178 | | match self.buf { [INFO] [stderr] 179 | | SourceBuf::U8(ref data) => SourceSlice::U8(data), [INFO] [stderr] 180 | | SourceBuf::U16(ref data) => SourceSlice::U16(data), [INFO] [stderr] 181 | | } [INFO] [stderr] 182 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: item `source::SourceSlice<'a>` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/source.rs:347:1 [INFO] [stderr] | [INFO] [stderr] 347 | / impl<'a> SourceSlice<'a> { [INFO] [stderr] 348 | | pub fn len(&self) -> usize { [INFO] [stderr] 349 | | match *self { [INFO] [stderr] 350 | | SourceSlice::U8(s) => s.len(), [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/source.rs:374:15 [INFO] [stderr] | [INFO] [stderr] 374 | pub fn u8(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/source.rs:381:16 [INFO] [stderr] | [INFO] [stderr] 381 | pub fn u16(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider deriving a `Default` implementation for `source::Source` [INFO] [stderr] --> src/source.rs:442:5 [INFO] [stderr] | [INFO] [stderr] 442 | / pub fn new() -> Source { [INFO] [stderr] 443 | | Source { files: HashMap::new(), next_unit: 1 } [INFO] [stderr] 444 | | } [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] 436 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source.rs:471:5 [INFO] [stderr] | [INFO] [stderr] 471 | / pub fn file<'a>(&'a self, unit: Unit) -> Option<&'a SourceFile> { [INFO] [stderr] 472 | | self.files.get(&unit) [INFO] [stderr] 473 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source.rs:479:5 [INFO] [stderr] | [INFO] [stderr] 479 | / pub fn slice_from_span<'a>(&'a self, span: Span) -> Option> { [INFO] [stderr] 480 | | if let Some(file) = self.files.get(&span.unit()) { [INFO] [stderr] 481 | | let range = span.begin().to_usize()..span.end().to_usize(); [INFO] [stderr] 482 | | match file.buf { [INFO] [stderr] ... | [INFO] [stderr] 488 | | } [INFO] [stderr] 489 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/spanmap.rs:59:21 [INFO] [stderr] | [INFO] [stderr] 59 | skew += n.height as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(n.height)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/spanmap.rs:62:21 [INFO] [stderr] | [INFO] [stderr] 62 | skew -= n.height as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(n.height)` [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: item `spanmap::SpanMap` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/spanmap.rs:122:1 [INFO] [stderr] | [INFO] [stderr] 122 | / impl SpanMap { [INFO] [stderr] 123 | | pub fn new() -> SpanMap { [INFO] [stderr] 124 | | SpanMap { roots: HashMap::new(), size: 0 } [INFO] [stderr] 125 | | } [INFO] [stderr] ... | [INFO] [stderr] 205 | | } [INFO] [stderr] 206 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `spanmap::SpanMap` [INFO] [stderr] --> src/spanmap.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn new() -> SpanMap { [INFO] [stderr] 124 | | SpanMap { roots: HashMap::new(), size: 0 } [INFO] [stderr] 125 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 13 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | / pub fn iter<'a>(&'a self) -> SpannedValues<'a, V> { [INFO] [stderr] 172 | | SpannedValues::from(self.roots.iter()) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:175:5 [INFO] [stderr] | [INFO] [stderr] 175 | / pub fn contains<'a>(&'a self, pos: Pos) -> Contains<'a, V> { [INFO] [stderr] 176 | | let unit = pos.unit(); [INFO] [stderr] 177 | | if let Some(root) = self.roots.get(&unit) { [INFO] [stderr] 178 | | let pos = pos.to_usize() as u32; [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:185:5 [INFO] [stderr] | [INFO] [stderr] 185 | / pub fn overlaps<'a>(&'a self, span: Span) -> Overlaps<'a, V> { [INFO] [stderr] 186 | | let unit = span.unit(); [INFO] [stderr] 187 | | if let Some(root) = self.roots.get(&unit) { [INFO] [stderr] 188 | | let begin = span.begin().to_usize() as u32; [INFO] [stderr] ... | [INFO] [stderr] 193 | | } [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_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / pub fn adjacencies<'a>(&'a self, span: Span) -> Adjacencies<'a, V> { [INFO] [stderr] 197 | | let unit = span.unit(); [INFO] [stderr] 198 | | if let Some(root) = self.roots.get(&unit) { [INFO] [stderr] 199 | | let begin = span.begin().to_usize() as u32; [INFO] [stderr] ... | [INFO] [stderr] 204 | | } [INFO] [stderr] 205 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/spanmap.rs:245:13 [INFO] [stderr] | [INFO] [stderr] 245 | / while let Some(n) = self.stack.pop() { [INFO] [stderr] 246 | | if let Some(ref left) = n.left { [INFO] [stderr] 247 | | self.stack.push(left); [INFO] [stderr] 248 | | } [INFO] [stderr] ... | [INFO] [stderr] 254 | | }); [INFO] [stderr] 255 | | } [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `kailua_env`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn is_dummy(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:40:32 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn is_source_dependent(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn to_usize(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:94:21 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn is_dummy(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:98:32 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn is_source_dependent(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:102:17 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn unit(&self) -> Unit { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/loc.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn to_usize(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: item `loc::Span` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/loc.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / impl Span { [INFO] [stderr] 153 | | pub fn new(begin: Pos, end: Pos) -> Span { [INFO] [stderr] 154 | | if begin.is_dummy() || end.is_dummy() { [INFO] [stderr] 155 | | Span::dummy() [INFO] [stderr] ... | [INFO] [stderr] 230 | | } [INFO] [stderr] 231 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/scope.rs:26:21 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn to_usize(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider adding a `Default` implementation for `scope::ScopeMap` [INFO] [stderr] --> src/scope.rs:223:5 [INFO] [stderr] | [INFO] [stderr] 223 | / pub fn new() -> ScopeMap { [INFO] [stderr] 224 | | ScopeMap { [INFO] [stderr] 225 | | scopes: vec![ScopeItem::new(0)], [INFO] [stderr] 226 | | names: HashMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | } [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] 222 | impl Default for scope::ScopeMap { [INFO] [stderr] 223 | fn default() -> Self { [INFO] [stderr] 224 | Self::new() [INFO] [stderr] 225 | } [INFO] [stderr] 226 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/scope.rs:258:53 [INFO] [stderr] | [INFO] [stderr] 258 | let scopes = self.names.entry(name.clone()).or_insert(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:284:5 [INFO] [stderr] | [INFO] [stderr] 284 | / pub fn all_scopes<'a>(&'a self) -> AllScopes<'a, Name> { [INFO] [stderr] 285 | | AllScopes { scopes: &self.scopes, range: 1..(self.scopes.len() as u32) } [INFO] [stderr] 286 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:288:5 [INFO] [stderr] | [INFO] [stderr] 288 | / pub fn ancestor_scopes<'a>(&'a self, scope: Scope) -> AncestorScopes<'a, Name> { [INFO] [stderr] 289 | | assert!((scope.scope as usize) < self.scopes.len()); [INFO] [stderr] 290 | | AncestorScopes { scopes: &self.scopes, current: scope.scope, done: false } [INFO] [stderr] 291 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:293:5 [INFO] [stderr] | [INFO] [stderr] 293 | / pub fn names<'a>(&'a self, scope: Scope) -> Names<'a, Name> { [INFO] [stderr] 294 | | assert!((scope.scope as usize) < self.scopes.len()); [INFO] [stderr] 295 | | let iter = self.scopes[scope.scope as usize].names.iter(); [INFO] [stderr] 296 | | Names { iter: iter } [INFO] [stderr] 297 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | / pub fn names_and_scopes<'a>(&'a self, scope: Scope) -> NamesAndScopes<'a, Name> { [INFO] [stderr] 302 | | assert!((scope.scope as usize) < self.scopes.len()); [INFO] [stderr] 303 | | let iter = self.scopes[scope.scope as usize].names.iter(); [INFO] [stderr] 304 | | NamesAndScopes { scopes: &self.scopes, current: scope.scope, iter: Some(iter) } [INFO] [stderr] 305 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/scope.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | / pub fn find_id_with_index<'a>(&'a self, id: usize) -> Option<(&'a Name, Scope)> { [INFO] [stderr] 312 | | if id < self.ids.len() { [INFO] [stderr] 313 | | let (ref name, scope) = self.ids[id]; [INFO] [stderr] 314 | | Some((name, scope)) [INFO] [stderr] ... | [INFO] [stderr] 317 | | } [INFO] [stderr] 318 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/scope.rs:393:1 [INFO] [stderr] | [INFO] [stderr] 393 | / fn test_scope_map_span() { [INFO] [stderr] 394 | | use loc::{unit_from_u32, pos_from_u32, span_from_u32, WithLoc}; [INFO] [stderr] 395 | | [INFO] [stderr] 396 | | let unit1 = unit_from_u32(1); [INFO] [stderr] ... | [INFO] [stderr] 457 | | assert_eq!(m.scope_from_pos(pos_from_u32(unit2, 30)), Some(c)); [INFO] [stderr] 458 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/source.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / let begin; [INFO] [stderr] 96 | | if data.starts_with(bom) { [INFO] [stderr] 97 | | data = &data[bom.len()..]; [INFO] [stderr] 98 | | begin = bom.len() as u32; [INFO] [stderr] 99 | | } else { [INFO] [stderr] 100 | | begin = 0; [INFO] [stderr] 101 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let begin = if data.starts_with(bom) { ..; bom.len() as u32 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [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/source.rs:177:5 [INFO] [stderr] | [INFO] [stderr] 177 | / pub fn data<'a>(&'a self) -> SourceSlice<'a> { [INFO] [stderr] 178 | | match self.buf { [INFO] [stderr] 179 | | SourceBuf::U8(ref data) => SourceSlice::U8(data), [INFO] [stderr] 180 | | SourceBuf::U16(ref data) => SourceSlice::U16(data), [INFO] [stderr] 181 | | } [INFO] [stderr] 182 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> src/source.rs:232:1 [INFO] [stderr] | [INFO] [stderr] 232 | / fn test_source_file() { [INFO] [stderr] 233 | | macro_rules! assert_eq_alt { [INFO] [stderr] 234 | | ($lhs:expr, $rhs:expr) => ({ [INFO] [stderr] 235 | | let lhs = $lhs; [INFO] [stderr] ... | [INFO] [stderr] 329 | | vec![mk_span(0, 3), mk_span(3, 4)]); [INFO] [stderr] 330 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/source.rs:274:51 [INFO] [stderr] | [INFO] [stderr] 274 | let mut f = SourceFile::from_u8("foo".into(), SOURCE.iter().cloned().collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: item `source::SourceSlice<'a>` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/source.rs:347:1 [INFO] [stderr] | [INFO] [stderr] 347 | / impl<'a> SourceSlice<'a> { [INFO] [stderr] 348 | | pub fn len(&self) -> usize { [INFO] [stderr] 349 | | match *self { [INFO] [stderr] 350 | | SourceSlice::U8(s) => s.len(), [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/source.rs:374:15 [INFO] [stderr] | [INFO] [stderr] 374 | pub fn u8(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/source.rs:381:16 [INFO] [stderr] | [INFO] [stderr] 381 | pub fn u16(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider deriving a `Default` implementation for `source::Source` [INFO] [stderr] --> src/source.rs:442:5 [INFO] [stderr] | [INFO] [stderr] 442 | / pub fn new() -> Source { [INFO] [stderr] 443 | | Source { files: HashMap::new(), next_unit: 1 } [INFO] [stderr] 444 | | } [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] 436 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source.rs:471:5 [INFO] [stderr] | [INFO] [stderr] 471 | / pub fn file<'a>(&'a self, unit: Unit) -> Option<&'a SourceFile> { [INFO] [stderr] 472 | | self.files.get(&unit) [INFO] [stderr] 473 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source.rs:479:5 [INFO] [stderr] | [INFO] [stderr] 479 | / pub fn slice_from_span<'a>(&'a self, span: Span) -> Option> { [INFO] [stderr] 480 | | if let Some(file) = self.files.get(&span.unit()) { [INFO] [stderr] 481 | | let range = span.begin().to_usize()..span.end().to_usize(); [INFO] [stderr] 482 | | match file.buf { [INFO] [stderr] ... | [INFO] [stderr] 488 | | } [INFO] [stderr] 489 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/spanmap.rs:59:21 [INFO] [stderr] | [INFO] [stderr] 59 | skew += n.height as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(n.height)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/spanmap.rs:62:21 [INFO] [stderr] | [INFO] [stderr] 62 | skew -= n.height as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(n.height)` [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: item `spanmap::SpanMap` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/spanmap.rs:122:1 [INFO] [stderr] | [INFO] [stderr] 122 | / impl SpanMap { [INFO] [stderr] 123 | | pub fn new() -> SpanMap { [INFO] [stderr] 124 | | SpanMap { roots: HashMap::new(), size: 0 } [INFO] [stderr] 125 | | } [INFO] [stderr] ... | [INFO] [stderr] 205 | | } [INFO] [stderr] 206 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `spanmap::SpanMap` [INFO] [stderr] --> src/spanmap.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn new() -> SpanMap { [INFO] [stderr] 124 | | SpanMap { roots: HashMap::new(), size: 0 } [INFO] [stderr] 125 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 13 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | / pub fn iter<'a>(&'a self) -> SpannedValues<'a, V> { [INFO] [stderr] 172 | | SpannedValues::from(self.roots.iter()) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:175:5 [INFO] [stderr] | [INFO] [stderr] 175 | / pub fn contains<'a>(&'a self, pos: Pos) -> Contains<'a, V> { [INFO] [stderr] 176 | | let unit = pos.unit(); [INFO] [stderr] 177 | | if let Some(root) = self.roots.get(&unit) { [INFO] [stderr] 178 | | let pos = pos.to_usize() as u32; [INFO] [stderr] ... | [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:185:5 [INFO] [stderr] | [INFO] [stderr] 185 | / pub fn overlaps<'a>(&'a self, span: Span) -> Overlaps<'a, V> { [INFO] [stderr] 186 | | let unit = span.unit(); [INFO] [stderr] 187 | | if let Some(root) = self.roots.get(&unit) { [INFO] [stderr] 188 | | let begin = span.begin().to_usize() as u32; [INFO] [stderr] ... | [INFO] [stderr] 193 | | } [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_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/spanmap.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / pub fn adjacencies<'a>(&'a self, span: Span) -> Adjacencies<'a, V> { [INFO] [stderr] 197 | | let unit = span.unit(); [INFO] [stderr] 198 | | if let Some(root) = self.roots.get(&unit) { [INFO] [stderr] 199 | | let begin = span.begin().to_usize() as u32; [INFO] [stderr] ... | [INFO] [stderr] 204 | | } [INFO] [stderr] 205 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/spanmap.rs:245:13 [INFO] [stderr] | [INFO] [stderr] 245 | / while let Some(n) = self.stack.pop() { [INFO] [stderr] 246 | | if let Some(ref left) = n.left { [INFO] [stderr] 247 | | self.stack.push(left); [INFO] [stderr] 248 | | } [INFO] [stderr] ... | [INFO] [stderr] 254 | | }); [INFO] [stderr] 255 | | } [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: the function has a cyclomatic complexity of 73 [INFO] [stderr] --> src/spanmap.rs:361:1 [INFO] [stderr] | [INFO] [stderr] 361 | / fn test_spanmap() { [INFO] [stderr] 362 | | use loc::{unit_from_u32, pos_from_u32, span_from_u32, WithLoc}; [INFO] [stderr] 363 | | [INFO] [stderr] 364 | | let unit = unit_from_u32(1); [INFO] [stderr] ... | [INFO] [stderr] 502 | | assert_eq!(map.len(), 12); [INFO] [stderr] 503 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `kailua_env`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "0ac06a485ea84b58a36f01581214e6788515b9d9e46d35617edad4ebb142846b"` [INFO] running `"docker" "rm" "-f" "0ac06a485ea84b58a36f01581214e6788515b9d9e46d35617edad4ebb142846b"` [INFO] [stdout] 0ac06a485ea84b58a36f01581214e6788515b9d9e46d35617edad4ebb142846b