[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 try#9543f8ea2aae74b8f13ac2a6e6c0ecdca9810869 for pr-129249 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwhiteand%2Fprotos-ts" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/whiteand/protos-ts on toolchain 9543f8ea2aae74b8f13ac2a6e6c0ecdca9810869 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9543f8ea2aae74b8f13ac2a6e6c0ecdca9810869" "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-1-tc2/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" "+9543f8ea2aae74b8f13ac2a6e6c0ecdca9810869" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+9543f8ea2aae74b8f13ac2a6e6c0ecdca9810869" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] dc55e2917ad7036b1af77570e8c17ab5353c220f11dd0da95be8396ccc141df3 [INFO] running `Command { std: "docker" "start" "-a" "dc55e2917ad7036b1af77570e8c17ab5353c220f11dd0da95be8396ccc141df3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "dc55e2917ad7036b1af77570e8c17ab5353c220f11dd0da95be8396ccc141df3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dc55e2917ad7036b1af77570e8c17ab5353c220f11dd0da95be8396ccc141df3", kill_on_drop: false }` [INFO] [stdout] dc55e2917ad7036b1af77570e8c17ab5353c220f11dd0da95be8396ccc141df3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+9543f8ea2aae74b8f13ac2a6e6c0ecdca9810869" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f2b65849cd89daa602838a999027cec1eb385887294bf887996bc29bd178c19c [INFO] running `Command { std: "docker" "start" "-a" "f2b65849cd89daa602838a999027cec1eb385887294bf887996bc29bd178c19c", 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; [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] error: this conversion is useless `std::string::String` to `std::string::String` [INFO] [stdout] --> proto/error.rs:99:18 [INFO] [stdout] | [INFO] [stdout] 99 | message: format!("{}, but {} occurred", message.into(), lexem.lexem).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[deny(self_type_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:279:37 [INFO] [stdout] | [INFO] [stdout] 279 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 280 | | ... VariableDeclarationList::declare_const( [INFO] [stdout] 281 | | ... Rc::clone(&arr_end_id), [INFO] [stdout] 282 | | ... BinaryOperator::Plus.apply( [INFO] [stdout] ... | [INFO] [stdout] 291 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:395:29 [INFO] [stdout] | [INFO] [stdout] 395 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 396 | | ... VariableDeclarationList::declare_const( [INFO] [stdout] 397 | | ... Rc::clone(&map_entry_end_id), [INFO] [stdout] 398 | | ... BinaryOperator::Plus.apply( [INFO] [stdout] ... | [INFO] [stdout] 405 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Expression` to `ast::Expression` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:418:37 [INFO] [stdout] | [INFO] [stdout] 418 | ... kt.default_expression().into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:414:29 [INFO] [stdout] | [INFO] [stdout] 414 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 415 | | ... VariableDeclarationList::declare_typed_let( [INFO] [stdout] 416 | | ... Rc::clone(&key_id), [INFO] [stdout] 417 | | ... ast::Type::Any.into(), [INFO] [stdout] ... | [INFO] [stdout] 422 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Expression` to `ast::Expression` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:429:37 [INFO] [stdout] | [INFO] [stdout] 429 | ... value_type.default_expression().into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:425:29 [INFO] [stdout] | [INFO] [stdout] 425 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 426 | | ... VariableDeclarationList::declare_typed_let( [INFO] [stdout] 427 | | ... Rc::clone(&val_id), [INFO] [stdout] 428 | | ... ast::Type::Any.into(), [INFO] [stdout] ... | [INFO] [stdout] 433 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Type` to `ast::Type` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:68:25 [INFO] [stdout] | [INFO] [stdout] 68 | encode_func.returns(Type::reference(Rc::clone(&writer_type_id)).into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Expression` to `ast::Expression` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:76:13 [INFO] [stdout] | [INFO] [stdout] 76 | / ast::BinaryOperator::LogicalOr [INFO] [stdout] 77 | | .apply( [INFO] [stdout] 78 | | ast::Expression::from(Rc::clone(&writer_parameter_id)).into(), [INFO] [stdout] 79 | | Rc::new(ast::Expression::from(Rc::clone(&writer_type_id))) [INFO] [stdout] ... | [INFO] [stdout] 83 | | .into(), [INFO] [stdout] | |_______________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / ast::Statement::from(ast::VariableDeclarationList::declare_const( [INFO] [stdout] 75 | | Rc::clone(&writer_var), [INFO] [stdout] 76 | | ast::BinaryOperator::LogicalOr [INFO] [stdout] 77 | | .apply( [INFO] [stdout] ... | [INFO] [stdout] 84 | | )) [INFO] [stdout] 85 | | .into(), [INFO] [stdout] | |_______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:103:21 [INFO] [stdout] | [INFO] [stdout] 103 | / encode_enum_field( [INFO] [stdout] 104 | | &message_parameter_id, [INFO] [stdout] 105 | | &writer_var, [INFO] [stdout] 106 | | &js_name_id, [INFO] [stdout] ... | [INFO] [stdout] 110 | | .into(), [INFO] [stdout] | |___________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:186:25 [INFO] [stdout] | [INFO] [stdout] 186 | / encode_basic_repeated_type_field( [INFO] [stdout] 187 | | &field_value, [INFO] [stdout] 188 | | &package::Type::Int32, [INFO] [stdout] 189 | | field.tag, [INFO] [stdout] ... | [INFO] [stdout] 192 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:199:25 [INFO] [stdout] | [INFO] [stdout] 199 | / encode_basic_repeated_type_field( [INFO] [stdout] 200 | | &field_value, [INFO] [stdout] 201 | | basic, [INFO] [stdout] 202 | | field.tag, [INFO] [stdout] ... | [INFO] [stdout] 205 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:210:17 [INFO] [stdout] | [INFO] [stdout] 210 | / encode_map_field( [INFO] [stdout] 211 | | &root, [INFO] [stdout] 212 | | &message_scope, [INFO] [stdout] 213 | | &mut file, [INFO] [stdout] ... | [INFO] [stdout] 221 | | )? [INFO] [stdout] 222 | | .into(), [INFO] [stdout] | |_______________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:228:21 [INFO] [stdout] | [INFO] [stdout] 228 | / encode_basic_type_field( [INFO] [stdout] 229 | | &field_value, [INFO] [stdout] 230 | | &message_parameter_id, [INFO] [stdout] 231 | | &js_name_id, [INFO] [stdout] ... | [INFO] [stdout] 236 | | .into(), [INFO] [stdout] | |___________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:243:9 [INFO] [stdout] | [INFO] [stdout] 243 | / ast::Expression::from(writer_var) [INFO] [stdout] 244 | | .into_return_statement() [INFO] [stdout] 245 | | .into(), [INFO] [stdout] | |___________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `&str` to `&str` [INFO] [stdout] --> proto/compiler/ts/render_file.rs:36:44 [INFO] [stdout] | [INFO] [stdout] 36 | name: Some(Identifier::new("google".into())), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `Rc` to `Rc` [INFO] [stdout] --> proto/compiler/ts/types_compiler.rs:84:65 [INFO] [stdout] | [INFO] [stdout] 84 | let mut interface = ast::InterfaceDeclaration::new_exported(message_scope.name().into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:75:21 [INFO] [stdout] | [INFO] [stdout] 75 | / FieldDeclaration::new("null_value", FieldTypeReference::id("NullValue"), 1) [INFO] [stdout] 76 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:77:21 [INFO] [stdout] | [INFO] [stdout] 77 | FieldDeclaration::new("number_value", FieldTypeReference::Double, 2).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:78:21 [INFO] [stdout] | [INFO] [stdout] 78 | FieldDeclaration::new("string_value", FieldTypeReference::String, 3).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:79:21 [INFO] [stdout] | [INFO] [stdout] 79 | FieldDeclaration::new("bool_value", FieldTypeReference::Bool, 4).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:80:21 [INFO] [stdout] | [INFO] [stdout] 80 | / FieldDeclaration::new("struct_value", FieldTypeReference::id("Struct"), 5) [INFO] [stdout] 81 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | / FieldDeclaration::new("list_value", FieldTypeReference::id("ListValue"), 6) [INFO] [stdout] 83 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `proto::package::EnumEntry` to `proto::package::EnumEntry` [INFO] [stdout] --> proto/proto_scope/enum_scope.rs:39:17 [INFO] [stdout] | [INFO] [stdout] 39 | / EnumEntry { [INFO] [stdout] 40 | | name: "Hello".into(), [INFO] [stdout] 41 | | value: 0, [INFO] [stdout] 42 | | } [INFO] [stdout] 43 | | .into(), [INFO] [stdout] | |_______________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `proto::package::EnumEntry` to `proto::package::EnumEntry` [INFO] [stdout] --> proto/proto_scope/enum_scope.rs:44:17 [INFO] [stdout] | [INFO] [stdout] 44 | / EnumEntry { [INFO] [stdout] 45 | | name: "World".into(), [INFO] [stdout] 46 | | value: 1, [INFO] [stdout] 47 | | } [INFO] [stdout] 48 | | .into(), [INFO] [stdout] | |_______________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `PackageScope` to `PackageScope` [INFO] [stdout] --> proto/proto_scope.rs:74:29 [INFO] [stdout] | [INFO] [stdout] 74 | ProtoScope::Package(package.into()) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FileScope` to `FileScope` [INFO] [stdout] --> proto/proto_scope.rs:80:26 [INFO] [stdout] | [INFO] [stdout] 80 | ProtoScope::File(file.into()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `enum_scope::EnumScope` to `enum_scope::EnumScope` [INFO] [stdout] --> proto/proto_scope.rs:86:26 [INFO] [stdout] | [INFO] [stdout] 86 | ProtoScope::Enum(enum_scope.into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `MessageScope` to `MessageScope` [INFO] [stdout] --> proto/proto_scope.rs:92:29 [INFO] [stdout] | [INFO] [stdout] 92 | ProtoScope::Message(message_scope.into()) [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] error: could not compile `protos-ts` (bin "protos-ts" test) due to 30 previous errors; 13 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [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; [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] error: this conversion is useless `std::string::String` to `std::string::String` [INFO] [stdout] --> proto/error.rs:99:18 [INFO] [stdout] | [INFO] [stdout] 99 | message: format!("{}, but {} occurred", message.into(), lexem.lexem).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[deny(self_type_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:279:37 [INFO] [stdout] | [INFO] [stdout] 279 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 280 | | ... VariableDeclarationList::declare_const( [INFO] [stdout] 281 | | ... Rc::clone(&arr_end_id), [INFO] [stdout] 282 | | ... BinaryOperator::Plus.apply( [INFO] [stdout] ... | [INFO] [stdout] 291 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:395:29 [INFO] [stdout] | [INFO] [stdout] 395 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 396 | | ... VariableDeclarationList::declare_const( [INFO] [stdout] 397 | | ... Rc::clone(&map_entry_end_id), [INFO] [stdout] 398 | | ... BinaryOperator::Plus.apply( [INFO] [stdout] ... | [INFO] [stdout] 405 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Expression` to `ast::Expression` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:418:37 [INFO] [stdout] | [INFO] [stdout] 418 | ... kt.default_expression().into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:414:29 [INFO] [stdout] | [INFO] [stdout] 414 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 415 | | ... VariableDeclarationList::declare_typed_let( [INFO] [stdout] 416 | | ... Rc::clone(&key_id), [INFO] [stdout] 417 | | ... ast::Type::Any.into(), [INFO] [stdout] ... | [INFO] [stdout] 422 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Expression` to `ast::Expression` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:429:37 [INFO] [stdout] | [INFO] [stdout] 429 | ... value_type.default_expression().into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/decode_compiler.rs:425:29 [INFO] [stdout] | [INFO] [stdout] 425 | / ... ast::Statement::VariableStatement( [INFO] [stdout] 426 | | ... VariableDeclarationList::declare_typed_let( [INFO] [stdout] 427 | | ... Rc::clone(&val_id), [INFO] [stdout] 428 | | ... ast::Type::Any.into(), [INFO] [stdout] ... | [INFO] [stdout] 433 | | ... .into(), [INFO] [stdout] | |_____________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Type` to `ast::Type` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:68:25 [INFO] [stdout] | [INFO] [stdout] 68 | encode_func.returns(Type::reference(Rc::clone(&writer_type_id)).into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Expression` to `ast::Expression` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:76:13 [INFO] [stdout] | [INFO] [stdout] 76 | / ast::BinaryOperator::LogicalOr [INFO] [stdout] 77 | | .apply( [INFO] [stdout] 78 | | ast::Expression::from(Rc::clone(&writer_parameter_id)).into(), [INFO] [stdout] 79 | | Rc::new(ast::Expression::from(Rc::clone(&writer_type_id))) [INFO] [stdout] ... | [INFO] [stdout] 83 | | .into(), [INFO] [stdout] | |_______________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / ast::Statement::from(ast::VariableDeclarationList::declare_const( [INFO] [stdout] 75 | | Rc::clone(&writer_var), [INFO] [stdout] 76 | | ast::BinaryOperator::LogicalOr [INFO] [stdout] 77 | | .apply( [INFO] [stdout] ... | [INFO] [stdout] 84 | | )) [INFO] [stdout] 85 | | .into(), [INFO] [stdout] | |_______________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:103:21 [INFO] [stdout] | [INFO] [stdout] 103 | / encode_enum_field( [INFO] [stdout] 104 | | &message_parameter_id, [INFO] [stdout] 105 | | &writer_var, [INFO] [stdout] 106 | | &js_name_id, [INFO] [stdout] ... | [INFO] [stdout] 110 | | .into(), [INFO] [stdout] | |___________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:186:25 [INFO] [stdout] | [INFO] [stdout] 186 | / encode_basic_repeated_type_field( [INFO] [stdout] 187 | | &field_value, [INFO] [stdout] 188 | | &package::Type::Int32, [INFO] [stdout] 189 | | field.tag, [INFO] [stdout] ... | [INFO] [stdout] 192 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:199:25 [INFO] [stdout] | [INFO] [stdout] 199 | / encode_basic_repeated_type_field( [INFO] [stdout] 200 | | &field_value, [INFO] [stdout] 201 | | basic, [INFO] [stdout] 202 | | field.tag, [INFO] [stdout] ... | [INFO] [stdout] 205 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:210:17 [INFO] [stdout] | [INFO] [stdout] 210 | / encode_map_field( [INFO] [stdout] 211 | | &root, [INFO] [stdout] 212 | | &message_scope, [INFO] [stdout] 213 | | &mut file, [INFO] [stdout] ... | [INFO] [stdout] 221 | | )? [INFO] [stdout] 222 | | .into(), [INFO] [stdout] | |_______________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:228:21 [INFO] [stdout] | [INFO] [stdout] 228 | / encode_basic_type_field( [INFO] [stdout] 229 | | &field_value, [INFO] [stdout] 230 | | &message_parameter_id, [INFO] [stdout] 231 | | &js_name_id, [INFO] [stdout] ... | [INFO] [stdout] 236 | | .into(), [INFO] [stdout] | |___________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `ast::Statement` to `ast::Statement` [INFO] [stdout] --> proto/compiler/ts/encode_compiler.rs:243:9 [INFO] [stdout] | [INFO] [stdout] 243 | / ast::Expression::from(writer_var) [INFO] [stdout] 244 | | .into_return_statement() [INFO] [stdout] 245 | | .into(), [INFO] [stdout] | |___________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `Rc` to `Rc` [INFO] [stdout] --> proto/compiler/ts/types_compiler.rs:84:65 [INFO] [stdout] | [INFO] [stdout] 84 | let mut interface = ast::InterfaceDeclaration::new_exported(message_scope.name().into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:75:21 [INFO] [stdout] | [INFO] [stdout] 75 | / FieldDeclaration::new("null_value", FieldTypeReference::id("NullValue"), 1) [INFO] [stdout] 76 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:77:21 [INFO] [stdout] | [INFO] [stdout] 77 | FieldDeclaration::new("number_value", FieldTypeReference::Double, 2).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:78:21 [INFO] [stdout] | [INFO] [stdout] 78 | FieldDeclaration::new("string_value", FieldTypeReference::String, 3).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:79:21 [INFO] [stdout] | [INFO] [stdout] 79 | FieldDeclaration::new("bool_value", FieldTypeReference::Bool, 4).into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:80:21 [INFO] [stdout] | [INFO] [stdout] 80 | / FieldDeclaration::new("struct_value", FieldTypeReference::id("Struct"), 5) [INFO] [stdout] 81 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FieldDeclaration` to `FieldDeclaration` [INFO] [stdout] --> proto/proto_scope/builder/well_known/struct_file.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | / FieldDeclaration::new("list_value", FieldTypeReference::id("ListValue"), 6) [INFO] [stdout] 83 | | .into(), [INFO] [stdout] | |_______________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `PackageScope` to `PackageScope` [INFO] [stdout] --> proto/proto_scope.rs:74:29 [INFO] [stdout] | [INFO] [stdout] 74 | ProtoScope::Package(package.into()) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `FileScope` to `FileScope` [INFO] [stdout] --> proto/proto_scope.rs:80:26 [INFO] [stdout] | [INFO] [stdout] 80 | ProtoScope::File(file.into()) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `EnumScope` to `EnumScope` [INFO] [stdout] --> proto/proto_scope.rs:86:26 [INFO] [stdout] | [INFO] [stdout] 86 | ProtoScope::Enum(enum_scope.into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this conversion is useless `MessageScope` to `MessageScope` [INFO] [stdout] --> proto/proto_scope.rs:92:29 [INFO] [stdout] | [INFO] [stdout] 92 | ProtoScope::Message(message_scope.into()) [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] error: could not compile `protos-ts` (bin "protos-ts") due to 27 previous errors; 13 warnings emitted [INFO] running `Command { std: "docker" "inspect" "f2b65849cd89daa602838a999027cec1eb385887294bf887996bc29bd178c19c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f2b65849cd89daa602838a999027cec1eb385887294bf887996bc29bd178c19c", kill_on_drop: false }` [INFO] [stdout] f2b65849cd89daa602838a999027cec1eb385887294bf887996bc29bd178c19c