[INFO] fetching crate typescript-ir 0.0.4...
[INFO] testing typescript-ir-0.0.4 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate typescript-ir 0.0.4 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate typescript-ir 0.0.4
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate typescript-ir 0.0.4
[INFO] tweaked toml for crates.io crate typescript-ir 0.0.4 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate typescript-ir 0.0.4 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate typescript-ir 0.0.4 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" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb
[INFO] running `Command { std: "docker" "start" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling typescript-types v0.0.4
[INFO] [stderr]    Compiling typescript-ir v0.0.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `typescript_types::TsValue`
[INFO] [stdout]   --> src/optimization/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use typescript_types::TsValue;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssignmentOp`, `BinaryOp`, `TypeParameter`, and `UnaryOp`
[INFO] [stdout]  --> src/ast_to_ir.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     types::{AssignmentOp, BinaryOp, TypeAnnotation, TypeParameter, UnaryOp},
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimization/constant_propagation.rs:130:29
[INFO] [stdout]     |
[INFO] [stdout] 130 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statements`
[INFO] [stdout]    --> src/optimization/dead_code_elimination.rs:297:9
[INFO] [stdout]     |
[INFO] [stdout] 297 |         statements: &[Statement],
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statements`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimization/dead_code_elimination.rs:373:29
[INFO] [stdout]     |
[INFO] [stdout] 373 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `init`
[INFO] [stdout]   --> src/optimization/loop_optimization.rs:22:34
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stdout]    |                                  ^^^^ help: try ignoring the field: `init: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `update`
[INFO] [stdout]   --> src/optimization/loop_optimization.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `update: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]   --> src/ast_to_ir.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn program(source: &str) -> Result<Program, TsError> {
[INFO] [stdout]    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatementOptimization` is never constructed
[INFO] [stdout]  --> src/optimization/statement_optimization.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct StatementOptimization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inline_function_call` is never used
[INFO] [stdout]    --> src/optimization/statement_optimization.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn inline_function_call(callee: &Expression, _args: &[Expression]) -> Option<Expression> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:1:9
[INFO] [stdout]    |
[INFO] [stdout]  1 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:51
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:17:26
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:19:37
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:21:39
[INFO] [stdout]    |
[INFO] [stdout] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:41
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:59
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:42
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:71
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:33:16
[INFO] [stdout]    |
[INFO] [stdout] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:33:37
[INFO] [stdout]    |
[INFO] [stdout] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:35:42
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:16
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:30
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:50
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:28
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:67
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:96
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:41
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:69
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:61
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:21:36
[INFO] [stdout]    |
[INFO] [stdout] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:41
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:72
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:105
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                                                                                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:17:29
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `once_cell`
[INFO] [stderr]  --> Cargo.toml:1:15
[INFO] [stderr]   |
[INFO] [stderr] 1 | [dependencies.once_cell]
[INFO] [stderr]   |               ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `once_cell`
[INFO] [stderr] warning: `typescript-ir` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.01s
[INFO] running `Command { std: "docker" "inspect" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `typescript_types::TsValue`
[INFO] [stdout]   --> src/optimization/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use typescript_types::TsValue;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssignmentOp`, `BinaryOp`, `TypeParameter`, and `UnaryOp`
[INFO] [stdout]  --> src/ast_to_ir.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     types::{AssignmentOp, BinaryOp, TypeAnnotation, TypeParameter, UnaryOp},
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimization/constant_propagation.rs:130:29
[INFO] [stdout]     |
[INFO] [stdout] 130 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statements`
[INFO] [stdout]    --> src/optimization/dead_code_elimination.rs:297:9
[INFO] [stdout]     |
[INFO] [stdout] 297 |         statements: &[Statement],
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statements`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimization/dead_code_elimination.rs:373:29
[INFO] [stdout]     |
[INFO] [stdout] 373 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `init`
[INFO] [stdout]   --> src/optimization/loop_optimization.rs:22:34
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stdout]    |                                  ^^^^ help: try ignoring the field: `init: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `update`
[INFO] [stdout]   --> src/optimization/loop_optimization.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `update: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]   --> src/ast_to_ir.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn program(source: &str) -> Result<Program, TsError> {
[INFO] [stdout]    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatementOptimization` is never constructed
[INFO] [stdout]  --> src/optimization/statement_optimization.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct StatementOptimization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inline_function_call` is never used
[INFO] [stdout]    --> src/optimization/statement_optimization.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn inline_function_call(callee: &Expression, _args: &[Expression]) -> Option<Expression> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:1:9
[INFO] [stdout]    |
[INFO] [stdout]  1 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:51
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:17:26
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:19:37
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:21:39
[INFO] [stdout]    |
[INFO] [stdout] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:41
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:59
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:42
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:71
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:33:16
[INFO] [stdout]    |
[INFO] [stdout] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:33:37
[INFO] [stdout]    |
[INFO] [stdout] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:35:42
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:16
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:30
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:50
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:28
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:67
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:96
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:41
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:69
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:61
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:21:36
[INFO] [stdout]    |
[INFO] [stdout] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:41
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:72
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:105
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                                                                                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:17:29
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling typescript-ir v0.0.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `typescript_types::TsValue`
[INFO] [stdout]   --> src/optimization/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use typescript_types::TsValue;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssignmentOp`, `BinaryOp`, `TypeParameter`, and `UnaryOp`
[INFO] [stdout]  --> src/ast_to_ir.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     types::{AssignmentOp, BinaryOp, TypeAnnotation, TypeParameter, UnaryOp},
[INFO] [stdout]   |             ^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimization/constant_propagation.rs:130:29
[INFO] [stdout]     |
[INFO] [stdout] 130 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statements`
[INFO] [stdout]    --> src/optimization/dead_code_elimination.rs:297:9
[INFO] [stdout]     |
[INFO] [stdout] 297 |         statements: &[Statement],
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statements`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimization/dead_code_elimination.rs:373:29
[INFO] [stdout]     |
[INFO] [stdout] 373 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stdout]     |                             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `init`
[INFO] [stdout]   --> src/optimization/loop_optimization.rs:22:34
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stdout]    |                                  ^^^^ help: try ignoring the field: `init: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `update`
[INFO] [stdout]   --> src/optimization/loop_optimization.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stdout]    |                                              ^^^^^^ help: try ignoring the field: `update: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]   --> src/ast_to_ir.rs:32:16
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn program(source: &str) -> Result<Program, TsError> {
[INFO] [stdout]    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatementOptimization` is never constructed
[INFO] [stdout]  --> src/optimization/statement_optimization.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct StatementOptimization;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inline_function_call` is never used
[INFO] [stdout]    --> src/optimization/statement_optimization.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn inline_function_call(callee: &Expression, _args: &[Expression]) -> Option<Expression> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:1:9
[INFO] [stdout]    |
[INFO] [stdout]  1 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:37
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:15:51
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stdout]    |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:17:26
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:19:37
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:21:14
[INFO] [stdout]    |
[INFO] [stdout] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:21:39
[INFO] [stdout]    |
[INFO] [stdout] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:23:13
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:41
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:29:59
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:42
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:31:71
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:33:16
[INFO] [stdout]    |
[INFO] [stdout] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:33:37
[INFO] [stdout]    |
[INFO] [stdout] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:35:21
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/expression.rs:35:42
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:16
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:30
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:54:50
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:28
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:67
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/program.rs:56:96
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stdout]    |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:41
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:15:69
[INFO] [stdout]    |
[INFO] [stdout] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:19:61
[INFO] [stdout]    |
[INFO] [stdout] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:21:36
[INFO] [stdout]    |
[INFO] [stdout] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:41
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:72
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/statement.rs:23:105
[INFO] [stdout]    |
[INFO] [stdout] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stdout]    |                                                                                                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:17:29
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/types.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `once_cell`
[INFO] [stderr]  --> Cargo.toml:1:15
[INFO] [stderr]   |
[INFO] [stderr] 1 | [dependencies.once_cell]
[INFO] [stderr]   |               ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `once_cell`
[INFO] [stderr] warning: `typescript-ir` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.05s
[INFO] running `Command { std: "docker" "inspect" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `typescript_types::TsValue`
[INFO] [stderr]   --> src/optimization/mod.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use typescript_types::TsValue;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AssignmentOp`, `BinaryOp`, `TypeParameter`, and `UnaryOp`
[INFO] [stderr]  --> src/ast_to_ir.rs:9:13
[INFO] [stderr]   |
[INFO] [stderr] 9 |     types::{AssignmentOp, BinaryOp, TypeAnnotation, TypeParameter, UnaryOp},
[INFO] [stderr]   |             ^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/optimization/constant_propagation.rs:130:29
[INFO] [stderr]     |
[INFO] [stderr] 130 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stderr]     |                             ----^^^^^^^^^^^^^^
[INFO] [stderr]     |                             |
[INFO] [stderr]     |                             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `statements`
[INFO] [stderr]    --> src/optimization/dead_code_elimination.rs:297:9
[INFO] [stderr]     |
[INFO] [stderr] 297 |         statements: &[Statement],
[INFO] [stderr]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statements`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/optimization/dead_code_elimination.rs:373:29
[INFO] [stderr]     |
[INFO] [stderr] 373 |                         let mut alternate_stmt = alternate.as_ref().map(|alt| {
[INFO] [stderr]     |                             ----^^^^^^^^^^^^^^
[INFO] [stderr]     |                             |
[INFO] [stderr]     |                             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `init`
[INFO] [stderr]   --> src/optimization/loop_optimization.rs:22:34
[INFO] [stderr]    |
[INFO] [stderr] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stderr]    |                                  ^^^^ help: try ignoring the field: `init: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `update`
[INFO] [stderr]   --> src/optimization/loop_optimization.rs:22:46
[INFO] [stderr]    |
[INFO] [stderr] 22 |                 Statement::For { init, test, update, body } => {
[INFO] [stderr]    |                                              ^^^^^^ help: try ignoring the field: `update: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `source`
[INFO] [stderr]   --> src/ast_to_ir.rs:32:16
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub fn program(source: &str) -> Result<Program, TsError> {
[INFO] [stderr]    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StatementOptimization` is never constructed
[INFO] [stderr]  --> src/optimization/statement_optimization.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct StatementOptimization;
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `inline_function_call` is never used
[INFO] [stderr]    --> src/optimization/statement_optimization.rs:197:8
[INFO] [stderr]     |
[INFO] [stderr] 197 | pub fn inline_function_call(callee: &Expression, _args: &[Expression]) -> Option<Expression> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:15:14
[INFO] [stderr]    |
[INFO] [stderr] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] note: the lint level is defined here
[INFO] [stderr]   --> src/lib.rs:1:9
[INFO] [stderr]    |
[INFO] [stderr]  1 | #![warn(missing_docs)]
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:15:37
[INFO] [stderr]    |
[INFO] [stderr] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stderr]    |                                     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:15:51
[INFO] [stderr]    |
[INFO] [stderr] 15 |     Binary { left: Box<Expression>, op: BinaryOp, right: Box<Expression> },
[INFO] [stderr]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:17:13
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stderr]    |             ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:17:26
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Unary { op: UnaryOp, expr: Box<Expression> },
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:19:37
[INFO] [stderr]    |
[INFO] [stderr] 19 |     Call { callee: Box<Expression>, args: Vec<Expression> },
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:21:14
[INFO] [stderr]    |
[INFO] [stderr] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:21:39
[INFO] [stderr]    |
[INFO] [stderr] 21 |     Member { object: Box<Expression>, property: Box<Expression> },
[INFO] [stderr]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:23:13
[INFO] [stderr]    |
[INFO] [stderr] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:23:38
[INFO] [stderr]    |
[INFO] [stderr] 23 |     Index { object: Box<Expression>, index: Box<Expression> },
[INFO] [stderr]    |                                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:29:18
[INFO] [stderr]    |
[INFO] [stderr] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:29:41
[INFO] [stderr]    |
[INFO] [stderr] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:29:59
[INFO] [stderr]    |
[INFO] [stderr] 29 |     Assignment { left: Box<Expression>, op: AssignmentOp, right: Box<Expression> },
[INFO] [stderr]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:31:19
[INFO] [stderr]    |
[INFO] [stderr] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:31:42
[INFO] [stderr]    |
[INFO] [stderr] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stderr]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:31:71
[INFO] [stderr]    |
[INFO] [stderr] 31 |     Conditional { test: Box<Expression>, consequent: Box<Expression>, alternate: Box<Expression> },
[INFO] [stderr]    |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:33:16
[INFO] [stderr]    |
[INFO] [stderr] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:33:37
[INFO] [stderr]    |
[INFO] [stderr] 33 |     Function { params: Vec<String>, body: Vec<crate::statement::Statement> },
[INFO] [stderr]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:35:21
[INFO] [stderr]    |
[INFO] [stderr] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/expression.rs:35:42
[INFO] [stderr]    |
[INFO] [stderr] 35 |     ArrowFunction { params: Vec<String>, body: Box<Expression> },
[INFO] [stderr]    |                                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:54:16
[INFO] [stderr]    |
[INFO] [stderr] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stderr]    |                ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:54:30
[INFO] [stderr]    |
[INFO] [stderr] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stderr]    |                              ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:54:50
[INFO] [stderr]    |
[INFO] [stderr] 54 |     Property { name: String, ty: TypeAnnotation, optional: bool },
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:56:14
[INFO] [stderr]    |
[INFO] [stderr] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:56:28
[INFO] [stderr]    |
[INFO] [stderr] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stderr]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:56:67
[INFO] [stderr]    |
[INFO] [stderr] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stderr]    |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/program.rs:56:96
[INFO] [stderr]    |
[INFO] [stderr] 56 |     Method { name: String, params: Vec<(String, TypeAnnotation)>, return_type: TypeAnnotation, optional: bool },
[INFO] [stderr]    |                                                                                                ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:15:27
[INFO] [stderr]    |
[INFO] [stderr] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stderr]    |                           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:15:41
[INFO] [stderr]    |
[INFO] [stderr] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:15:69
[INFO] [stderr]    |
[INFO] [stderr] 15 |     VariableDeclaration { name: String, ty: Option<TypeAnnotation>, initializer: Option<Box<Expression>> },
[INFO] [stderr]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:19:10
[INFO] [stderr]    |
[INFO] [stderr] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:19:33
[INFO] [stderr]    |
[INFO] [stderr] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:19:61
[INFO] [stderr]    |
[INFO] [stderr] 19 |     If { test: Box<Expression>, consequent: Box<Statement>, alternate: Option<Box<Statement>> },
[INFO] [stderr]    |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:21:13
[INFO] [stderr]    |
[INFO] [stderr] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:21:36
[INFO] [stderr]    |
[INFO] [stderr] 21 |     While { test: Box<Expression>, body: Box<Statement> },
[INFO] [stderr]    |                                    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:23:11
[INFO] [stderr]    |
[INFO] [stderr] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:23:41
[INFO] [stderr]    |
[INFO] [stderr] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:23:72
[INFO] [stderr]    |
[INFO] [stderr] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stderr]    |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/statement.rs:23:105
[INFO] [stderr]    |
[INFO] [stderr] 23 |     For { init: Option<Box<Statement>>, test: Option<Box<Expression>>, update: Option<Box<Expression>>, body: Box<Statement> },
[INFO] [stderr]    |                                                                                                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/types.rs:17:15
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stderr]    |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/types.rs:17:29
[INFO] [stderr]    |
[INFO] [stderr] 17 |     Generic { name: String, args: Vec<TypeAnnotation> },
[INFO] [stderr]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/types.rs:19:16
[INFO] [stderr]    |
[INFO] [stderr] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/types.rs:19:45
[INFO] [stderr]    |
[INFO] [stderr] 19 |     Function { params: Vec<TypeAnnotation>, return_type: Box<TypeAnnotation> },
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `typescript-ir` (lib) generated 54 warnings (run `cargo fix --lib -p typescript-ir` to apply 8 suggestions)
[INFO] [stderr] warning: `typescript-ir` (lib test) generated 54 warnings (54 duplicates)
[INFO] [stderr] warning: unused dependency `once_cell`
[INFO] [stderr]  --> Cargo.toml:1:15
[INFO] [stderr]   |
[INFO] [stderr] 1 | [dependencies.once_cell]
[INFO] [stderr]   |               ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `once_cell`
[INFO] [stderr] warning: `typescript-ir` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/typescript-ir/8d2dfa7cd5dc3958/out/typescript_ir-8d2dfa7cd5dc3958)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/test_optimization.rs (/opt/rustwide/target/debug/build/typescript-ir/bd5446e69a60c676/out/test_optimization-bd5446e69a60c676)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test test_while_optimization ... ok
[INFO] [stdout] test test_unary_optimization ... ok
[INFO] [stdout] test test_conditional_optimization ... ok
[INFO] [stdout] test test_constant_folding ... ok
[INFO] [stdout] test test_dead_code_elimination ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/test_performance.rs (/opt/rustwide/target/debug/build/typescript-ir/1fc390bbe91d94fc/out/test_performance-1fc390bbe91d94fc)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test test_profiler ... ok
[INFO] [stdout] test test_performance_monitor ... ok
[INFO] [stdout] test test_function_stats ... ok
[INFO] [stdout] test test_hot_spots ... ok
[INFO] [stdout] test test_threshold ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests typescript_ir
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb", kill_on_drop: false }`
[INFO] [stdout] 071ed7e439d2d1549e0e59b8cdf2da439bedfd6677ec36112d75f651ed3456bb
