[INFO] cloning repository https://github.com/tcr/gourd
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tcr/gourd" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftcr%2Fgourd", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftcr%2Fgourd'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4fd2d0fed4c3ca4c78f45d8bd06c24581f728bd6
[INFO] checking tcr/gourd against 416264364aa47959f5827723e1d7dabc95d0744b for pr-162242
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftcr%2Fgourd" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tcr/gourd
[INFO] finished tweaking git repo https://github.com/tcr/gourd
[INFO] tweaked toml for git repo https://github.com/tcr/gourd written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tcr/gourd on toolchain 416264364aa47959f5827723e1d7dabc95d0744b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+416264364aa47959f5827723e1d7dabc95d0744b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tcr/gourd 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" "+416264364aa47959f5827723e1d7dabc95d0744b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: unused field `edition` in `workspace.package`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | edition = "2024"
[INFO] [stderr]   | ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_workspace_package_fields` is set to `warn` by default
[INFO] [stderr] help: consider removing the field `workspace.package.edition`
[INFO] [stderr] warning: unused field `version` in `workspace.package`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | version = "0.1.0"
[INFO] [stderr]   | ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the field `workspace.package.version`
[INFO] [stderr] warning: workspace (manifest) generated 2 warnings
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> gourd/Cargo.toml:8:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | repository = "https://github.com/trim/github/tcr/gourd"
[INFO] [stderr]   |              ------------------------------------------
[INFO] [stderr] 8 | homepage = "https://github.com/trim/github/tcr/gourd"
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `gourd` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a
[INFO] running `Command { std: "docker" "start" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a", 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" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a" "/opt/rustwide/cargo-home/bin/cargo" "+416264364aa47959f5827723e1d7dabc95d0744b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a", 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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a" "/opt/rustwide/cargo-home/bin/cargo" "+416264364aa47959f5827723e1d7dabc95d0744b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: unused field `edition` in `workspace.package`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | edition = "2024"
[INFO] [stderr]   | ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_workspace_package_fields` is set to `warn` by default
[INFO] [stderr] help: consider removing the field `workspace.package.edition`
[INFO] [stderr] warning: unused field `version` in `workspace.package`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | version = "0.1.0"
[INFO] [stderr]   | ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the field `workspace.package.version`
[INFO] [stderr] warning: workspace (manifest) generated 2 warnings
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> gourd/Cargo.toml:8:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | repository = "https://github.com/trim/github/tcr/gourd"
[INFO] [stderr]   |              ------------------------------------------
[INFO] [stderr] 8 | homepage = "https://github.com/trim/github/tcr/gourd"
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `gourd` (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]     Checking unicode-ident v1.0.24
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking ansi_term v0.12.1
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking bitflags v2.13.0
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking fastrand v2.4.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking env_filter v2.0.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking env_logger v0.11.11
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]     Checking syn v2.0.117
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking memchr v2.8.2
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking tracing-flame v0.2.0
[INFO] [stderr]    Compiling gourd-codegen v0.1.1 (/opt/rustwide/workdir/gourd-codegen)
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/expressions.rs:754:32
[INFO] [stdout]     |
[INFO] [stdout] 754 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/expressions.rs:754:32
[INFO] [stdout]     |
[INFO] [stdout] 754 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/expressions.rs:754:32
[INFO] [stdout]     |
[INFO] [stdout] 754 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/statement_parsing.rs:670:32
[INFO] [stdout]     |
[INFO] [stdout] 670 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/expressions.rs:754:32
[INFO] [stdout]     |
[INFO] [stdout] 754 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/statement_parsing.rs:670:32
[INFO] [stdout]     |
[INFO] [stdout] 670 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/statement_parsing.rs:670:32
[INFO] [stdout]     |
[INFO] [stdout] 670 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `idx` is never read
[INFO] [stdout]    --> gourd-codegen/src/transpiler/hir/parsing_hir/statement_parsing.rs:670:32
[INFO] [stdout]     |
[INFO] [stdout] 670 |         if chars[idx] == '}' { idx += 1; break; }
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `collected` is never read
[INFO] [stdout]    --> gourd-codegen/src/lib.rs:550:25
[INFO] [stdout]     |
[INFO] [stdout] 550 |                         collected = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `collected` is never read
[INFO] [stdout]    --> gourd-codegen/src/lib.rs:550:25
[INFO] [stdout]     |
[INFO] [stdout] 550 |                         collected = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `collected` is never read
[INFO] [stdout]    --> gourd-codegen/src/lib.rs:550:25
[INFO] [stdout]     |
[INFO] [stdout] 550 |                         collected = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `collected` is never read
[INFO] [stdout]    --> gourd-codegen/src/lib.rs:550:25
[INFO] [stdout]     |
[INFO] [stdout] 550 |                         collected = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking gourd-macro v0.1.1 (/opt/rustwide/workdir/gourd-macro)
[INFO] [stdout] warning: function `goFn` should have a snake case name
[INFO] [stdout]   --> gourd-codegen/tests/transpile_go_fn.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn goFn(tokens: TokenStream) -> TokenStream {
[INFO] [stdout]    |    ^^^^ help: convert the identifier to snake case: `go_fn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking gourd v0.1.1 (/opt/rustwide/workdir/gourd)
[INFO] [stderr]     Checking gourd-check v0.1.0 (/opt/rustwide/workdir/gourd-check)
[INFO] [stdout] warning: unused import: `Stdio`
[INFO] [stdout]   --> gourd-check/tests/test_examples.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::process::{Command, Stdio};
[INFO] [stdout]    |                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func go_divmod(n int, d int) (int, int) { return n / d, n % d }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: go_divmod
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, d int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(189..190) }, HirType { kind: I32 }), (Ident { ident: "d", span: #0 bytes(196..197) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 2
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return n / d, n % d }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return n / d, n % d
[INFO] [stderr] [DEBUG parse_hir_statement] input: return n / d, n % d
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32, i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Tuple(2 items) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32, i32]
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> gourd/src/go_slice.rs:711:13
[INFO] [stdout]     |
[INFO] [stdout] 711 |         let mut s = GoSlice::from_vec(vec![0xff, 0xfe]);
[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: variable does not need to be mutable
[INFO] [stdout]    --> gourd/src/go_map.rs:344:13
[INFO] [stdout]     |
[INFO] [stdout] 344 |         let mut m: GoMap<String, i32> = GoMap::new();
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func go_divmod(n int, d int) (int, int) { return n / d, n % d }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: go_divmod
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, d int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(189..190) }, HirType { kind: I32 }), (Ident { ident: "d", span: #0 bytes(196..197) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 2
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return n / d, n % d }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return n / d, n % d
[INFO] [stderr] [DEBUG parse_hir_statement] input: return n / d, n % d
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32, i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Tuple(2 items) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32, i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goNewPoint() Point { return new(Point) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goNewPoint
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: Point { return new(Point) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return new(Point) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return new(Point)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return new(Point)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[Point]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: New(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[Point]
[INFO] [stderr] [DEBUG parse_hir_function] input: func go_triple(a int, b int) (int, int, string)
[INFO] [stderr] { return a + b, a * b, "pair" }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: go_triple
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, b int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(571..572) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(578..579) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 3
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b, a * b, "pair" }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b, a * b, "pair"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b, a * b, "pair"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32, i32, :: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Tuple(3 items) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32, i32, :: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendItem() [] int { return append([]int{1, 2, 3}, 4) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendItem
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return append([]int{1 (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return append([]int{1, 2, 3}, 4) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return append([]int{1, 2, 3}, 4)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return append([]int{1, 2, 3}, 4)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Append(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func main() int
[INFO] [stderr] {
[INFO] [stderr]     f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 }
[INFO] [stderr]     data := []int{1, 2, 3} return f(&data)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: main
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     f := func(arr []int) (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 }
[INFO] [stderr]     data := []int{1, 2, 3} return f(&data)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 } data
[INFO] [stderr] := [] int { 1, 2, 3 } r
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 } data
[INFO] [stderr] := [] int { 1, 2, 3 } r
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG parse_hir_type] input: int { if len(arr) > 0 { return (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { if len(arr) > 0 { return arr[0] } return 0 } data := [] int { 1, 2, 3 }
[INFO] [stderr] return f(&data)
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: if len(arr) > 0 { return arr[0] } return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: if len(arr) > 0 { return arr[0] } return 0
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return arr[0] } return 0
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return arr [0]
[INFO] [stderr] [DEBUG parse_hir_statement] input: return arr [0]
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: data := [] int { 1, 2, 3 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: data := [] int { 1, 2, 3 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return f(&data)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(1179..1180) }, params: [(Ident { ident: "arr", span: #0 bytes(1189..1192) }, Some(HirType { kind: SliceRef(HirType { kind: I32 }) }))], body: HirBlock { stmts: [If { cond: HirExpr { kind: Binary(Gt) }, then_body: HirBlock { stmts: [Return(Some(HirExpr { kind: Index(_) }))] }, else_body: None }, Return(Some(HirExpr { kind: Literal(Int(0)) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "data", span: #0 bytes(1343..1347) }, mutable: true, value: HirExpr { kind: SliceLiteral(3 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 1 args) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goChannelRecv(ch chan int) int { return <-ch }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goChannelRecv
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ch", span: #0 bytes(245..247) }, HirType { kind: Channel(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return <-ch } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return <-ch }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return <- ch
[INFO] [stderr] [DEBUG parse_hir_statement] input: return <- ch
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Unary(ChanRecv) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goChannelSend(ch chan int, value int) { ch <- value }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goChannelSend
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int, value int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ch", span: #0 bytes(434..436) }, HirType { kind: Channel(HirType { kind: I32 }) }), (Ident { ident: "value", span: #0 bytes(447..452) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 0
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { ch <- value }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[]
[INFO] [stderr] DEBUG: No fix applied, using default: Expr(HirExpr { kind: Binary(ChanSend) })
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertInt(x int) int { return x.(int) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertInt
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(225..226) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return x.(int) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(int) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(int)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(int)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertString(x int) String { return x.(string) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertString
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(463..464) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: String { return x.(string) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(string) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(string)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(string)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goDayName(d int) string
[INFO] [stderr] {
[INFO] [stderr]     switch d
[INFO] [stderr]     {
[INFO] [stderr]         case 1, 2, 3: return "weekday" case 4, 5: return "almost_weekend" case
[INFO] [stderr]         6, 7, 0: return "weekend" default: return "invalid"
[INFO] [stderr]     }
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goDayName
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "d", span: #0 bytes(152..153) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string
[INFO] [stderr] {
[INFO] [stderr]     switch d
[INFO] [stderr]     {
[INFO] [stderr]    (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     switch d
[INFO] [stderr]     {
[INFO] [stderr]         case 1, 2, 3: return "weekday" case 4, 5: return "almost_weekend" case
[INFO] [stderr]         6, 7, 0: return "weekend" default: return "invalid"
[INFO] [stderr]     }
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: switch d
[INFO] [stderr] {
[INFO] [stderr]     case 1, 2, 3: return "weekday" case 4, 5: return "almost_weekend" case 6,
[INFO] [stderr]     7, 0: r
[INFO] [stderr] [DEBUG parse_hir_statement] input: switch d
[INFO] [stderr] {
[INFO] [stderr]     case 1, 2, 3: return "weekday" case 4, 5: return "almost_weekend" case 6,
[INFO] [stderr]     7, 0: r
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "weekday" case 4, 5 : return "almost_weekend" case 6, 7, 0 : return
[INFO] [stderr] "weekend" default : retur
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "almost_weekend" case 6, 7, 0 : return "weekend" default : return
[INFO] [stderr] "invalid"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "weekend" default : return "invalid"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "invalid"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Switch { selector: Some(HirExpr { kind: Identifier(d) }), cases: [HirSwitchCase { patterns: [HirExpr { kind: Literal(Int(1)) }, HirExpr { kind: Literal(Int(2)) }, HirExpr { kind: Literal(Int(3)) }], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(StringTy("weekday")) }))] } }, HirSwitchCase { patterns: [HirExpr { kind: Literal(Int(4)) }, HirExpr { kind: Literal(Int(5)) }], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(StringTy("almost_weekend")) }))] } }, HirSwitchCase { patterns: [HirExpr { kind: Literal(Int(6)) }, HirExpr { kind: Literal(Int(7)) }, HirExpr { kind: Literal(Int(0)) }], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(StringTy("weekend")) }))] } }], default_body: Some(HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(StringTy("invalid")) }))] }) }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertFloat64(x int) f64 { return x.(float64) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertFloat64
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(728..729) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: f64 { return x.(float64) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(float64) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(float64)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(float64)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[f64]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[f64]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goClosureWithLen() int
[INFO] [stderr] {
[INFO] [stderr]     f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 }
[INFO] [stderr]     data := []int{1, 2, 3} return f(&data)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goClosureWithLen
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     f := func(arr []int) (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 }
[INFO] [stderr]     data := []int{1, 2, 3} return f(&data)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 } data
[INFO] [stderr] := [] int { 1, 2, 3 } r
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func(arr []int) int { if len(arr) > 0 { return arr[0] } return 0 } data
[INFO] [stderr] := [] int { 1, 2, 3 } r
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG parse_hir_type] input: int { if len(arr) > 0 { return (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { if len(arr) > 0 { return arr[0] } return 0 } data := [] int { 1, 2, 3 }
[INFO] [stderr] return f(&data)
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: if len(arr) > 0 { return arr[0] } return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: if len(arr) > 0 { return arr[0] } return 0
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return arr[0] } return 0
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return arr [0]
[INFO] [stderr] [DEBUG parse_hir_statement] input: return arr [0]
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: data := [] int { 1, 2, 3 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: data := [] int { 1, 2, 3 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return f(&data)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(106..107) }, params: [(Ident { ident: "arr", span: #0 bytes(116..119) }, Some(HirType { kind: SliceRef(HirType { kind: I32 }) }))], body: HirBlock { stmts: [If { cond: HirExpr { kind: Binary(Gt) }, then_body: HirBlock { stmts: [Return(Some(HirExpr { kind: Index(_) }))] }, else_body: None }, Return(Some(HirExpr { kind: Literal(Int(0)) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "data", span: #0 bytes(246..250) }, mutable: true, value: HirExpr { kind: SliceLiteral(3 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 1 args) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goChannelEcho(ch chan int) int { ch <- 42 return <-ch }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goChannelEcho
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ch", span: #0 bytes(633..635) }, HirType { kind: Channel(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { ch <- 42 return <-ch } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { ch <- 42 return <-ch }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: ch <- 42 return <- ch
[INFO] [stderr] [DEBUG parse_hir_statement] input: ch <- 42 return <- ch
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return <- ch
[INFO] [stderr] [DEBUG parse_hir_statement] input: return <- ch
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: ChannelSend { channel: HirExpr { kind: Identifier(ch) }, value: HirExpr { kind: Literal(Int(42)) } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Unary(ChanRecv) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stdout] warning: unused import: `gourd::GoChannel`
[INFO] [stdout]  --> gourd-macro/tests/channel_ops.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gourd::GoChannel;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> gourd-macro/tests/multi_case_switch.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout]  5 | / go! {
[INFO] [stdout]  6 | |     func goDayName(d int) string {
[INFO] [stdout]  7 | |         switch d {
[INFO] [stdout]  8 | |         case 1, 2, 3:
[INFO] [stdout] ...  |
[INFO] [stdout] 18 | | }
[INFO] [stdout]    | | ^
[INFO] [stdout]    | | |
[INFO] [stdout]    | |_unreachable expression
[INFO] [stdout]    |   any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]    = note: this warning originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertUint(x int) uint { return x.(uint) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertUint
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(972..973) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: uint { return x.(uint) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(uint) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(uint)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(uint)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[u32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[u32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goClosureWithIndex() int
[INFO] [stderr] {
[INFO] [stderr]     f := func(arr []int) int { return arr[1] } data := []int{10, 20, 30}
[INFO] [stderr]     return f(&data)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goClosureWithIndex
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     f := func(arr []int) (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     f := func(arr []int) int { return arr[1] } data := []int{10, 20, 30}
[INFO] [stderr]     return f(&data)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func(arr []int) int { return arr[1] } data := [] int { 10, 20, 30 }
[INFO] [stderr] return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func(arr []int) int { return arr[1] } data := [] int { 10, 20, 30 }
[INFO] [stderr] return f(&data)
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return arr[1] } data :=  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return arr[1] } data := [] int { 10, 20, 30 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return arr [1]
[INFO] [stderr] [DEBUG parse_hir_statement] input: return arr [1]
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: data := [] int { 10, 20, 30 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: data := [] int { 10, 20, 30 } return f(&data)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return f(&data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return f(&data)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(386..387) }, params: [(Ident { ident: "arr", span: #0 bytes(396..399) }, Some(HirType { kind: SliceRef(HirType { kind: I32 }) }))], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Index(_) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "data", span: #0 bytes(457..461) }, mutable: true, value: HirExpr { kind: SliceLiteral(3 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 1 args) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertBool(x int) bool { return x.(bool) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertBool
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(1220..1221) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: bool { return x.(bool) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(bool) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(bool)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(bool)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[bool]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[bool]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMinimal(n int) string
[INFO] [stderr] { return switch n { case 1: "one" case 2: "two" default: "other" } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMinimal
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(113..114) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return switch n { cas (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return switch n { case 1: "one" case 2: "two" default: "other" } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return switch n { case 1: "one" case 2: "two" default: "other" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return switch n { case 1: "one" case 2: "two" default: "other" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: "one" case 2 : "two" default : "other"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "two" default : "other"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "other"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: SwitchReturn { tokens: TokenStream [Ident { ident: "match", span: #5 bytes(88..277) }, Ident { ident: "n", span: #0 bytes(151..152) }, Group { delimiter: Brace, stream: TokenStream [Literal { kind: Integer, symbol: "1", suffix: None, span: #5 bytes(88..277) }, Punct { ch: '=', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: '>', spacing: Alone, span: #5 bytes(88..277) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "gourd", span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "GoString", span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "new", span: #5 bytes(88..277) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "one", suffix: None, span: #5 bytes(88..277) }], span: #5 bytes(88..277) }], span: #5 bytes(88..277) }, Literal { kind: Integer, symbol: "2", suffix: None, span: #5 bytes(88..277) }, Punct { ch: '=', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: '>', spacing: Alone, span: #5 bytes(88..277) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "gourd", span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "GoString", span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "new", span: #5 bytes(88..277) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "two", suffix: None, span: #5 bytes(88..277) }], span: #5 bytes(88..277) }], span: #5 bytes(88..277) }, Punct { ch: ',', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "_", span: #5 bytes(88..277) }, Punct { ch: '=', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: '>', spacing: Alone, span: #5 bytes(88..277) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "gourd", span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "GoString", span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(88..277) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(88..277) }, Ident { ident: "new", span: #5 bytes(88..277) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "other", suffix: None, span: #5 bytes(88..277) }], span: #5 bytes(88..277) }], span: #5 bytes(88..277) }], span: #5 bytes(88..277) }] }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func noSelector(ok bool, ready bool) string
[INFO] [stderr] { return switch { case ok: "ok" case ready: "ready" default: "none" } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: noSelector
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: bool, ready bool (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: bool (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ok", span: #0 bytes(639..641) }, HirType { kind: Bool }), (Ident { ident: "ready", span: #0 bytes(648..653) }, HirType { kind: Bool })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return switch { case  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return switch { case ok: "ok" case ready: "ready" default: "none" } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return switch { case ok: "ok" case ready: "ready" default: "none" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return switch { case ok: "ok" case ready: "ready" default: "none" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: "ok" case ready : "ready" default : "none"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "ready" default : "none"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "none"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: SwitchReturn { tokens: TokenStream [Ident { ident: "if", span: #5 bytes(344..612) }, Ident { ident: "ok", span: #0 bytes(706..708) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "gourd", span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "GoString", span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "new", span: #5 bytes(344..612) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "ok", suffix: None, span: #5 bytes(344..612) }], span: #5 bytes(344..612) }], span: #5 bytes(344..612) }, Ident { ident: "else", span: #5 bytes(344..612) }, Ident { ident: "if", span: #5 bytes(344..612) }, Ident { ident: "ready", span: #0 bytes(740..745) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "gourd", span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "GoString", span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "new", span: #5 bytes(344..612) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "ready", suffix: None, span: #5 bytes(344..612) }], span: #5 bytes(344..612) }], span: #5 bytes(344..612) }, Ident { ident: "else", span: #5 bytes(344..612) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "gourd", span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "GoString", span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Joint, span: #5 bytes(344..612) }, Punct { ch: ':', spacing: Alone, span: #5 bytes(344..612) }, Ident { ident: "new", span: #5 bytes(344..612) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "none", suffix: None, span: #5 bytes(344..612) }], span: #5 bytes(344..612) }], span: #5 bytes(344..612) }] }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertByte(x int) byte { return x.(byte) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertByte
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(1458..1459) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: byte { return x.(byte) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(byte) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(byte)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(byte)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[u8]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[u8]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goReplace() string
[INFO] [stderr] { return strings.Replace("hello world world", "world", "rust", 2) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goReplace
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return strings.Replac (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.Replace("hello world world", "world", "rust", 2) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.Replace("hello world world", "world", "rust", 2)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.Replace("hello world world", "world", "rust", 2)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Replace.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goReplaceAll() string { return strings.ReplaceAll("aaa", "a", "b") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goReplaceAll
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return strings.Replac (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.ReplaceAll("aaa", "a", "b") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.ReplaceAll("aaa", "a", "b")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.ReplaceAll("aaa", "a", "b")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(ReplaceAll.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goHasPrefix() bool { return strings.HasPrefix("hello world", "hello") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goHasPrefix
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: bool { return strings.HasPrefi (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.HasPrefix("hello world", "hello") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.HasPrefix("hello world", "hello")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.HasPrefix("hello world", "hello")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[bool]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(HasPrefix.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[bool]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goHasSuffix() bool { return strings.HasSuffix("hello world", "world") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goHasSuffix
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: bool { return strings.HasSuffi (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.HasSuffix("hello world", "world") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.HasSuffix("hello world", "world")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.HasSuffix("hello world", "world")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[bool]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(HasSuffix.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[bool]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goContains() bool { return strings.Contains("hello world", "world") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goContains
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: bool { return strings.Contains (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.Contains("hello world", "world") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.Contains("hello world", "world")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.Contains("hello world", "world")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[bool]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Contains.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[bool]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goJoin() string { return strings.Join(["a", "b", "c"], ",") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goJoin
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return strings.Join([ (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.Join(["a", "b", "c"], ",") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.Join(["a", "b", "c"], ",")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.Join(["a", "b", "c"], ",")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Join.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSplit() [] string { return strings.Split("a,b,c", ",") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSplit
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] string { return strings.Spl (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.Split("a,b,c", ",") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.Split("a,b,c", ",")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.Split("a,b,c", ",")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < :: gourd :: GoString >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Split.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < :: gourd :: GoString >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goIndex() int { return strings.Index("hello world", "world") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goIndex
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return strings.Index("he (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.Index("hello world", "world") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.Index("hello world", "world")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.Index("hello world", "world")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Index.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTrim() string { return strings.Trim("  hello  ", " ") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTrim
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return strings.Trim(" (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.Trim("  hello  ", " ") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.Trim("  hello  ", " ")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.Trim("  hello  ", " ")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Trim.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goToUpper() string { return strings.ToUpper("hello") }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goToUpper
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return strings.ToUppe (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return strings.ToUpper("hello") }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return strings.ToUpper("hello")
[INFO] [stderr] [DEBUG parse_hir_statement] input: return strings.ToUpper("hello")
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(ToUpper.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func noSelector(ok bool, ready bool) string
[INFO] [stderr] { return switch { case ok: "ok" case ready: "ready" default: "none" } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: noSelector
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: bool, ready bool (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: bool (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ok", span: #0 bytes(639..641) }, HirType { kind: Bool }), (Ident { ident: "ready", span: #0 bytes(648..653) }, HirType { kind: Bool })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return switch { case  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return switch { case ok: "ok" case ready: "ready" default: "none" } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return switch { case ok: "ok" case ready: "ready" default: "none" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return switch { case ok: "ok" case ready: "ready" default: "none" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: "ok" case ready : "ready" default : "none"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "ready" default : "none"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "none"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: SwitchReturn { tokens: TokenStream [Ident { ident: "if", span: #8 bytes(613..820) }, Ident { ident: "ok", span: #0 bytes(706..708) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "gourd", span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "GoString", span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "new", span: #8 bytes(613..820) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "ok", suffix: None, span: #8 bytes(613..820) }], span: #8 bytes(613..820) }], span: #8 bytes(613..820) }, Ident { ident: "else", span: #8 bytes(613..820) }, Ident { ident: "if", span: #8 bytes(613..820) }, Ident { ident: "ready", span: #0 bytes(740..745) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "gourd", span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "GoString", span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "new", span: #8 bytes(613..820) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "ready", suffix: None, span: #8 bytes(613..820) }], span: #8 bytes(613..820) }], span: #8 bytes(613..820) }, Ident { ident: "else", span: #8 bytes(613..820) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "gourd", span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "GoString", span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Joint, span: #8 bytes(613..820) }, Punct { ch: ':', spacing: Alone, span: #8 bytes(613..820) }, Ident { ident: "new", span: #8 bytes(613..820) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "none", suffix: None, span: #8 bytes(613..820) }], span: #8 bytes(613..820) }], span: #8 bytes(613..820) }] }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func intCase(x int) string
[INFO] [stderr] { return switch x { case 42: "the answer" case 0: "zero" default: "other" } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: intCase
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(1234..1235) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string
[INFO] [stderr] { return switch x { cas (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return switch x { case 42: "the answer" case 0: "zero" default: "other" } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return switch x { case 42: "the answer" case 0: "zero" default: "other" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return switch x { case 42: "the answer" case 0: "zero" default: "other" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: "the answer" case 0 : "zero" default : "other"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "zero" default : "other"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "other"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: SwitchReturn { tokens: TokenStream [Ident { ident: "match", span: #11 bytes(947..1210) }, Ident { ident: "x", span: #0 bytes(1272..1273) }, Group { delimiter: Brace, stream: TokenStream [Literal { kind: Integer, symbol: "42", suffix: None, span: #11 bytes(947..1210) }, Punct { ch: '=', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: '>', spacing: Alone, span: #11 bytes(947..1210) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "gourd", span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "GoString", span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "new", span: #11 bytes(947..1210) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "the answer", suffix: None, span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }, Literal { kind: Integer, symbol: "0", suffix: None, span: #11 bytes(947..1210) }, Punct { ch: '=', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: '>', spacing: Alone, span: #11 bytes(947..1210) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "gourd", span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "GoString", span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "new", span: #11 bytes(947..1210) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "zero", suffix: None, span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }, Punct { ch: ',', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "_", span: #11 bytes(947..1210) }, Punct { ch: '=', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: '>', spacing: Alone, span: #11 bytes(947..1210) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "gourd", span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "GoString", span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Joint, span: #11 bytes(947..1210) }, Punct { ch: ':', spacing: Alone, span: #11 bytes(947..1210) }, Ident { ident: "new", span: #11 bytes(947..1210) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "other", suffix: None, span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }], span: #11 bytes(947..1210) }] }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTimeNow() int64 { return time.Now() }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTimeNow
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int64 { return time.Now() } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return time.Now() }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return time.Now()
[INFO] [stderr] [DEBUG parse_hir_statement] input: return time.Now()
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i64]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MethodCall(Now.() }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i64]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goStructReturn() Point { return Point{x: 1, y: 2} }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goStructReturn
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: Point { return Point{x: 1, y:  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return Point{x: 1, y: 2} }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return Point { x: 1, y: 2 }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return Point { x: 1, y: 2 }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[Point]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: StructLit(Point) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[Point]
[INFO] [stderr] [DEBUG parse_hir_function] input: func intCase(x int) string
[INFO] [stderr] { return switch x { case 42: "the answer" case 0: "zero" default: "other" } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: intCase
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(1234..1235) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string
[INFO] [stderr] { return switch x { cas (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return switch x { case 42: "the answer" case 0: "zero" default: "other" } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return switch x { case 42: "the answer" case 0: "zero" default: "other" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return switch x { case 42: "the answer" case 0: "zero" default: "other" }
[INFO] [stderr] [DEBUG parse_hir_statement] input: "the answer" case 0 : "zero" default : "other"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "zero" default : "other"
[INFO] [stderr] [DEBUG parse_hir_statement] input: "other"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: SwitchReturn { tokens: TokenStream [Ident { ident: "match", span: #14 bytes(1211..1407) }, Ident { ident: "x", span: #0 bytes(1272..1273) }, Group { delimiter: Brace, stream: TokenStream [Literal { kind: Integer, symbol: "42", suffix: None, span: #14 bytes(1211..1407) }, Punct { ch: '=', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: '>', spacing: Alone, span: #14 bytes(1211..1407) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "gourd", span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "GoString", span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "new", span: #14 bytes(1211..1407) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "the answer", suffix: None, span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }, Literal { kind: Integer, symbol: "0", suffix: None, span: #14 bytes(1211..1407) }, Punct { ch: '=', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: '>', spacing: Alone, span: #14 bytes(1211..1407) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "gourd", span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "GoString", span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "new", span: #14 bytes(1211..1407) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "zero", suffix: None, span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }, Punct { ch: ',', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "_", span: #14 bytes(1211..1407) }, Punct { ch: '=', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: '>', spacing: Alone, span: #14 bytes(1211..1407) }, Group { delimiter: Brace, stream: TokenStream [Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "gourd", span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "GoString", span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Joint, span: #14 bytes(1211..1407) }, Punct { ch: ':', spacing: Alone, span: #14 bytes(1211..1407) }, Ident { ident: "new", span: #14 bytes(1211..1407) }, Group { delimiter: Parenthesis, stream: TokenStream [Literal { kind: Str, symbol: "other", suffix: None, span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }], span: #14 bytes(1211..1407) }] }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stdout] warning: function `test_noSelector` should have a snake case name
[INFO] [stdout]   --> gourd-macro/tests/switch_extended.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn test_noSelector() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_no_selector`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_intCase` should have a snake case name
[INFO] [stdout]   --> gourd-macro/tests/switch_extended.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn test_intCase() {
[INFO] [stdout]    |    ^^^^^^^^^^^^ help: convert the identifier to snake case: `test_int_case`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goTypeAssertRune(x int) rune { return x.(rune) }
[INFO] [stdout] warning: unused import: `std::convert::From`
[INFO] [stdout]   --> gourd-macro/tests/package_functions.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert::From;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goTypeAssertRune
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(1699..1700) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: rune { return x.(rune) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(rune) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(rune)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(rune)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[char]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[char]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goNestedStructs() Outer { return Outer{inner: Inner{x: 1}} }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goNestedStructs
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: Outer { return Outer{inner: In (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return Outer{inner: Inner{x: 1}} }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return Outer { inner: Inner{x: 1} }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return Outer { inner: Inner{x: 1} }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[Outer]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: StructLit(Outer) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[Outer]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goShorthand2(a, b int) int { return a + b }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goShorthand2
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(276..277) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(279..280) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goCopySlice() int
[INFO] [stderr] {
[INFO] [stderr]     dst := []int{1, 2, 3, 4, 5} src := []int{10, 20} result := copy(dst, src)
[INFO] [stderr]     return result
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goCopySlice
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     dst := []int{1, 2, 3 (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     dst := []int{1, 2, 3, 4, 5} src := []int{10, 20} result := copy(dst, src)
[INFO] [stderr]     return result
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: dst := [] int { 1, 2, 3, 4, 5 } src := [] int { 10, 20 } result :=
[INFO] [stderr] copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: dst := [] int { 1, 2, 3, 4, 5 } src := [] int { 10, 20 } result :=
[INFO] [stderr] copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: src := [] int { 10, 20 } result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: src := [] int { 10, 20 } result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #4: return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: return result
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "dst", span: #0 bytes(290..293) }, mutable: true, value: HirExpr { kind: SliceLiteral(5 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "src", span: #0 bytes(326..329) }, mutable: true, value: HirExpr { kind: SliceLiteral(2 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(355..361) }, mutable: true, value: HirExpr { kind: Copy(_) }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(result) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goStructInLet() string { p := Point{x: 1, y: 2} return "ok" }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goStructInLet
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { p := Point{x: 1, y: 2 (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { p := Point{x: 1, y: 2} return "ok" }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: p := Point { x: 1, y: 2 } return "ok"
[INFO] [stderr] [DEBUG parse_hir_statement] input: p := Point { x: 1, y: 2 } return "ok"
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return "ok"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "ok"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "p", span: #0 bytes(1465..1466) }, mutable: true, value: HirExpr { kind: StructLit(Point) }, type_hint: Some(HirType { kind: Unknown("p") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(StringTy("ok")) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goNestedTypeAssert(x int) int { return x.(int).(int) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goNestedTypeAssert
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "x", span: #0 bytes(1941..1942) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return x.(int).(int) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x.(int).(int) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x.(int).(int)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x.(int).(int)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeAssert(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> gourd-macro/tests/struct_literals.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Point { pub x: i32, pub y: i32 }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goCopyPartial() int
[INFO] [stdout] warning: struct `Outer` is never constructed
[INFO] [stdout]   --> gourd-macro/tests/struct_literals.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct Outer { pub inner: Inner }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] {
[INFO] [stdout] warning: struct `Inner` is never constructed
[INFO] [stdout]   --> gourd-macro/tests/struct_literals.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Inner { pub x: i32 }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     dst := []int{0, 0, 0, 0, 0} src := []int{1, 2, 3, 4, 5, 6} result :=
[INFO] [stderr]     copy(dst, src) return result
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goCopyPartial
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     dst := []int{0, 0, 0 (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     dst := []int{0, 0, 0, 0, 0} src := []int{1, 2, 3, 4, 5, 6} result :=
[INFO] [stderr]     copy(dst, src) return result
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: dst := [] int { 0, 0, 0, 0, 0 } src := [] int { 1, 2, 3, 4, 5, 6 } result :=
[INFO] [stderr] copy(dst, src) return r
[INFO] [stderr] [DEBUG parse_hir_statement] input: dst := [] int { 0, 0, 0, 0, 0 } src := [] int { 1, 2, 3, 4, 5, 6 } result :=
[INFO] [stderr] copy(dst, src) return r
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: src := [] int { 1, 2, 3, 4, 5, 6 } result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: src := [] int { 1, 2, 3, 4, 5, 6 } result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := copy(dst, src) return result
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #4: return result
[INFO] [stderr] [DEBUG parse_hir_statement] input: return result
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "dst", span: #0 bytes(456..459) }, mutable: true, value: HirExpr { kind: SliceLiteral(5 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "src", span: #0 bytes(492..495) }, mutable: true, value: HirExpr { kind: SliceLiteral(6 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(531..537) }, mutable: true, value: HirExpr { kind: Copy(_) }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(result) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goShorthand2(a, b int) int { return a + b }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goShorthand2
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(276..277) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(279..280) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goShorthand3(a, b, c int) int { return a + b + c }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goShorthand3
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(615..616) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(618..619) }, HirType { kind: I32 }), (Ident { ident: "c", span: #0 bytes(621..622) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b + c } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b + c }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b + c
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b + c
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goDeleteFromMap() int
[INFO] [stderr] { m := map[string]int{"a": 1, "b": 2, "c": 3} delete(m, "b") return len(m) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goDeleteFromMap
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] { m := map[string]int{"a": (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { m := map[string]int{"a": 1, "b": 2, "c": 3} delete(m, "b") return len(m) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: m := map [string] int { "a": 1, "b": 2, "c": 3 } delete(m, "b") return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: m := map [string] int { "a": 1, "b": 2, "c": 3 } delete(m, "b") return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: delete(m, "b") return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: delete(m, "b") return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(m)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "m", span: #0 bytes(831..832) }, mutable: true, value: HirExpr { kind: Map(_) }, type_hint: Some(HirType { kind: Map(HirType { kind: StringTy }, HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Expr(HirExpr { kind: Delete(_) })
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goDeleteNonexistent() int
[INFO] [stderr] { m := map[string]int{"a": 1, "b": 2} delete(m, "z") return len(m) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goDeleteNonexistent
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { m := map[string]int{"a": (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { m := map[string]int{"a": 1, "b": 2} delete(m, "z") return len(m) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: m := map [string] int { "a": 1, "b": 2 } delete(m, "z") return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: m := map [string] int { "a": 1, "b": 2 } delete(m, "z") return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: delete(m, "z") return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: delete(m, "z") return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(m)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "m", span: #0 bytes(980..981) }, mutable: true, value: HirExpr { kind: Map(_) }, type_hint: Some(HirType { kind: Map(HirType { kind: StringTy }, HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Expr(HirExpr { kind: Delete(_) })
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendSingle() int
[INFO] [stderr] { s := []int{1, 2, 3} result := append(s, 4) return len(result) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendSingle
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { s := []int{1, 2, 3} resu (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { s := []int{1, 2, 3} result := append(s, 4) return len(result) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: s := [] int { 1, 2, 3 } result := append(s, 4) return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: s := [] int { 1, 2, 3 } result := append(s, 4) return len(result)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: result := append(s, 4) return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := append(s, 4) return len(result)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(result)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "s", span: #0 bytes(1313..1314) }, mutable: true, value: HirExpr { kind: SliceLiteral(3 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(1341..1347) }, mutable: true, value: HirExpr { kind: Append(_) }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goShorthand3(a, b, c int) int { return a + b + c }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goShorthand3
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(615..616) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(618..619) }, HirType { kind: I32 }), (Ident { ident: "c", span: #0 bytes(621..622) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b + c } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b + c }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b + c
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b + c
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMakeChannel() chan int { return make(chan int) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMakeChannel
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int { return make(chan in (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return make(chan int) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return make(chan int)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return make(chan int)
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoChannel < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Make(Channel(HirType { kind: I32 })) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoChannel < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendMultiple() int
[INFO] [stderr] { s := []int{1, 2, 3} result := append(s, 4, 5, 6) return len(result) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendMultiple
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { s := []int{1, 2, 3} resu (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { s := []int{1, 2, 3} result := append(s, 4, 5, 6) return len(result) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: s := [] int { 1, 2, 3 } result := append(s, 4, 5, 6) return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: s := [] int { 1, 2, 3 } result := append(s, 4, 5, 6) return len(result)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: result := append(s, 4, 5, 6) return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := append(s, 4, 5, 6) return len(result)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(result)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "s", span: #0 bytes(1448..1449) }, mutable: true, value: HirExpr { kind: SliceLiteral(3 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(1476..1482) }, mutable: true, value: HirExpr { kind: Append(_) }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSumSlice(data []int) int
[INFO] [stderr] {
[INFO] [stderr]     sum := 0 for i, v := range data { if i >= 0 && v > 0 { sum = sum + v } }
[INFO] [stderr]     return sum
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSumSlice
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "data", span: #0 bytes(203..207) }, HirType { kind: SliceRef(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     sum := 0 for i, v := (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     sum := 0 for i, v := range data { if i >= 0 && v > 0 { sum = sum + v } }
[INFO] [stderr]     return sum
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: sum := 0 for i, v := range data { if i >= 0 && v > 0 { sum = sum + v } }
[INFO] [stderr] return sum
[INFO] [stderr] [DEBUG parse_hir_statement] input: sum := 0 for i, v := range data { if i >= 0 && v > 0 { sum = sum + v } }
[INFO] [stderr] return sum
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: for i, v := range data { if i >= 0 && v > 0 { sum = sum + v } } return sum
[INFO] [stderr] [DEBUG parse_hir_statement] input: for i, v := range data { if i >= 0 && v > 0 { sum = sum + v } } return sum
[INFO] [stderr] [DEBUG parse_hir_statement] input: if i >= 0 && v > 0 { sum = sum + v }
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { sum = sum + v }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: sum = sum + v
[INFO] [stderr] [DEBUG parse_hir_statement] input: sum = sum + v
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return sum
[INFO] [stderr] [DEBUG parse_hir_statement] input: return sum
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "sum", span: #0 bytes(229..232) }, mutable: true, value: HirExpr { kind: Literal(Int(0)) }, type_hint: Some(HirType { kind: I32 }) }
[INFO] [stderr] DEBUG: No fix applied, using default: ForRange { index_name: Some(Ident { ident: "i", span: #0 bytes(250..251) }), value_name: Ident { ident: "v", span: #0 bytes(253..254) }, iterable: HirExpr { kind: Identifier(data) }, body: HirBlock { stmts: [If { cond: HirExpr { kind: Binary(And) }, then_body: HirBlock { stmts: [Assign { target: HirExpr { kind: Identifier(sum) }, value: HirExpr { kind: Binary(Add) } }] }, else_body: None }] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(sum) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendEmpty() int
[INFO] [stderr] { s := []int{1, 2, 3} result := append(s) return len(result) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendEmpty
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { s := []int{1, 2, 3} resu (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { s := []int{1, 2, 3} result := append(s) return len(result) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: s := [] int { 1, 2, 3 } result := append(s) return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: s := [] int { 1, 2, 3 } result := append(s) return len(result)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: result := append(s) return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := append(s) return len(result)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return len(result)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(result)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "s", span: #0 bytes(1586..1587) }, mutable: true, value: HirExpr { kind: SliceLiteral(3 elems) }, type_hint: Some(HirType { kind: Slice(HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(1614..1620) }, mutable: true, value: HirExpr { kind: Append(_) }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMin(a int, b int) int { return min(a, b) }
[INFO] [stdout] warning: unused import: `std::convert::From`
[INFO] [stdout]  --> gourd-macro/tests/std_copy_delete_append.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::convert::From;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMin
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, b int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(43..44) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(50..51) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return min(a, b) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return min(a, b) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return min(a, b)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return min(a, b)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MinMax(min) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMakeBufferedChannel() chan int { return make(chan int, 10) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMakeBufferedChannel
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int { return make(chan in (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return make(chan int, 10) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return make(chan int, 10)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return make(chan int, 10)
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int, 10 (peek_ident=true, peek_bracket=false)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoChannel < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Make(ChannelWithCap(HirType { kind: I32 }, HirExpr { kind: Literal(Int(10)) })) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoChannel < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goCountPositive(data []int) int
[INFO] [stderr] {
[INFO] [stderr]     count := 0 for i := range data { if data[i] > 0 { count = count + 1 } }
[INFO] [stderr]     return count
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goCountPositive
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "data", span: #0 bytes(568..572) }, HirType { kind: SliceRef(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     count := 0 for i :=  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     count := 0 for i := range data { if data[i] > 0 { count = count + 1 } }
[INFO] [stderr]     return count
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: count := 0 for i := range data { if data[i] > 0 { count = count + 1 } } return
[INFO] [stderr] count
[INFO] [stderr] [DEBUG parse_hir_statement] input: count := 0 for i := range data { if data[i] > 0 { count = count + 1 } } return
[INFO] [stderr] count
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: for i := range data { if data[i] > 0 { count = count + 1 } } return count
[INFO] [stderr] [DEBUG parse_hir_statement] input: for i := range data { if data[i] > 0 { count = count + 1 } } return count
[INFO] [stderr] [DEBUG parse_hir_statement] input: if data [i] > 0 { count = count + 1 }
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { count = count + 1 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: count = count + 1
[INFO] [stderr] [DEBUG parse_hir_statement] input: count = count + 1
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return count
[INFO] [stderr] [DEBUG parse_hir_statement] input: return count
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "count", span: #0 bytes(594..599) }, mutable: true, value: HirExpr { kind: Literal(Int(0)) }, type_hint: Some(HirType { kind: I32 }) }
[INFO] [stderr] DEBUG: No fix applied, using default: ForRange { index_name: Some(Ident { ident: "i", span: #0 bytes(617..618) }), value_name: Ident { ident: "_", span: #8 bytes(537..750) }, iterable: HirExpr { kind: Identifier(data) }, body: HirBlock { stmts: [If { cond: HirExpr { kind: Binary(Gt) }, then_body: HirBlock { stmts: [Assign { target: HirExpr { kind: Identifier(count) }, value: HirExpr { kind: Binary(Add) } }] }, else_body: None }] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(count) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMax(a int, b int) int { return max(a, b) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMax
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, b int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(118..119) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(125..126) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return max(a, b) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return max(a, b) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return max(a, b)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return max(a, b)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: MinMax(max) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goComplexBasic() Complex128 { c := complex(1.0, 2.0) return c }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goComplexBasic
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: Complex128 { c := complex(1.0, (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { c := complex(1.0, 2.0) return c }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: c := complex(1.0, 2.0) return c
[INFO] [stderr] [DEBUG parse_hir_statement] input: c := complex(1.0, 2.0) return c
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return c
[INFO] [stderr] [DEBUG parse_hir_statement] input: return c
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: prelude :: Complex128]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "c", span: #0 bytes(173..174) }, mutable: true, value: HirExpr { kind: Complex128(_) }, type_hint: Some(HirType { kind: Unknown("c") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(c) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: prelude :: Complex128]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goComplexExtractParts() float64
[INFO] [stderr] { c := complex(3.0, 4.0) r := real(c) i := imag(c) return r + i }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goComplexExtractParts
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: float64 { c := complex(3.0, 4. (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { c := complex(3.0, 4.0) r := real(c) i := imag(c) return r + i }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: c := complex(3.0, 4.0) r := real(c) i := imag(c) return r + i
[INFO] [stderr] [DEBUG parse_hir_statement] input: c := complex(3.0, 4.0) r := real(c) i := imag(c) return r + i
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: r := real(c) i := imag(c) return r + i
[INFO] [stderr] [DEBUG parse_hir_statement] input: r := real(c) i := imag(c) return r + i
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: i := imag(c) return r + i
[INFO] [stderr] [DEBUG parse_hir_statement] input: i := imag(c) return r + i
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #4: return r + i
[INFO] [stderr] [DEBUG parse_hir_statement] input: return r + i
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[f64]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "c", span: #0 bytes(317..318) }, mutable: true, value: HirExpr { kind: Complex128(_) }, type_hint: Some(HirType { kind: Unknown("c") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "r", span: #0 bytes(348..349) }, mutable: true, value: HirExpr { kind: ComplexReal(_) }, type_hint: Some(HirType { kind: Unknown("r") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "i", span: #0 bytes(369..370) }, mutable: true, value: HirExpr { kind: ComplexImag(_) }, type_hint: Some(HirType { kind: Unknown("i") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[f64]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMakeStringChannel() chan string { return make(chan string, 5) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMakeStringChannel
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: chan string { return make(chan (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return make(chan string, 5) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return make(chan string, 5)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return make(chan string, 5)
[INFO] [stderr] [DEBUG parse_hir_type] input: chan string, 5 (peek_ident=true, peek_bracket=false)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoChannel < :: gourd :: GoString >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Make(ChannelWithCap(HirType { kind: StringTy }, HirExpr { kind: Literal(Int(5)) })) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoChannel < :: gourd :: GoString >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goComplexArithmetic() float64
[INFO] [stderr] {
[INFO] [stderr]     a := complex(1.0, 2.0) b := complex(3.0, 4.0) c := a + b return real(c) +
[INFO] [stderr]     imag(c)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goComplexArithmetic
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: float64
[INFO] [stderr] {
[INFO] [stderr]     a := complex(1.0 (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     a := complex(1.0, 2.0) b := complex(3.0, 4.0) c := a + b return real(c) +
[INFO] [stderr]     imag(c)
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: a := complex(1.0, 2.0) b := complex(3.0, 4.0) c := a + b return real(c) +
[INFO] [stderr] imag(c)
[INFO] [stderr] [DEBUG parse_hir_statement] input: a := complex(1.0, 2.0) b := complex(3.0, 4.0) c := a + b return real(c) +
[INFO] [stderr] imag(c)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: b := complex(3.0, 4.0) c := a + b return real(c) + imag(c)
[INFO] [stderr] [DEBUG parse_hir_statement] input: b := complex(3.0, 4.0) c := a + b return real(c) + imag(c)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: c := a + b return real(c) + imag(c)
[INFO] [stderr] [DEBUG parse_hir_statement] input: c := a + b return real(c) + imag(c)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #4: return real(c) + imag(c)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return real(c) + imag(c)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[f64]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "a", span: #0 bytes(531..532) }, mutable: true, value: HirExpr { kind: Complex128(_) }, type_hint: Some(HirType { kind: Unknown("a") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "b", span: #0 bytes(562..563) }, mutable: true, value: HirExpr { kind: Complex128(_) }, type_hint: Some(HirType { kind: Unknown("b") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "c", span: #0 bytes(593..594) }, mutable: true, value: HirExpr { kind: Binary(Add) }, type_hint: Some(HirType { kind: Unknown("c") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[f64]
[INFO] [stdout] warning: unused imports: `Complex128` and `Complex64`
[INFO] [stdout]  --> gourd-macro/tests/complex_builtin_test.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gourd::prelude::{Complex64, Complex128};
[INFO] [stdout]   |                      ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSkipFirst(data []int) int { for range data {} return len(data) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSkipFirst
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "data", span: #0 bytes(920..924) }, HirType { kind: SliceRef(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { for range data {} return (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { for range data {} return len(data) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: for range data {} return len(data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: for range data {} return len(data)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return len(data)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(data)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: ForRange { index_name: None, value_name: Ident { ident: "_", span: #11 bytes(893..1039) }, iterable: HirExpr { kind: Identifier(data) }, body: HirBlock { stmts: [] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goPanicMsg() int { panic("something went wrong") return 0 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goPanicMsg
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { panic("something went wr (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { panic("something went wrong") return 0 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: panic("something went wrong") return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: panic("something went wrong") return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Panic(HirExpr { kind: Literal(StringTy("something went wrong")) })
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(0)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_get`: Use GoMap::get() instead
[INFO] [stdout]  --> gourd-macro/tests/prelude_map_ops.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use gourd::prelude::{map_get, map_set_mut, map_set_val};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_mut`: Use GoMap::set() instead
[INFO] [stdout]  --> gourd-macro/tests/prelude_map_ops.rs:3:31
[INFO] [stdout]   |
[INFO] [stdout] 3 | use gourd::prelude::{map_get, map_set_mut, map_set_val};
[INFO] [stdout]   |                               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_val`: Use GoMap::set() then dereference, or insert directly
[INFO] [stdout]  --> gourd-macro/tests/prelude_map_ops.rs:3:44
[INFO] [stdout]   |
[INFO] [stdout] 3 | use gourd::prelude::{map_get, map_set_mut, map_set_val};
[INFO] [stdout]   |                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_get`: Use GoMap::get() instead
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     assert_eq!(map_get(&map, "a".to_string()), 42);
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_get`: Use GoMap::get() instead
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:12:16
[INFO] [stdout]    |
[INFO] [stdout] 12 |     assert_eq!(map_get(&map, "b".to_string()), 7);
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_get`: Use GoMap::get() instead
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:13:16
[INFO] [stdout]    |
[INFO] [stdout] 13 |     assert_eq!(map_get(&map, "c".to_string()), 0); // default for missing key
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_mut`: Use GoMap::set() instead
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 |     assert_eq!(*map_set_mut(&mut map, "b".to_string()), 0);
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_mut`: Use GoMap::set() instead
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:26:17
[INFO] [stdout]    |
[INFO] [stdout] 26 |     assert_eq!(*map_set_mut(&mut map, "a".to_string()), 42);
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_mut`: Use GoMap::set() instead
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:29:6
[INFO] [stdout]    |
[INFO] [stdout] 29 |     *map_set_mut(&mut map, "a".to_string()) += 10;
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_val`: Use GoMap::set() then dereference, or insert directly
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     map_set_val(&mut map, "a".to_string(), 42);
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `gourd::prelude::map_set_val`: Use GoMap::set() then dereference, or insert directly
[INFO] [stdout]   --> gourd-macro/tests/prelude_map_ops.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     map_set_val(&mut map, "b".to_string(), 7);
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMakeMap() map [string] int { return make(map[string]int) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMakeMap
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: map [string] int { return make (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return make(map[string]int) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return make(map[string]int)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return make(map[string]int)
[INFO] [stderr] [DEBUG parse_hir_type] input: map [string] int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoMap < :: gourd :: GoString, i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Make(Map(HirType { kind: StringTy }, HirType { kind: I32 })) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoMap < :: gourd :: GoString, i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSum(nums ...int) int
[INFO] [stderr] {
[INFO] [stderr]     total := 0 for i, num := range nums { if i >= 0 { total = total + num } }
[INFO] [stderr]     return total
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSum
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "nums", span: #0 bytes(159..163) }, HirType { kind: SliceRef(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     total := 0 for i, nu (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     total := 0 for i, num := range nums { if i >= 0 { total = total + num } }
[INFO] [stderr]     return total
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: total := 0 for i, num := range nums { if i >= 0 { total = total + num } }
[INFO] [stderr] return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: total := 0 for i, num := range nums { if i >= 0 { total = total + num } }
[INFO] [stderr] return total
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: for i, num := range nums { if i >= 0 { total = total + num } } return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: for i, num := range nums { if i >= 0 { total = total + num } } return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: if i >= 0 { total = total + num }
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { total = total + num }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: total = total + num
[INFO] [stderr] [DEBUG parse_hir_statement] input: total = total + num
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: return total
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "total", span: #0 bytes(186..191) }, mutable: true, value: HirExpr { kind: Literal(Int(0)) }, type_hint: Some(HirType { kind: I32 }) }
[INFO] [stderr] DEBUG: No fix applied, using default: ForRange { index_name: Some(Ident { ident: "i", span: #0 bytes(209..210) }), value_name: Ident { ident: "num", span: #0 bytes(212..215) }, iterable: HirExpr { kind: Identifier(nums) }, body: HirBlock { stmts: [If { cond: HirExpr { kind: Binary(Ge) }, then_body: HirBlock { stmts: [Assign { target: HirExpr { kind: Identifier(total) }, value: HirExpr { kind: Binary(Add) } }] }, else_body: None }] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(total) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goPanicEmpty() int { panic() return 0 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goPanicEmpty
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { panic() return 0 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { panic() return 0 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: panic() return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: panic() return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Panic(HirExpr { kind: Literal(StringTy("")) })
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(0)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAdd() int { return 42; }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAdd
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return 42; } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 42; }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 42;
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 42;
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(42)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goCount(nums ...int) int { count := len(nums) return count }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goCount
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "nums", span: #0 bytes(476..480) }, HirType { kind: SliceRef(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { count := len(nums) retur (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { count := len(nums) return count }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: count := len(nums) return count
[INFO] [stderr] [DEBUG parse_hir_statement] input: count := len(nums) return count
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return count
[INFO] [stderr] [DEBUG parse_hir_statement] input: return count
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "count", span: #0 bytes(503..508) }, mutable: true, value: HirExpr { kind: Len(_) }, type_hint: Some(HirType { kind: I32 }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(count) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMakeSlice() [] int { return make([]int, 5) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMakeSlice
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return make([]int, 5) (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return make([]int, 5) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return make([]int, 5)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return make([]int, 5)
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int, 5 (peek_ident=false, peek_bracket=true)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Make(Slice(HirType { kind: I32 }, HirExpr { kind: Literal(Int(5)) })) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goFilter(min int, nums ...int) int
[INFO] [stderr] {
[INFO] [stderr]     total := 0 for i, num := range nums
[INFO] [stderr]     { if num > min { total = total + num } } return total
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goFilter
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, nums ... int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "min", span: #0 bytes(687..690) }, HirType { kind: I32 }), (Ident { ident: "nums", span: #0 bytes(696..700) }, HirType { kind: SliceRef(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int
[INFO] [stderr] {
[INFO] [stderr]     total := 0 for i, nu (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     total := 0 for i, num := range nums
[INFO] [stderr]     { if num > min { total = total + num } } return total
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: total := 0 for i, num := range nums { if num > min { total = total + num } }
[INFO] [stderr] return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: total := 0 for i, num := range nums { if num > min { total = total + num } }
[INFO] [stderr] return total
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: for i, num := range nums { if num > min { total = total + num } } return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: for i, num := range nums { if num > min { total = total + num } } return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: if num > min { total = total + num }
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { total = total + num }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: total = total + num
[INFO] [stderr] [DEBUG parse_hir_statement] input: total = total + num
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return total
[INFO] [stderr] [DEBUG parse_hir_statement] input: return total
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "total", span: #0 bytes(723..728) }, mutable: true, value: HirExpr { kind: Literal(Int(0)) }, type_hint: Some(HirType { kind: I32 }) }
[INFO] [stderr] DEBUG: No fix applied, using default: ForRange { index_name: Some(Ident { ident: "i", span: #0 bytes(746..747) }), value_name: Ident { ident: "num", span: #0 bytes(749..752) }, iterable: HirExpr { kind: Identifier(nums) }, body: HirBlock { stmts: [If { cond: HirExpr { kind: Binary(Gt) }, then_body: HirBlock { stmts: [Assign { target: HirExpr { kind: Identifier(total) }, value: HirExpr { kind: Binary(Add) } }] }, else_body: None }] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(total) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAdd() int { return 42; }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAdd
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return 42; } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 42; }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 42;
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 42;
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(42)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSum(a int, b int) int { return a + b; }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSum
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, b int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(597..598) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(604..605) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b; } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b; }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b;
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b;
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goPanicOnError(n int) int
[INFO] [stderr] { if n < 0 { panic("negative number not allowed") } return n }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goPanicOnError
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(535..536) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { if n < 0 { panic("negati (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { if n < 0 { panic("negative number not allowed") } return n }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: if n < 0 { panic("negative number not allowed") } return n
[INFO] [stderr] [DEBUG parse_hir_statement] input: if n < 0 { panic("negative number not allowed") } return n
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { panic("negative number not allowed") } return n
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return n
[INFO] [stderr] [DEBUG parse_hir_statement] input: return n
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: If { cond: HirExpr { kind: Binary(Lt) }, then_body: HirBlock { stmts: [Expr(HirExpr { kind: Panic(_) })] }, else_body: None }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(n) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> gourd-macro/tests/panic_builtin.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | / go! {
[INFO] [stdout] 12 | |     func goPanicMsg() int {
[INFO] [stdout] 13 | |         panic("something went wrong")
[INFO] [stdout] 14 | |         return 0
[INFO] [stdout] 15 | |     }
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | | ^
[INFO] [stdout]    | | |
[INFO] [stdout]    | |_unreachable statement
[INFO] [stdout]    |   any code following this expression is unreachable
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]    = note: this warning originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> gourd-macro/tests/panic_builtin.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | / go! {
[INFO] [stdout] 20 | |     func goPanicEmpty() int {
[INFO] [stdout] 21 | |         panic()
[INFO] [stdout] 22 | |         return 0
[INFO] [stdout] 23 | |     }
[INFO] [stdout] 24 | | }
[INFO] [stdout]    | | ^
[INFO] [stdout]    | | |
[INFO] [stdout]    | |_unreachable statement
[INFO] [stdout]    |   any code following this expression is unreachable
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSelectDefault(ch chan int) { select { default: } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSelectDefault
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ch", span: #0 bytes(182..184) }, HirType { kind: Channel(HirType { kind: I32 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 0
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { select { default: } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: select { default: }
[INFO] [stderr] [DEBUG parse_hir_statement] input: select { default: }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[]
[INFO] [stderr] DEBUG: No fix applied, using default: Select { cases: [], default_body: Some(HirBlock { stmts: [] }) }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSum(a int, b int) int { return a + b; }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSum
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, b int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(597..598) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(604..605) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b; } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b; }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b;
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b;
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goNewWithDefault() int { p := new(Point) return p.x }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goNewWithDefault
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { p := new(Point) return p (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { p := new(Point) return p.x }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: p := new(Point) return p.x
[INFO] [stderr] [DEBUG parse_hir_statement] input: p := new(Point) return p.x
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return p.x
[INFO] [stderr] [DEBUG parse_hir_statement] input: return p.x
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "p", span: #0 bytes(501..502) }, mutable: true, value: HirExpr { kind: New(_) }, type_hint: Some(HirType { kind: Unknown("p") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: FieldAccess(x) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAbs(n int) int { ret := n if n < 0 { ret = -ret } return ret }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAbs
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(1072..1073) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { ret := n if n < 0 { ret  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { ret := n if n < 0 { ret = -ret } return ret }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: ret := n if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: ret := n if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: ret = - ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: ret = - ret
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: return ret
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "ret", span: #0 bytes(1093..1096) }, mutable: true, value: HirExpr { kind: Identifier(n) }, type_hint: Some(HirType { kind: Unknown("ret") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: If { cond: HirExpr { kind: Binary(Lt) }, then_body: HirBlock { stmts: [Assign { target: HirExpr { kind: Identifier(ret) }, value: HirExpr { kind: Unary(Neg) } }] }, else_body: None }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(ret) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSelectSend(ch chan int, value int) { select { case ch <- value: } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSelectSend
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int, value int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ch", span: #0 bytes(313..315) }, HirType { kind: Channel(HirType { kind: I32 }) }), (Ident { ident: "value", span: #0 bytes(326..331) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 0
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { select { case ch <- value: } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: select { case ch <- value: }
[INFO] [stderr] [DEBUG parse_hir_statement] input: select { case ch <- value: }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[]
[INFO] [stderr] DEBUG: No fix applied, using default: Select { cases: [Send { ch: HirExpr { kind: Identifier(ch) }, value: HirExpr { kind: Identifier(value) } }], default_body: None }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goRecoverNoPanic() string
[INFO] [stderr] { result := recover() if result != nil { return "caught" } return "no panic" }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goRecoverNoPanic
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string
[INFO] [stderr] { result := recover() i (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { result := recover() if result != nil { return "caught" } return "no panic" }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: result := recover() if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := recover() if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return "caught"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "caught"
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "no panic"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(167..173) }, mutable: true, value: HirExpr { kind: Recover }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: If { cond: HirExpr { kind: Binary(Ne) }, then_body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(StringTy("caught")) }))] }, else_body: None }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(StringTy("no panic")) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goNewInt() int { return new(int) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goNewInt
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return new(int) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return new(int) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return new(int)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return new(int)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: New(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goRecoverAfterPanic() string
[INFO] [stderr] {
[INFO] [stderr]     f := func() int { panic("oops") return 0 } f() result := recover() if
[INFO] [stderr]     result != nil { return "caught" } return "no panic"
[INFO] [stderr] }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goRecoverAfterPanic
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string
[INFO] [stderr] {
[INFO] [stderr]     f := func() int { (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: {
[INFO] [stderr]     f := func() int { panic("oops") return 0 } f() result := recover() if
[INFO] [stderr]     result != nil { return "caught" } return "no panic"
[INFO] [stderr] }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func() int { panic("oops") return 0 } f() result := recover() if result
[INFO] [stderr] != nil { return "caught
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func() int { panic("oops") return 0 } f() result := recover() if result
[INFO] [stderr] != nil { return "caught
[INFO] [stderr] [DEBUG parse_hir_type] input: int { panic("oops") return 0 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { panic("oops") return 0 } f() result := recover() if result != nil
[INFO] [stderr] { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: panic("oops") return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: panic("oops") return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: f() result := recover() if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: f() result := recover() if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: result := recover() if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: result := recover() if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #4: if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: if result != nil { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return "caught" } return "no panic"
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return "caught"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "caught"
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #5: return "no panic"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "no panic"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(583..584) }, params: [], body: HirBlock { stmts: [Panic(HirExpr { kind: Literal(StringTy("oops")) }), Return(Some(HirExpr { kind: Literal(Int(0)) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Expr(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 0 args) })
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "result", span: #0 bytes(678..684) }, mutable: true, value: HirExpr { kind: Recover }, type_hint: Some(HirType { kind: Unknown("result") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: If { cond: HirExpr { kind: Binary(Ne) }, then_body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(StringTy("caught")) }))] }, else_body: None }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(StringTy("no panic")) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> gourd-macro/tests/recover_builtin_test.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | / go! {
[INFO] [stdout] 21 | |     func goRecoverAfterPanic() string {
[INFO] [stdout] 22 | |         f := func() int {
[INFO] [stdout] 23 | |             panic("oops")
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | | }
[INFO] [stdout]    | | ^
[INFO] [stdout]    | | |
[INFO] [stdout]    | |_unreachable statement
[INFO] [stdout]    |   any code following this expression is unreachable
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]    = note: this warning originates in the macro `go` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goNewString() string { return new(string) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goNewString
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return new(string) } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return new(string) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return new(string)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return new(string)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: New(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stdout] warning: unused import: `std::convert::From`
[INFO] [stdout]  --> gourd-macro/tests/new_builtin.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::convert::From;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]  --> gourd-macro/tests/new_builtin.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct Point {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAbs(n int) int { ret := n if n < 0 { ret = -ret } return ret }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAbs
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(1072..1073) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { ret := n if n < 0 { ret  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { ret := n if n < 0 { ret = -ret } return ret }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: ret := n if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: ret := n if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: if n < 0 { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { ret = -ret } return ret
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: ret = - ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: ret = - ret
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return ret
[INFO] [stderr] [DEBUG parse_hir_statement] input: return ret
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "ret", span: #0 bytes(1093..1096) }, mutable: true, value: HirExpr { kind: Identifier(n) }, type_hint: Some(HirType { kind: Unknown("ret") }) }
[INFO] [stderr] DEBUG: No fix applied, using default: If { cond: HirExpr { kind: Binary(Lt) }, then_body: HirBlock { stmts: [Assign { target: HirExpr { kind: Identifier(ret) }, value: HirExpr { kind: Unary(Neg) } }] }, else_body: None }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Identifier(ret) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func isEven(n int) bool { return n % 2 == 0 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: isEven
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(2008..2009) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: bool { return n % 2 == 0 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return n % 2 == 0 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return n % 2 == 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return n % 2 == 0
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[bool]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Eq) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[bool]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSelectSendWithDefault(ch chan int, value int)
[INFO] [stderr] { select { case ch <- value: default: } }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSelectSendWithDefault
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: chan int, value int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "ch", span: #0 bytes(482..484) }, HirType { kind: Channel(HirType { kind: I32 }) }), (Ident { ident: "value", span: #0 bytes(495..500) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 0
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { select { case ch <- value: default: } }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: select { case ch <- value: default: }
[INFO] [stderr] [DEBUG parse_hir_statement] input: select { case ch <- value: default: }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[]
[INFO] [stderr] DEBUG: No fix applied, using default: Select { cases: [Send { ch: HirExpr { kind: Identifier(ch) }, value: HirExpr { kind: Identifier(value) } }], default_body: Some(HirBlock { stmts: [] }) }
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[]
[INFO] [stdout] warning: unused variable: `ch`
[INFO] [stdout]  --> gourd-macro/tests/select_builtin.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 |     func goSelectDefault(ch chan int) {
[INFO] [stdout]   |                          ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] [DEBUG parse_hir_function] input: func main() int { f := func() { return 0 } f() return 0 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: main
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { f := func() { return 0 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { f := func() { return 0 } f() return 0 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func() { return 0 } f() return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func() { return 0 } f() return 0
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 0 } f() return 0
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: f() return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: f() return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(979..980) }, params: [], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(Int(0)) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Expr(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 0 args) })
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(0)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func isEven(n int) bool { return n % 2 == 0 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: isEven
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "n", span: #0 bytes(2008..2009) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: bool { return n % 2 == 0 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return n % 2 == 0 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return n % 2 == 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return n % 2 == 0
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[bool]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Eq) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[bool]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goIncr() int { return 42 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goIncr
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return 42 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 42 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 42
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 42
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(42)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func main() int { f := func() { return 0 } f() return 0 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: main
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { f := func() { return 0 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { f := func() { return 0 } f() return 0 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func() { return 0 } f() return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func() { return 0 } f() return 0
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 0 } f() return 0
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: f() return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: f() return 0
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #3: return 0
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 0
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(781..782) }, params: [], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(Int(0)) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Expr(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 0 args) })
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(0)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func main() int
[INFO] [stderr] { add := func(x int, y int) int { return x + y } return add(1, 2) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: main
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { add := func(x int, y int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { add := func(x int, y int) int { return x + y } return add(1, 2) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: add := func(x int, y int) int { return x + y } return add(1, 2)
[INFO] [stderr] [DEBUG parse_hir_statement] input: add := func(x int, y int) int { return x + y } return add(1, 2)
[INFO] [stderr] [DEBUG parse_hir_type] input: int, y int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return x + y } return ad (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return x + y } return add(1, 2)
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return x + y
[INFO] [stderr] [DEBUG parse_hir_statement] input: return x + y
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return add(1, 2)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return add(1, 2)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "add", span: #0 bytes(501..504) }, params: [(Ident { ident: "x", span: #0 bytes(513..514) }, Some(HirType { kind: I32 })), (Ident { ident: "y", span: #0 bytes(520..521) }, Some(HirType { kind: I32 }))], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Binary(Add) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Call(func=HirExpr { kind: Identifier(add) }, 2 args) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendMultiple() [] int { return append([]int{1}, 2, 3, 4) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendMultiple
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return append([]int{1 (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return append([]int{1}, 2, 3, 4) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return append([]int{1}, 2, 3, 4)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return append([]int{1}, 2, 3, 4)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Append(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goIncr() int { return 42 }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goIncr
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return 42 } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 42 }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 42
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 42
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(Int(42)) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goStr(bytes []byte) string { return string(bytes) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goStr
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: [] byte (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "bytes", span: #0 bytes(6437..6442) }, HirType { kind: SliceRef(HirType { kind: U8 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return string(bytes)  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return string(bytes) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return string(bytes)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return string(bytes)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeConvert(string) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func main() int { f := func() int { return 42 } return f() }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: main
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { f := func() int { return (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { f := func() int { return 42 } return f() }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: f := func() int { return 42 } return f()
[INFO] [stderr] [DEBUG parse_hir_statement] input: f := func() int { return 42 } return f()
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return 42 } return f() (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return 42 } return f()
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return 42
[INFO] [stderr] [DEBUG parse_hir_statement] input: return 42
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return f()
[INFO] [stderr] [DEBUG parse_hir_statement] input: return f()
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Closure { name: Ident { ident: "f", span: #0 bytes(213..214) }, params: [], body: HirBlock { stmts: [Return(Some(HirExpr { kind: Literal(Int(42)) }))] } }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Call(func=HirExpr { kind: Identifier(f) }, 0 args) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goStr(bytes []byte) string { return string(bytes) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goStr
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: [] byte (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "bytes", span: #0 bytes(6437..6442) }, HirType { kind: SliceRef(HirType { kind: U8 }) })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return string(bytes)  (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return string(bytes) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return string(bytes)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return string(bytes)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: TypeConvert(string) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goShorthand(a, b, c int) int { return a + b + c }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goShorthand
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(6946..6947) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(6949..6950) }, HirType { kind: I32 }), (Ident { ident: "c", span: #0 bytes(6952..6953) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b + c } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b + c }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b + c
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b + c
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendNoop() [] int { return append([]int{1, 2}) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendNoop
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return append([]int{1 (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return append([]int{1, 2}) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return append([]int{1, 2})
[INFO] [stderr] [DEBUG parse_hir_statement] input: return append([]int{1, 2})
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Append(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goShorthand(a, b, c int) int { return a + b + c }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goShorthand
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(6946..6947) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(6949..6950) }, HirType { kind: I32 }), (Ident { ident: "c", span: #0 bytes(6952..6953) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { return a + b + c } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b + c }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b + c
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b + c
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Binary(Add) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func hello() string { return "hello" }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: hello
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return "hello" } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return "hello" }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return "hello"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "hello"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(StringTy("hello")) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goAppendVar(data []int, x int) [] int { return append(data, x) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goAppendVar
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int, x int (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "data", span: #0 bytes(566..570) }, HirType { kind: SliceRef(HirType { kind: I32 }) }), (Ident { ident: "x", span: #0 bytes(578..579) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return append(data, x (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return append(data, x) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return append(data, x)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return append(data, x)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Append(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func hello() string { return "hello" }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: hello
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: string { return "hello" } (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return "hello" }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return "hello"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return "hello"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Literal(StringTy("hello")) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSliceLiteral() [] int { return []int{1, 2, 3} }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSliceLiteral
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return []int{1, 2, 3} (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return []int{1, 2, 3} }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return [] int { 1, 2, 3 }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return [] int { 1, 2, 3 }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: SliceLiteral(3 elems) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goSliceLiteral() [] int { return []int{1, 2, 3} }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goSliceLiteral
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: [] int { return []int{1, 2, 3} (peek_ident=false, peek_bracket=true)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return []int{1, 2, 3} }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return [] int { 1, 2, 3 }
[INFO] [stderr] [DEBUG parse_hir_statement] input: return [] int { 1, 2, 3 }
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: SliceLiteral(3 elems) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[:: gourd :: GoSlice < i32 >]
[INFO] [stderr] [DEBUG parse_hir_function] input: func go_triple(a int, b int) (int, int, string)
[INFO] [stderr] { return a + b, a * b, "pair" }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: go_triple
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: int, b int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG parse_hir_type] input: int (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "a", span: #0 bytes(571..572) }, HirType { kind: I32 }), (Ident { ident: "b", span: #0 bytes(578..579) }, HirType { kind: I32 })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG] returns parsed: 3
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { return a + b, a * b, "pair" }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: return a + b, a * b, "pair"
[INFO] [stderr] [DEBUG parse_hir_statement] input: return a + b, a * b, "pair"
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32, i32, :: gourd :: GoString]
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Tuple(3 items) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32, i32, :: gourd :: GoString]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMapSize(_a string) int
[INFO] [stderr] { m := map[string]int{"a": 1, "b": 2, "c": 3} return len(m) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMapSize
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: string (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "_a", span: #0 bytes(1179..1181) }, HirType { kind: StringTy })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { m := map[string]int{"a": (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { m := map[string]int{"a": 1, "b": 2, "c": 3} return len(m) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: m := map [string] int { "a": 1, "b": 2, "c": 3 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: m := map [string] int { "a": 1, "b": 2, "c": 3 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(m)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "m", span: #0 bytes(1204..1205) }, mutable: true, value: HirExpr { kind: Map(_) }, type_hint: Some(HirType { kind: Map(HirType { kind: StringTy }, HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goMapSize(_a string) int
[INFO] [stderr] { m := map[string]int{"a": 1, "b": 2, "c": 3} return len(m) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goMapSize
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG parse_hir_type] input: string (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] params parsed: [(Ident { ident: "_a", span: #0 bytes(1179..1181) }, HirType { kind: StringTy })]
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { m := map[string]int{"a": (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { m := map[string]int{"a": 1, "b": 2, "c": 3} return len(m) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: m := map [string] int { "a": 1, "b": 2, "c": 3 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: m := map [string] int { "a": 1, "b": 2, "c": 3 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(m)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "m", span: #0 bytes(1204..1205) }, mutable: true, value: HirExpr { kind: Map(_) }, type_hint: Some(HirType { kind: Map(HirType { kind: StringTy }, HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goEmptyMap() int { m := map[string]int{"x": 0} return len(m) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goEmptyMap
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { m := map[string]int{"x": (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { m := map[string]int{"x": 0} return len(m) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: m := map [string] int { "x": 0 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: m := map [string] int { "x": 0 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(m)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "m", span: #0 bytes(1670..1671) }, mutable: true, value: HirExpr { kind: Map(_) }, type_hint: Some(HirType { kind: Map(HirType { kind: StringTy }, HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] [DEBUG parse_hir_function] input: func goEmptyMap() int { m := map[string]int{"x": 0} return len(m) }
[INFO] [stderr] [DEBUG] receiver parsed: None
[INFO] [stderr] [DEBUG] parsing name via Ident::parse_any
[INFO] [stderr] [DEBUG] function name: goEmptyMap
[INFO] [stderr] [DEBUG] about to parse params
[INFO] [stderr] [DEBUG] params parsed: []
[INFO] [stderr] [DEBUG] about to parse returns
[INFO] [stderr] [DEBUG parse_hir_type] input: int { m := map[string]int{"x": (peek_ident=true, peek_bracket=false)
[INFO] [stderr] [DEBUG] returns parsed: 1
[INFO] [stderr] [DEBUG] about to parse body
[INFO] [stderr] [DEBUG parse_hir_block] input starts with: { m := map[string]int{"x": 0} return len(m) }
[INFO] [stderr] [DEBUG parse_hir_block] entered Brace branch, content is_empty: false
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #1: m := map [string] int { "x": 0 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: m := map [string] int { "x": 0 } return len(m)
[INFO] [stderr] [DEBUG parse_hir_block] parsing statement #2: return len(m)
[INFO] [stderr] [DEBUG parse_hir_statement] input: return len(m)
[INFO] [stderr] DEBUG: has_error_return=false, has_option_box=false, returns_str=[i32]
[INFO] [stderr] DEBUG: No fix applied, using default: Local { name: Ident { ident: "m", span: #0 bytes(1670..1671) }, mutable: true, value: HirExpr { kind: Map(_) }, type_hint: Some(HirType { kind: Map(HirType { kind: StringTy }, HirType { kind: I32 }) }) }
[INFO] [stderr] DEBUG: No fix applied, using default: Return(Some(HirExpr { kind: Len(_) }))
[INFO] [stderr] DEBUG: has_error_return=false, returns_str=[i32]
[INFO] [stderr] warning: unused dependency `toml`
[INFO] [stderr]   --> gourd-check/Cargo.toml:21:1
[INFO] [stderr]    |
[INFO] [stderr] 21 | toml = "0.8"
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `toml`
[INFO] [stderr] warning: `gourd-check` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 58s
[INFO] running `Command { std: "docker" "inspect" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a", kill_on_drop: false }`
[INFO] [stdout] a285ae977928417ac610089f496244613f7014cb851026f4da267f1d8ed6f80a
