[INFO] cloning repository https://github.com/whiteand/protos-ts
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/whiteand/protos-ts" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwhiteand%2Fprotos-ts", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwhiteand%2Fprotos-ts'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7f137e4f6cf4377f9ad2f0b2803c23b100ffc9fd
[INFO] checking whiteand/protos-ts against master#5a45ab9738330fb317d49e3594c2db5248b1e971 for pr-136303
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwhiteand%2Fprotos-ts" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/whiteand/protos-ts on toolchain 5a45ab9738330fb317d49e3594c2db5248b1e971
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5a45ab9738330fb317d49e3594c2db5248b1e971" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/whiteand/protos-ts
[INFO] finished tweaking git repo https://github.com/whiteand/protos-ts
[INFO] tweaked toml for git repo https://github.com/whiteand/protos-ts written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/whiteand/protos-ts 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" "+5a45ab9738330fb317d49e3594c2db5248b1e971" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:c80049f3b88b82089a44e0f06d0d6029d44b96b7257e55a1cd63dbc9f4c33334" "/opt/rustwide/cargo-home/bin/cargo" "+5a45ab9738330fb317d49e3594c2db5248b1e971" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a958b8cf2245189cd8b04e1bd16cefe2db529700b9a88806625d5944eeaf30db
[INFO] running `Command { std: "docker" "start" "-a" "a958b8cf2245189cd8b04e1bd16cefe2db529700b9a88806625d5944eeaf30db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a958b8cf2245189cd8b04e1bd16cefe2db529700b9a88806625d5944eeaf30db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a958b8cf2245189cd8b04e1bd16cefe2db529700b9a88806625d5944eeaf30db", kill_on_drop: false }`
[INFO] [stdout] a958b8cf2245189cd8b04e1bd16cefe2db529700b9a88806625d5944eeaf30db
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:c80049f3b88b82089a44e0f06d0d6029d44b96b7257e55a1cd63dbc9f4c33334" "/opt/rustwide/cargo-home/bin/cargo" "+5a45ab9738330fb317d49e3594c2db5248b1e971" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 36f9870b88ed69d285fcd375b41d087b8b4b351901e0edb939b9022aa9123f15
[INFO] running `Command { std: "docker" "start" "-a" "36f9870b88ed69d285fcd375b41d087b8b4b351901e0edb939b9022aa9123f15", kill_on_drop: false }`
[INFO] [stderr]     Checking path-clean v0.1.0
[INFO] [stderr]     Checking protos-ts v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: methods `or` and `not` are never used
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:705:8
[INFO] [stdout]     |
[INFO] [stdout] 702 | pub(crate) trait ExpressionChain {
[INFO] [stdout]     |                  --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 705 |     fn or(&self, other: Rc<Expression>) -> Expression;
[INFO] [stdout]     |        ^^
[INFO] [stdout] 706 |     fn not(&self) -> Expression;
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WrapableExpr` is never used
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:709:18
[INFO] [stdout]     |
[INFO] [stdout] 709 | pub(crate) trait WrapableExpr {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SetParent` is never used
[INFO] [stdout]   --> proto/proto_scope/traits.rs:12:28
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(in crate::proto) trait SetParent {
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ParentScope` is never used
[INFO] [stdout]   --> proto/proto_scope/traits.rs:16:28
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(in crate::proto) trait ParentScope {
[INFO] [stdout]    |                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RegisterDeclaration` is never used
[INFO] [stdout]   --> proto/proto_scope/traits.rs:20:28
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(in crate::proto) trait RegisterDeclaration {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]   --> proto/compiler/ts/file_to_folder.rs:60:50
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let message_declaration = match message_scope.deref() {
[INFO] [stdout]    |                                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `ProtoScope` does not implement `Deref`, so calling `deref` on `&ProtoScope` copies the reference, which does not do anything and can be removed
[INFO] [stdout]    = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout] 60 -     let message_declaration = match message_scope.deref() {
[INFO] [stdout] 60 +     let message_declaration = match message_scope {
[INFO] [stdout]    |
[INFO] [stdout] help: if you meant to clone `ProtoScope`, implement `Clone` for it
[INFO] [stdout]   --> proto/proto_scope.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 + #[derive(Clone)]
[INFO] [stdout] 20 | pub(crate) enum ProtoScope {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:438:63
[INFO] [stdout]     |
[INFO] [stdout] 438 |             Expression::CallExpression(call_exrp) => call_exrp.deref().into(),
[INFO] [stdout]     |                                                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::CallExpression` does not implement `Deref`, so calling `deref` on `&ast::CallExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 438 -             Expression::CallExpression(call_exrp) => call_exrp.deref().into(),
[INFO] [stdout] 438 +             Expression::CallExpression(call_exrp) => call_exrp.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::CallExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:502:1
[INFO] [stdout]     |
[INFO] [stdout] 502 + #[derive(Clone)]
[INFO] [stdout] 503 | pub(crate) struct CallExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:457:36
[INFO] [stdout]     |
[INFO] [stdout] 457 |                 element_access_expr.deref().into()
[INFO] [stdout]     |                                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::ElementAccessExpression` does not implement `Deref`, so calling `deref` on `&ast::ElementAccessExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 457 -                 element_access_expr.deref().into()
[INFO] [stdout] 457 +                 element_access_expr.into()
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::ElementAccessExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:567:1
[INFO] [stdout]     |
[INFO] [stdout] 567 + #[derive(Clone)]
[INFO] [stdout] 568 | pub(crate) struct ElementAccessExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:459:72
[INFO] [stdout]     |
[INFO] [stdout] 459 |             Expression::PrefixUnaryExpression(unary_expr) => unary_expr.deref().into(),
[INFO] [stdout]     |                                                                        ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::PrefixUnaryExpression` does not implement `Deref`, so calling `deref` on `&ast::PrefixUnaryExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 459 -             Expression::PrefixUnaryExpression(unary_expr) => unary_expr.deref().into(),
[INFO] [stdout] 459 +             Expression::PrefixUnaryExpression(unary_expr) => unary_expr.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::PrefixUnaryExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:609:1
[INFO] [stdout]     |
[INFO] [stdout] 609 + #[derive(Clone)]
[INFO] [stdout] 610 | pub(crate) struct PrefixUnaryExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:460:60
[INFO] [stdout]     |
[INFO] [stdout] 460 |             Expression::ConditionalExpression(cond) => cond.deref().into(),
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::ConditionalExpression` does not implement `Deref`, so calling `deref` on `&ast::ConditionalExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 460 -             Expression::ConditionalExpression(cond) => cond.deref().into(),
[INFO] [stdout] 460 +             Expression::ConditionalExpression(cond) => cond.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::ConditionalExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:588:1
[INFO] [stdout]     |
[INFO] [stdout] 588 + #[derive(Clone)]
[INFO] [stdout] 589 | pub(crate) struct ConditionalExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:693:55
[INFO] [stdout]     |
[INFO] [stdout] 693 |             Statement::IfStatement(if_stmt) => if_stmt.deref().into(),
[INFO] [stdout]     |                                                       ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::IfStatement` does not implement `Deref`, so calling `deref` on `&ast::IfStatement` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 693 -             Statement::IfStatement(if_stmt) => if_stmt.deref().into(),
[INFO] [stdout] 693 +             Statement::IfStatement(if_stmt) => if_stmt.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::IfStatement`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:943:1
[INFO] [stdout]     |
[INFO] [stdout] 943 + #[derive(Clone)]
[INFO] [stdout] 944 | pub(crate) struct IfStatement {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:694:45
[INFO] [stdout]     |
[INFO] [stdout] 694 |             Statement::Block(block) => block.deref().into(),
[INFO] [stdout]     |                                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::Block` does not implement `Deref`, so calling `deref` on `&ast::Block` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 694 -             Statement::Block(block) => block.deref().into(),
[INFO] [stdout] 694 +             Statement::Block(block) => block.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::Block`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:950:1
[INFO] [stdout]     |
[INFO] [stdout] 950 + #[derive(Clone)]
[INFO] [stdout] 951 | pub(crate) struct Block {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.deref()` on a double reference, which returns `&str` instead of dereferencing the inner type
[INFO] [stdout]    --> proto/syntax.rs:833:51
[INFO] [stdout]     |
[INFO] [stdout] 833 |     let file_name = Rc::from(parts.last().unwrap().deref());
[INFO] [stdout]     |                                                   ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(suspicious_double_ref_op)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `or` and `not` are never used
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:705:8
[INFO] [stdout]     |
[INFO] [stdout] 702 | pub(crate) trait ExpressionChain {
[INFO] [stdout]     |                  --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 705 |     fn or(&self, other: Rc<Expression>) -> Expression;
[INFO] [stdout]     |        ^^
[INFO] [stdout] 706 |     fn not(&self) -> Expression;
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WrapableExpr` is never used
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:709:18
[INFO] [stdout]     |
[INFO] [stdout] 709 | pub(crate) trait WrapableExpr {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SetParent` is never used
[INFO] [stdout]   --> proto/proto_scope/traits.rs:12:28
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(in crate::proto) trait SetParent {
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ParentScope` is never used
[INFO] [stdout]   --> proto/proto_scope/traits.rs:16:28
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(in crate::proto) trait ParentScope {
[INFO] [stdout]    |                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RegisterDeclaration` is never used
[INFO] [stdout]   --> proto/proto_scope/traits.rs:20:28
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub(in crate::proto) trait RegisterDeclaration {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]   --> proto/compiler/ts/file_to_folder.rs:60:50
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let message_declaration = match message_scope.deref() {
[INFO] [stdout]    |                                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `ProtoScope` does not implement `Deref`, so calling `deref` on `&ProtoScope` copies the reference, which does not do anything and can be removed
[INFO] [stdout]    = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout] 60 -     let message_declaration = match message_scope.deref() {
[INFO] [stdout] 60 +     let message_declaration = match message_scope {
[INFO] [stdout]    |
[INFO] [stdout] help: if you meant to clone `ProtoScope`, implement `Clone` for it
[INFO] [stdout]   --> proto/proto_scope.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 + #[derive(Clone)]
[INFO] [stdout] 20 | pub(crate) enum ProtoScope {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:438:63
[INFO] [stdout]     |
[INFO] [stdout] 438 |             Expression::CallExpression(call_exrp) => call_exrp.deref().into(),
[INFO] [stdout]     |                                                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::CallExpression` does not implement `Deref`, so calling `deref` on `&ast::CallExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 438 -             Expression::CallExpression(call_exrp) => call_exrp.deref().into(),
[INFO] [stdout] 438 +             Expression::CallExpression(call_exrp) => call_exrp.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::CallExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:502:1
[INFO] [stdout]     |
[INFO] [stdout] 502 + #[derive(Clone)]
[INFO] [stdout] 503 | pub(crate) struct CallExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:457:36
[INFO] [stdout]     |
[INFO] [stdout] 457 |                 element_access_expr.deref().into()
[INFO] [stdout]     |                                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::ElementAccessExpression` does not implement `Deref`, so calling `deref` on `&ast::ElementAccessExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 457 -                 element_access_expr.deref().into()
[INFO] [stdout] 457 +                 element_access_expr.into()
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::ElementAccessExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:567:1
[INFO] [stdout]     |
[INFO] [stdout] 567 + #[derive(Clone)]
[INFO] [stdout] 568 | pub(crate) struct ElementAccessExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:459:72
[INFO] [stdout]     |
[INFO] [stdout] 459 |             Expression::PrefixUnaryExpression(unary_expr) => unary_expr.deref().into(),
[INFO] [stdout]     |                                                                        ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::PrefixUnaryExpression` does not implement `Deref`, so calling `deref` on `&ast::PrefixUnaryExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 459 -             Expression::PrefixUnaryExpression(unary_expr) => unary_expr.deref().into(),
[INFO] [stdout] 459 +             Expression::PrefixUnaryExpression(unary_expr) => unary_expr.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::PrefixUnaryExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:609:1
[INFO] [stdout]     |
[INFO] [stdout] 609 + #[derive(Clone)]
[INFO] [stdout] 610 | pub(crate) struct PrefixUnaryExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:460:60
[INFO] [stdout]     |
[INFO] [stdout] 460 |             Expression::ConditionalExpression(cond) => cond.deref().into(),
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::ConditionalExpression` does not implement `Deref`, so calling `deref` on `&ast::ConditionalExpression` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 460 -             Expression::ConditionalExpression(cond) => cond.deref().into(),
[INFO] [stdout] 460 +             Expression::ConditionalExpression(cond) => cond.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::ConditionalExpression`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:588:1
[INFO] [stdout]     |
[INFO] [stdout] 588 + #[derive(Clone)]
[INFO] [stdout] 589 | pub(crate) struct ConditionalExpression {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:693:55
[INFO] [stdout]     |
[INFO] [stdout] 693 |             Statement::IfStatement(if_stmt) => if_stmt.deref().into(),
[INFO] [stdout]     |                                                       ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::IfStatement` does not implement `Deref`, so calling `deref` on `&ast::IfStatement` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 693 -             Statement::IfStatement(if_stmt) => if_stmt.deref().into(),
[INFO] [stdout] 693 +             Statement::IfStatement(if_stmt) => if_stmt.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::IfStatement`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:943:1
[INFO] [stdout]     |
[INFO] [stdout] 943 + #[derive(Clone)]
[INFO] [stdout] 944 | pub(crate) struct IfStatement {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> proto/compiler/ts/render_file.rs:694:45
[INFO] [stdout]     |
[INFO] [stdout] 694 |             Statement::Block(block) => block.deref().into(),
[INFO] [stdout]     |                                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `ast::Block` does not implement `Deref`, so calling `deref` on `&ast::Block` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 694 -             Statement::Block(block) => block.deref().into(),
[INFO] [stdout] 694 +             Statement::Block(block) => block.into(),
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `ast::Block`, implement `Clone` for it
[INFO] [stdout]    --> proto/compiler/ts/ast.rs:950:1
[INFO] [stdout]     |
[INFO] [stdout] 950 + #[derive(Clone)]
[INFO] [stdout] 951 | pub(crate) struct Block {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.deref()` on a double reference, which returns `&str` instead of dereferencing the inner type
[INFO] [stdout]    --> proto/syntax.rs:833:51
[INFO] [stdout]     |
[INFO] [stdout] 833 |     let file_name = Rc::from(parts.last().unwrap().deref());
[INFO] [stdout]     |                                                   ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(suspicious_double_ref_op)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.17s
[INFO] running `Command { std: "docker" "inspect" "36f9870b88ed69d285fcd375b41d087b8b4b351901e0edb939b9022aa9123f15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "36f9870b88ed69d285fcd375b41d087b8b4b351901e0edb939b9022aa9123f15", kill_on_drop: false }`
[INFO] [stdout] 36f9870b88ed69d285fcd375b41d087b8b4b351901e0edb939b9022aa9123f15
