[INFO] cloning repository https://github.com/loafoflead/sili [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/loafoflead/sili" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floafoflead%2Fsili", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floafoflead%2Fsili'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2d51a1db63ac95c2be67cd42cdd3e78ed1dcbe8c [INFO] testing loafoflead/sili against master#414482f6a0d4e7290f614300581a0b55442552a3 for pr-140985 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Floafoflead%2Fsili" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/loafoflead/sili on toolchain 414482f6a0d4e7290f614300581a0b55442552a3 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/loafoflead/sili [INFO] finished tweaking git repo https://github.com/loafoflead/sili [INFO] tweaked toml for git repo https://github.com/loafoflead/sili written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/loafoflead/sili already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ff2375534fc73de59b4a0ddb9f02b50df3a2d089e2f3d996746bcf7c0d9deb1c [INFO] running `Command { std: "docker" "start" "-a" "ff2375534fc73de59b4a0ddb9f02b50df3a2d089e2f3d996746bcf7c0d9deb1c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ff2375534fc73de59b4a0ddb9f02b50df3a2d089e2f3d996746bcf7c0d9deb1c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ff2375534fc73de59b4a0ddb9f02b50df3a2d089e2f3d996746bcf7c0d9deb1c", kill_on_drop: false }` [INFO] [stdout] ff2375534fc73de59b4a0ddb9f02b50df3a2d089e2f3d996746bcf7c0d9deb1c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 005ad6a5899130b02510058198c6f9fae55b4527def50873eb53d45ac300cbd2 [INFO] running `Command { std: "docker" "start" "-a" "005ad6a5899130b02510058198c6f9fae55b4527def50873eb53d45ac300cbd2", kill_on_drop: false }` [INFO] [stderr] Compiling greebling v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `obj` [INFO] [stdout] --> src/syn.rs:357:23 [INFO] [stdout] | [INFO] [stdout] 357 | Type::Object(obj) => todo!("format obj"), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_obj` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/syn.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | let mut next = tokens.next()?; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `to` [INFO] [stdout] --> src/type_check.rs:83:33 [INFO] [stdout] | [INFO] [stdout] 83 | for StatementLoc { stmt, from, to } in stmts.iter() { [INFO] [stdout] | ^^ help: try ignoring the field: `to: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/type_check.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | let FuncSignature { ret, args } = &signature; [INFO] [stdout] | ^^^^ help: try ignoring the field: `args: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `to` [INFO] [stdout] --> src/type_check.rs:128:33 [INFO] [stdout] | [INFO] [stdout] 128 | for StatementLoc { stmt, from, to } in stmts.iter() { [INFO] [stdout] | ^^ help: try ignoring the field: `to: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:130:33 [INFO] [stdout] | [INFO] [stdout] 130 | Statement::TypeDeclaration { ident, ty } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `en` [INFO] [stdout] --> src/type_check.rs:135:19 [INFO] [stdout] | [INFO] [stdout] 135 | Object::Enum(en) => todo!("??? should simple enums need variant type checks?"), [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_en` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:138:37 [INFO] [stdout] | [INFO] [stdout] 138 | Statement::FunctionDeclaration { ident, function } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ret` [INFO] [stdout] --> src/type_check.rs:140:25 [INFO] [stdout] | [INFO] [stdout] 140 | let FuncSignature { ret, args } = &signature; [INFO] [stdout] | ^^^ help: try ignoring the field: `ret: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lhs` [INFO] [stdout] --> src/type_check.rs:149:36 [INFO] [stdout] | [INFO] [stdout] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stdout] | ^^^ help: try ignoring the field: `lhs: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rhs` [INFO] [stdout] --> src/type_check.rs:149:45 [INFO] [stdout] | [INFO] [stdout] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stdout] | ^^^ help: try ignoring the field: `rhs: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `kind` [INFO] [stdout] --> src/type_check.rs:149:50 [INFO] [stdout] | [INFO] [stdout] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `kind: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/type_check.rs:157:28 [INFO] [stdout] | [INFO] [stdout] 157 | else if let Type::Path(path) = ty { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/type_check.rs:176:26 [INFO] [stdout] | [INFO] [stdout] 176 | else if let Type::Path(path) = &field.ty { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:244:25 [INFO] [stdout] | [INFO] [stdout] 244 | Some(Type::Identifier(ident)) => todo!("Parse type from identifier"), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/type_check.rs:245:19 [INFO] [stdout] | [INFO] [stdout] 245 | Some(Type::Path(path)) => todo!("Parse type from path"), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stmts` [INFO] [stdout] --> src/type_check.rs:220:22 [INFO] [stdout] | [INFO] [stdout] 220 | Expr::Block(Block(stmts)) => todo!("find return type of block"), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:235:30 [INFO] [stdout] | [INFO] [stdout] 235 | Expr::FuncCall(FuncCall { ident, passed }) => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `passed` [INFO] [stdout] --> src/type_check.rs:235:37 [INFO] [stdout] | [INFO] [stdout] 235 | Expr::FuncCall(FuncCall { ident, passed }) => { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `passed: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ty` [INFO] [stdout] --> src/type_check.rs:268:16 [INFO] [stdout] | [INFO] [stdout] 268 | if let Some(ty) = state.get_type_above(ident, scope) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:272:14 [INFO] [stdout] | [INFO] [stdout] 272 | Type::Path(ident) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/tokeniser.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 22 | ExpectedTokenType(Vec, TokenType), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 23 | ExpectedPunct(char), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 24 | EmptyTokens, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 25 | CannotParse(Vec), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 26 | CannotParseTypeFrom(TokenType), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | CouldNotFindSequence(Vec), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 28 | // ExpectedLiteralOfType(Type, TokenType), [INFO] [stdout] 29 | UnwantedToken(TokenType), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 30 | UnexpectedKeyword(String, Vec), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `at` and `loc_unknown` are never used [INFO] [stdout] --> src/tokeniser.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 33 | impl ParseError { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 34 | fn at(self, loc: Location) -> ParseErrorLoc { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn loc_unknown(self) -> ParseErrorLoc { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `ParseResult` is never used [INFO] [stdout] --> src/tokeniser.rs:65:6 [INFO] [stdout] | [INFO] [stdout] 65 | type ParseResult = Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `TokenOps` is never used [INFO] [stdout] --> src/tokeniser.rs:434:7 [INFO] [stdout] | [INFO] [stdout] 434 | trait TokenOps<'a> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScopedIdent` is never constructed [INFO] [stdout] --> src/type_check.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | struct ScopedIdent { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new_in` is never used [INFO] [stdout] --> src/type_check.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | impl ScopedIdent { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 13 | fn new_in(ident: Ident, scope: usize) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_assignments` is never used [INFO] [stdout] --> src/type_check.rs:183:4 [INFO] [stdout] | [INFO] [stdout] 183 | fn check_assignments(state: &mut TypeState, stmts: &[StatementLoc]) -> Option<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.24s [INFO] running `Command { std: "docker" "inspect" "005ad6a5899130b02510058198c6f9fae55b4527def50873eb53d45ac300cbd2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "005ad6a5899130b02510058198c6f9fae55b4527def50873eb53d45ac300cbd2", kill_on_drop: false }` [INFO] [stdout] 005ad6a5899130b02510058198c6f9fae55b4527def50873eb53d45ac300cbd2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8e4de5a0f53e36b9e34cd42cccfa992f616a9c00ed2ca7378c0e1038a8e2b57d [INFO] running `Command { std: "docker" "start" "-a" "8e4de5a0f53e36b9e34cd42cccfa992f616a9c00ed2ca7378c0e1038a8e2b57d", kill_on_drop: false }` [INFO] [stderr] Compiling greebling v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `obj` [INFO] [stdout] --> src/syn.rs:357:23 [INFO] [stdout] | [INFO] [stdout] 357 | Type::Object(obj) => todo!("format obj"), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_obj` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/syn.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | let mut next = tokens.next()?; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `to` [INFO] [stdout] --> src/type_check.rs:83:33 [INFO] [stdout] | [INFO] [stdout] 83 | for StatementLoc { stmt, from, to } in stmts.iter() { [INFO] [stdout] | ^^ help: try ignoring the field: `to: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/type_check.rs:90:30 [INFO] [stdout] | [INFO] [stdout] 90 | let FuncSignature { ret, args } = &signature; [INFO] [stdout] | ^^^^ help: try ignoring the field: `args: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `to` [INFO] [stdout] --> src/type_check.rs:128:33 [INFO] [stdout] | [INFO] [stdout] 128 | for StatementLoc { stmt, from, to } in stmts.iter() { [INFO] [stdout] | ^^ help: try ignoring the field: `to: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:130:33 [INFO] [stdout] | [INFO] [stdout] 130 | Statement::TypeDeclaration { ident, ty } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `en` [INFO] [stdout] --> src/type_check.rs:135:19 [INFO] [stdout] | [INFO] [stdout] 135 | Object::Enum(en) => todo!("??? should simple enums need variant type checks?"), [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_en` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:138:37 [INFO] [stdout] | [INFO] [stdout] 138 | Statement::FunctionDeclaration { ident, function } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ret` [INFO] [stdout] --> src/type_check.rs:140:25 [INFO] [stdout] | [INFO] [stdout] 140 | let FuncSignature { ret, args } = &signature; [INFO] [stdout] | ^^^ help: try ignoring the field: `ret: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lhs` [INFO] [stdout] --> src/type_check.rs:149:36 [INFO] [stdout] | [INFO] [stdout] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stdout] | ^^^ help: try ignoring the field: `lhs: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rhs` [INFO] [stdout] --> src/type_check.rs:149:45 [INFO] [stdout] | [INFO] [stdout] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stdout] | ^^^ help: try ignoring the field: `rhs: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `kind` [INFO] [stdout] --> src/type_check.rs:149:50 [INFO] [stdout] | [INFO] [stdout] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `kind: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/type_check.rs:157:28 [INFO] [stdout] | [INFO] [stdout] 157 | else if let Type::Path(path) = ty { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/type_check.rs:176:26 [INFO] [stdout] | [INFO] [stdout] 176 | else if let Type::Path(path) = &field.ty { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:244:25 [INFO] [stdout] | [INFO] [stdout] 244 | Some(Type::Identifier(ident)) => todo!("Parse type from identifier"), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/type_check.rs:245:19 [INFO] [stdout] | [INFO] [stdout] 245 | Some(Type::Path(path)) => todo!("Parse type from path"), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stmts` [INFO] [stdout] --> src/type_check.rs:220:22 [INFO] [stdout] | [INFO] [stdout] 220 | Expr::Block(Block(stmts)) => todo!("find return type of block"), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:235:30 [INFO] [stdout] | [INFO] [stdout] 235 | Expr::FuncCall(FuncCall { ident, passed }) => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `passed` [INFO] [stdout] --> src/type_check.rs:235:37 [INFO] [stdout] | [INFO] [stdout] 235 | Expr::FuncCall(FuncCall { ident, passed }) => { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `passed: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ty` [INFO] [stdout] --> src/type_check.rs:268:16 [INFO] [stdout] | [INFO] [stdout] 268 | if let Some(ty) = state.get_type_above(ident, scope) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ident` [INFO] [stdout] --> src/type_check.rs:272:14 [INFO] [stdout] | [INFO] [stdout] 272 | Type::Path(ident) => { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/tokeniser.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 21 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 22 | ExpectedTokenType(Vec, TokenType), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 23 | ExpectedPunct(char), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 24 | EmptyTokens, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 25 | CannotParse(Vec), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 26 | CannotParseTypeFrom(TokenType), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | CouldNotFindSequence(Vec), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 28 | // ExpectedLiteralOfType(Type, TokenType), [INFO] [stdout] 29 | UnwantedToken(TokenType), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 30 | UnexpectedKeyword(String, Vec), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `at` and `loc_unknown` are never used [INFO] [stdout] --> src/tokeniser.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 33 | impl ParseError { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 34 | fn at(self, loc: Location) -> ParseErrorLoc { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn loc_unknown(self) -> ParseErrorLoc { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `ParseResult` is never used [INFO] [stdout] --> src/tokeniser.rs:65:6 [INFO] [stdout] | [INFO] [stdout] 65 | type ParseResult = Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `TokenOps` is never used [INFO] [stdout] --> src/tokeniser.rs:434:7 [INFO] [stdout] | [INFO] [stdout] 434 | trait TokenOps<'a> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ScopedIdent` is never constructed [INFO] [stdout] --> src/type_check.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | struct ScopedIdent { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new_in` is never used [INFO] [stdout] --> src/type_check.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | impl ScopedIdent { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 13 | fn new_in(ident: Ident, scope: usize) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_assignments` is never used [INFO] [stdout] --> src/type_check.rs:183:4 [INFO] [stdout] | [INFO] [stdout] 183 | fn check_assignments(state: &mut TypeState, stmts: &[StatementLoc]) -> Option<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.37s [INFO] running `Command { std: "docker" "inspect" "8e4de5a0f53e36b9e34cd42cccfa992f616a9c00ed2ca7378c0e1038a8e2b57d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8e4de5a0f53e36b9e34cd42cccfa992f616a9c00ed2ca7378c0e1038a8e2b57d", kill_on_drop: false }` [INFO] [stdout] 8e4de5a0f53e36b9e34cd42cccfa992f616a9c00ed2ca7378c0e1038a8e2b57d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] ec13f1165eac254c30e367526444ad1f325c136b2c437d1828714b600736285b [INFO] running `Command { std: "docker" "start" "-a" "ec13f1165eac254c30e367526444ad1f325c136b2c437d1828714b600736285b", kill_on_drop: false }` [INFO] [stderr] warning: unused variable: `obj` [INFO] [stderr] --> src/syn.rs:357:23 [INFO] [stderr] | [INFO] [stderr] 357 | Type::Object(obj) => todo!("format obj"), [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_obj` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/syn.rs:509:8 [INFO] [stderr] | [INFO] [stderr] 509 | let mut next = tokens.next()?; [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `to` [INFO] [stderr] --> src/type_check.rs:83:33 [INFO] [stderr] | [INFO] [stderr] 83 | for StatementLoc { stmt, from, to } in stmts.iter() { [INFO] [stderr] | ^^ help: try ignoring the field: `to: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `args` [INFO] [stderr] --> src/type_check.rs:90:30 [INFO] [stderr] | [INFO] [stderr] 90 | let FuncSignature { ret, args } = &signature; [INFO] [stderr] | ^^^^ help: try ignoring the field: `args: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `to` [INFO] [stderr] --> src/type_check.rs:128:33 [INFO] [stderr] | [INFO] [stderr] 128 | for StatementLoc { stmt, from, to } in stmts.iter() { [INFO] [stderr] | ^^ help: try ignoring the field: `to: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ident` [INFO] [stderr] --> src/type_check.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | Statement::TypeDeclaration { ident, ty } => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `en` [INFO] [stderr] --> src/type_check.rs:135:19 [INFO] [stderr] | [INFO] [stderr] 135 | Object::Enum(en) => todo!("??? should simple enums need variant type checks?"), [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_en` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ident` [INFO] [stderr] --> src/type_check.rs:138:37 [INFO] [stderr] | [INFO] [stderr] 138 | Statement::FunctionDeclaration { ident, function } => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ret` [INFO] [stderr] --> src/type_check.rs:140:25 [INFO] [stderr] | [INFO] [stderr] 140 | let FuncSignature { ret, args } = &signature; [INFO] [stderr] | ^^^ help: try ignoring the field: `ret: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `lhs` [INFO] [stderr] --> src/type_check.rs:149:36 [INFO] [stderr] | [INFO] [stderr] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stderr] | ^^^ help: try ignoring the field: `lhs: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rhs` [INFO] [stderr] --> src/type_check.rs:149:45 [INFO] [stderr] | [INFO] [stderr] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stderr] | ^^^ help: try ignoring the field: `rhs: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `kind` [INFO] [stderr] --> src/type_check.rs:149:50 [INFO] [stderr] | [INFO] [stderr] 149 | Statement::Assignment( Assign { lhs, ty, rhs, kind } ) => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `kind: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `path` [INFO] [stderr] --> src/type_check.rs:157:28 [INFO] [stderr] | [INFO] [stderr] 157 | else if let Type::Path(path) = ty { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `path` [INFO] [stderr] --> src/type_check.rs:176:26 [INFO] [stderr] | [INFO] [stderr] 176 | else if let Type::Path(path) = &field.ty { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ident` [INFO] [stderr] --> src/type_check.rs:244:25 [INFO] [stderr] | [INFO] [stderr] 244 | Some(Type::Identifier(ident)) => todo!("Parse type from identifier"), [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `path` [INFO] [stderr] --> src/type_check.rs:245:19 [INFO] [stderr] | [INFO] [stderr] 245 | Some(Type::Path(path)) => todo!("Parse type from path"), [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stmts` [INFO] [stderr] --> src/type_check.rs:220:22 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Block(Block(stmts)) => todo!("find return type of block"), [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ident` [INFO] [stderr] --> src/type_check.rs:235:30 [INFO] [stderr] | [INFO] [stderr] 235 | Expr::FuncCall(FuncCall { ident, passed }) => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `ident: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `passed` [INFO] [stderr] --> src/type_check.rs:235:37 [INFO] [stderr] | [INFO] [stderr] 235 | Expr::FuncCall(FuncCall { ident, passed }) => { [INFO] [stderr] | ^^^^^^ help: try ignoring the field: `passed: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ty` [INFO] [stderr] --> src/type_check.rs:268:16 [INFO] [stderr] | [INFO] [stderr] 268 | if let Some(ty) = state.get_type_above(ident, scope) { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_ty` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ident` [INFO] [stderr] --> src/type_check.rs:272:14 [INFO] [stderr] | [INFO] [stderr] 272 | Type::Path(ident) => { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_ident` [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/tokeniser.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 21 | pub enum ParseError { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 22 | ExpectedTokenType(Vec, TokenType), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] 23 | ExpectedPunct(char), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 24 | EmptyTokens, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 25 | CannotParse(Vec), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 26 | CannotParseTypeFrom(TokenType), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 27 | CouldNotFindSequence(Vec), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 28 | // ExpectedLiteralOfType(Type, TokenType), [INFO] [stderr] 29 | UnwantedToken(TokenType), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 30 | UnexpectedKeyword(String, Vec), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: methods `at` and `loc_unknown` are never used [INFO] [stderr] --> src/tokeniser.rs:34:8 [INFO] [stderr] | [INFO] [stderr] 33 | impl ParseError { [INFO] [stderr] | --------------- methods in this implementation [INFO] [stderr] 34 | fn at(self, loc: Location) -> ParseErrorLoc { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 41 | fn loc_unknown(self) -> ParseErrorLoc { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `ParseResult` is never used [INFO] [stderr] --> src/tokeniser.rs:65:6 [INFO] [stderr] | [INFO] [stderr] 65 | type ParseResult = Result; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `TokenOps` is never used [INFO] [stderr] --> src/tokeniser.rs:434:7 [INFO] [stderr] | [INFO] [stderr] 434 | trait TokenOps<'a> { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ScopedIdent` is never constructed [INFO] [stderr] --> src/type_check.rs:6:8 [INFO] [stderr] | [INFO] [stderr] 6 | struct ScopedIdent { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new_in` is never used [INFO] [stderr] --> src/type_check.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 12 | impl ScopedIdent { [INFO] [stderr] | ---------------- associated function in this implementation [INFO] [stderr] 13 | fn new_in(ident: Ident, scope: usize) -> Self { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `check_assignments` is never used [INFO] [stderr] --> src/type_check.rs:183:4 [INFO] [stderr] | [INFO] [stderr] 183 | fn check_assignments(state: &mut TypeState, stmts: &[StatementLoc]) -> Option<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `greebling` (bin "greebling" test) generated 28 warnings (run `cargo fix --bin "greebling" --tests` to apply 1 suggestion) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/greebling-7b418a7e28d5bdc6) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test function_arguments_and_fields ... ok [INFO] [stdout] test basic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "ec13f1165eac254c30e367526444ad1f325c136b2c437d1828714b600736285b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ec13f1165eac254c30e367526444ad1f325c136b2c437d1828714b600736285b", kill_on_drop: false }` [INFO] [stdout] ec13f1165eac254c30e367526444ad1f325c136b2c437d1828714b600736285b