[INFO] fetching crate vyder_core 0.3.4... [INFO] testing vyder_core-0.3.4 against master#caccb4d0368bd918ef6668af8e13834d07040417 for pr-146098-1 [INFO] extracting crate vyder_core 0.3.4 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate vyder_core 0.3.4 [INFO] finished tweaking crates.io crate vyder_core 0.3.4 [INFO] tweaked toml for crates.io crate vyder_core 0.3.4 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate vyder_core 0.3.4 on toolchain caccb4d0368bd918ef6668af8e13834d07040417 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate vyder_core 0.3.4 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded clap_lex v0.7.1 [INFO] [stderr] Downloaded enum_downcast_derive v0.2.0 [INFO] [stderr] Downloaded vyder_macros v0.3.4 [INFO] [stderr] Downloaded enum_downcast v0.2.0 [INFO] [stderr] Downloaded clap v4.5.9 [INFO] [stderr] Downloaded clap_builder v4.5.9 [INFO] [stderr] Downloaded clap_derive v4.5.8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 61ea2895c7e685928666f69abb7e516882b8a0dd119d8a4792704c5d862b55f9 [INFO] running `Command { std: "docker" "start" "-a" "61ea2895c7e685928666f69abb7e516882b8a0dd119d8a4792704c5d862b55f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "61ea2895c7e685928666f69abb7e516882b8a0dd119d8a4792704c5d862b55f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "61ea2895c7e685928666f69abb7e516882b8a0dd119d8a4792704c5d862b55f9", kill_on_drop: false }` [INFO] [stdout] 61ea2895c7e685928666f69abb7e516882b8a0dd119d8a4792704c5d862b55f9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f854817a558e718ed84f2e8bedd030dfc98607e9f1b30976e032a5ade0ca5e53 [INFO] running `Command { std: "docker" "start" "-a" "f854817a558e718ed84f2e8bedd030dfc98607e9f1b30976e032a5ade0ca5e53", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.36 [INFO] [stderr] Compiling regex-syntax v0.8.4 [INFO] [stderr] Compiling anstyle-parse v0.2.4 [INFO] [stderr] Compiling anstyle-query v1.1.0 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling clap_lex v0.7.1 [INFO] [stderr] Compiling colored v2.1.0 [INFO] [stderr] Compiling anstream v0.6.14 [INFO] [stderr] Compiling syn v2.0.72 [INFO] [stderr] Compiling clap_builder v4.5.9 [INFO] [stderr] Compiling regex-automata v0.4.7 [INFO] [stderr] Compiling regex v1.10.5 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Compiling tracing-test-macro v0.2.5 [INFO] [stderr] Compiling clap_derive v4.5.8 [INFO] [stderr] Compiling enum_downcast_derive v0.2.0 [INFO] [stderr] Compiling vyder_macros v0.3.4 [INFO] [stderr] Compiling enum_downcast v0.2.0 [INFO] [stderr] Compiling tracing v0.1.40 [INFO] [stderr] Compiling tracing-subscriber v0.3.18 [INFO] [stderr] Compiling clap v4.5.9 [INFO] [stderr] Compiling tracing-test v0.2.5 [INFO] [stderr] Compiling vyder_core v0.3.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/value/values.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 35 | #[derive(Clone, Debug, IntoValueEnum, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 43 | function: fn(&[ValueResult], Span) -> Result<(ValueResult, Option)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 32.71s [INFO] running `Command { std: "docker" "inspect" "f854817a558e718ed84f2e8bedd030dfc98607e9f1b30976e032a5ade0ca5e53", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f854817a558e718ed84f2e8bedd030dfc98607e9f1b30976e032a5ade0ca5e53", kill_on_drop: false }` [INFO] [stdout] f854817a558e718ed84f2e8bedd030dfc98607e9f1b30976e032a5ade0ca5e53 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 05e55678508a0053ab081fc6221de79c3061946c7959dfab827794c83f1a8b80 [INFO] running `Command { std: "docker" "start" "-a" "05e55678508a0053ab081fc6221de79c3061946c7959dfab827794c83f1a8b80", kill_on_drop: false }` [INFO] [stderr] Compiling vyder_core v0.3.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/value/values.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 35 | #[derive(Clone, Debug, IntoValueEnum, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 43 | function: fn(&[ValueResult], Span) -> Result<(ValueResult, Option)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/value/values.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 35 | #[derive(Clone, Debug, IntoValueEnum, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 43 | function: fn(&[ValueResult], Span) -> Result<(ValueResult, Option)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 4.40s [INFO] running `Command { std: "docker" "inspect" "05e55678508a0053ab081fc6221de79c3061946c7959dfab827794c83f1a8b80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "05e55678508a0053ab081fc6221de79c3061946c7959dfab827794c83f1a8b80", kill_on_drop: false }` [INFO] [stdout] 05e55678508a0053ab081fc6221de79c3061946c7959dfab827794c83f1a8b80 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+caccb4d0368bd918ef6668af8e13834d07040417" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 4dbaee7cd854989e68f91264e876e94077544b529212708af5246cde550661a6 [INFO] running `Command { std: "docker" "start" "-a" "4dbaee7cd854989e68f91264e876e94077544b529212708af5246cde550661a6", kill_on_drop: false }` [INFO] [stderr] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stderr] --> src/value/values.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 35 | #[derive(Clone, Debug, IntoValueEnum, PartialEq)] [INFO] [stderr] | --------- in this derive macro expansion [INFO] [stderr] ... [INFO] [stderr] 43 | function: fn(&[ValueResult], Span) -> Result<(ValueResult, Option)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the address of the same function can vary between different codegen units [INFO] [stderr] = note: furthermore, different functions could have the same address after being merged together [INFO] [stderr] = note: for more information visit [INFO] [stderr] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stderr] [INFO] [stderr] warning: `vyder_core` (lib) generated 1 warning [INFO] [stderr] warning: `vyder_core` (lib test) generated 1 warning (1 duplicate) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/vyder_core-5973d1184e3ed235) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test expression::tests::expect_test ... ok [INFO] [stdout] test environment::tests::environments_test ... ok [INFO] [stdout] test interpreter::tests::group_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.138764Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '+' [INFO] [stdout] 2025-10-01T20:04:32.138791Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.138800Z  INFO vyder_core::lexer: Constructing span at line 1, column 1 [INFO] [stdout] 2025-10-01T20:04:32.138809Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.138818Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '+' [INFO] [stdout] 2025-10-01T20:04:32.138825Z  INFO vyder_core::lexer: Char at distance 1 from 0 is '"' [INFO] [stdout] 2025-10-01T20:04:32.138834Z  INFO vyder_core::lexer: Next token is '+' [INFO] [stdout] 2025-10-01T20:04:32.138849Z  INFO vyder_core::lexer: Advancing to char index 1 [INFO] [stdout] 2025-10-01T20:04:32.138855Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.138860Z  INFO vyder_core::lexer: Constructing span at line 1, column 2 [INFO] [stdout] 2025-10-01T20:04:32.138866Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.138874Z  INFO vyder_core::lexer: Char at distance 0 from 1 is '"' [INFO] [stdout] 2025-10-01T20:04:32.138884Z  INFO vyder_core::lexer: get_string function [INFO] [stdout] 2025-10-01T20:04:32.138890Z  INFO vyder_core::lexer: Advancing to char index 2 [INFO] [stdout] 2025-10-01T20:04:32.138897Z  INFO vyder_core::lexer: Char at distance 0 from 2 is 'H' [INFO] [stdout] 2025-10-01T20:04:32.138903Z  INFO vyder_core::lexer: Advancing to char index 3 [INFO] [stdout] 2025-10-01T20:04:32.138909Z  INFO vyder_core::lexer: Char at distance 0 from 3 is 'e' [INFO] [stdout] 2025-10-01T20:04:32.138916Z  INFO vyder_core::lexer: Advancing to char index 4 [INFO] [stdout] 2025-10-01T20:04:32.138922Z  INFO vyder_core::lexer: Char at distance 0 from 4 is 'l' [INFO] [stdout] 2025-10-01T20:04:32.138928Z  INFO vyder_core::lexer: Advancing to char index 5 [INFO] [stdout] 2025-10-01T20:04:32.138933Z  INFO vyder_core::lexer: Char at distance 0 from 5 is 'l' [INFO] [stdout] 2025-10-01T20:04:32.138939Z  INFO vyder_core::lexer: Advancing to char index 6 [INFO] [stdout] 2025-10-01T20:04:32.138944Z  INFO vyder_core::lexer: Char at distance 0 from 6 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.138949Z  INFO vyder_core::lexer: Advancing to char index 7 [INFO] [stdout] 2025-10-01T20:04:32.138954Z  INFO vyder_core::lexer: Char at distance 0 from 7 is ',' [INFO] [stdout] 2025-10-01T20:04:32.138960Z  INFO vyder_core::lexer: Advancing to char index 8 [INFO] [stdout] 2025-10-01T20:04:32.138979Z  INFO vyder_core::lexer: Char at distance 0 from 8 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.138986Z  INFO vyder_core::lexer: Advancing to char index 9 [INFO] [stdout] 2025-10-01T20:04:32.138992Z  INFO vyder_core::lexer: Char at distance 0 from 9 is 'W' [INFO] [stdout] 2025-10-01T20:04:32.138998Z  INFO vyder_core::lexer: Advancing to char index 10 [INFO] [stdout] 2025-10-01T20:04:32.139005Z  INFO vyder_core::lexer: Char at distance 0 from 10 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.139011Z  INFO vyder_core::lexer: Advancing to char index 11 [INFO] [stdout] 2025-10-01T20:04:32.139017Z  INFO vyder_core::lexer: Char at distance 0 from 11 is 'r' [INFO] [stdout] 2025-10-01T20:04:32.139022Z  INFO vyder_core::lexer: Advancing to char index 12 [INFO] [stdout] 2025-10-01T20:04:32.139028Z  INFO vyder_core::lexer: Char at distance 0 from 12 is 'l' [INFO] [stdout] 2025-10-01T20:04:32.139034Z  INFO vyder_core::lexer: Advancing to char index 13 [INFO] [stdout] 2025-10-01T20:04:32.139041Z  INFO vyder_core::lexer: Char at distance 0 from 13 is 'd' [INFO] [stdout] 2025-10-01T20:04:32.139047Z  INFO vyder_core::lexer: Advancing to char index 14 [INFO] [stdout] 2025-10-01T20:04:32.139053Z  INFO vyder_core::lexer: Char at distance 0 from 14 is '!' [INFO] [stdout] 2025-10-01T20:04:32.139057Z  INFO vyder_core::lexer: Advancing to char index 15 [INFO] [stdout] 2025-10-01T20:04:32.139063Z  INFO vyder_core::lexer: Char at distance 0 from 15 is '"' [INFO] [stdout] 2025-10-01T20:04:32.139070Z  INFO vyder_core::lexer: Next token is '"Hello, World!"' [INFO] [stdout] 2025-10-01T20:04:32.139080Z  INFO vyder_core::lexer: Advancing to char index 16 [INFO] [stdout] 2025-10-01T20:04:32.139086Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.139091Z  INFO vyder_core::lexer: Constructing span at line 1, column 17 [INFO] [stdout] 2025-10-01T20:04:32.139097Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.139104Z  INFO vyder_core::lexer: Char at distance 0 from 16 is ''' [INFO] [stdout] 2025-10-01T20:04:32.139110Z  INFO vyder_core::lexer: get_string function [INFO] [stdout] 2025-10-01T20:04:32.139114Z  INFO vyder_core::lexer: Advancing to char index 17 [INFO] [stdout] 2025-10-01T20:04:32.139120Z  INFO vyder_core::lexer: Char at distance 0 from 17 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.139126Z  INFO vyder_core::lexer: Advancing to char index 18 [INFO] [stdout] 2025-10-01T20:04:32.139132Z  INFO vyder_core::lexer: Char at distance 0 from 18 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.139138Z  INFO vyder_core::lexer: Advancing to char index 19 [INFO] [stdout] 2025-10-01T20:04:32.139145Z  INFO vyder_core::lexer: Char at distance 0 from 19 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.139150Z  INFO vyder_core::lexer: Advancing to char index 20 [INFO] [stdout] 2025-10-01T20:04:32.139170Z  INFO vyder_core::lexer: Char at distance 0 from 20 is '\' [INFO] [stdout] 2025-10-01T20:04:32.139177Z  INFO vyder_core::lexer: Char at distance 1 from 20 is 't' [INFO] [stdout] 2025-10-01T20:04:32.139188Z  INFO vyder_core::lexer: Advancing to char index 21 without increasing column [INFO] [stdout] 2025-10-01T20:04:32.139194Z  INFO vyder_core::lexer: Advancing to char index 22 [INFO] [stdout] 2025-10-01T20:04:32.139201Z  INFO vyder_core::lexer: Char at distance 0 from 22 is ''' [INFO] [stdout] 2025-10-01T20:04:32.139207Z  INFO vyder_core::lexer: Next token is '"foo "' [INFO] [stdout] 2025-10-01T20:04:32.139215Z  INFO vyder_core::lexer: Advancing to char index 23 [INFO] [stdout] 2025-10-01T20:04:32.139221Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.139225Z  INFO vyder_core::lexer: Constructing span at line 1, column 23 [INFO] [stdout] 2025-10-01T20:04:32.139230Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.139238Z  INFO vyder_core::lexer: Char at distance 0 from 23 is '(' [INFO] [stdout] 2025-10-01T20:04:32.139243Z  INFO vyder_core::lexer: Next token is '(' [INFO] [stdout] 2025-10-01T20:04:32.139251Z  INFO vyder_core::lexer: Advancing to char index 24 [INFO] [stdout] 2025-10-01T20:04:32.139256Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.139262Z  INFO vyder_core::lexer: Constructing span at line 1, column 24 [INFO] [stdout] 2025-10-01T20:04:32.139268Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.139277Z  INFO vyder_core::lexer: Char at distance 0 from 24 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.139287Z  INFO vyder_core::lexer: Next token is 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.139277Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '#' [INFO] [stdout] 2025-10-01T20:04:32.139298Z  INFO vyder_core::lexer: Advancing to char index 1 [INFO] [stdout] 2025-10-01T20:04:32.139306Z  INFO vyder_core::lexer: Char at distance 0 from 1 is '!' [INFO] [stdout] 2025-10-01T20:04:32.139312Z  INFO vyder_core::lexer: Advancing to char index 2 [INFO] [stdout] 2025-10-01T20:04:32.139319Z  INFO vyder_core::lexer: Char at distance 0 from 2 is 'v' [INFO] [stdout] 2025-10-01T20:04:32.139325Z  INFO vyder_core::lexer: Advancing to char index 3 [INFO] [stdout] 2025-10-01T20:04:32.139331Z  INFO vyder_core::lexer: Char at distance 0 from 3 is 'y' [INFO] [stdout] 2025-10-01T20:04:32.139337Z  INFO vyder_core::lexer: Advancing to char index 4 [INFO] [stdout] 2025-10-01T20:04:32.139342Z  INFO vyder_core::lexer: Char at distance 0 from 4 is 'd' [INFO] [stdout] 2025-10-01T20:04:32.139348Z  INFO vyder_core::lexer: Advancing to char index 5 [INFO] [stdout] 2025-10-01T20:04:32.139362Z  INFO vyder_core::lexer: Char at distance 0 from 5 is 'e' [INFO] [stdout] 2025-10-01T20:04:32.139368Z  INFO vyder_core::lexer: Advancing to char index 6 [INFO] [stdout] 2025-10-01T20:04:32.139375Z  INFO vyder_core::lexer: Char at distance 0 from 6 is 'r' [INFO] [stdout] test lexer::tests::strings_test ... 2025-10-01T20:04:32.139381Z  INFO vyder_core::lexer: Advancing to char index 7 [INFO] [stdout] ok [INFO] [stdout] 2025-10-01T20:04:32.139387Z  INFO vyder_core::lexer: Char at distance 0 from 7 is ' [INFO] [stdout] ' [INFO] [stdout] 2025-10-01T20:04:32.139394Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.139400Z  INFO vyder_core::lexer: Constructing span at line 1, column 8 [INFO] [stdout] 2025-10-01T20:04:32.139407Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.139416Z  INFO vyder_core::lexer: Char at distance 0 from 7 is ' [INFO] [stdout] ' [INFO] [stdout] 2025-10-01T20:04:32.139426Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.139432Z  INFO vyder_core::lexer: Constructing span at line 2, column 1 [INFO] [stdout] 2025-10-01T20:04:32.139439Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.140115Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.142014Z  INFO vyder_core::lexer: Char at distance 0 from 8 is '+' [INFO] [stdout] 2025-10-01T20:04:32.142027Z  INFO vyder_core::lexer: Char at distance 1 from 8 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.142036Z  INFO vyder_core::lexer: Next token is '+' [INFO] [stdout] 2025-10-01T20:04:32.142048Z  INFO vyder_core::lexer: Advancing to char index 9 [INFO] [stdout] 2025-10-01T20:04:32.142046Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.142054Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.142061Z  INFO vyder_core::lexer: Constructing span at line 2, column 2 [INFO] [stdout] 2025-10-01T20:04:32.142068Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.142066Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.142077Z  INFO vyder_core::lexer: Char at distance 0 from 9 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.142083Z  INFO vyder_core::lexer: Advancing to char index 10 [INFO] [stdout] 2025-10-01T20:04:32.142089Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.142090Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.142095Z  INFO vyder_core::lexer: Constructing span at line 2, column 3 [INFO] [stdout] 2025-10-01T20:04:32.142101Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.142104Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.142109Z  INFO vyder_core::lexer: Char at distance 0 from 10 is '/' [INFO] [stdout] 2025-10-01T20:04:32.142117Z  INFO vyder_core::lexer: Char at distance 1 from 10 is '/' [INFO] [stdout] 2025-10-01T20:04:32.142118Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.142124Z  INFO vyder_core::lexer: Char at distance 1 from 10 is '/' [INFO] [stdout] 2025-10-01T20:04:32.142131Z  INFO vyder_core::lexer: Advancing to char index 11 [INFO] [stdout] 2025-10-01T20:04:32.142135Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.142138Z  INFO vyder_core::lexer: Char at distance 1 from 11 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.142145Z  INFO vyder_core::lexer: Advancing to char index 12 [INFO] [stdout] 2025-10-01T20:04:32.142153Z  INFO vyder_core::lexer: Char at distance 1 from 12 is 't' [INFO] [stdout] 2025-10-01T20:04:32.142150Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.142158Z  INFO vyder_core::lexer: Advancing to char index 13 [INFO] [stdout] 2025-10-01T20:04:32.142166Z  INFO vyder_core::lexer: Char at distance 1 from 13 is 'e' [INFO] [stdout] 2025-10-01T20:04:32.142167Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.142172Z  INFO vyder_core::lexer: Advancing to char index 14 [INFO] [stdout] 2025-10-01T20:04:32.142180Z  INFO vyder_core::lexer: Char at distance 1 from 14 is 's' [INFO] [stdout] 2025-10-01T20:04:32.142187Z  INFO vyder_core::lexer: Advancing to char index 15 [INFO] [stdout] 2025-10-01T20:04:32.142195Z  INFO vyder_core::lexer: Char at distance 1 from 15 is 't' [INFO] [stdout] 2025-10-01T20:04:32.142179Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.142201Z  INFO vyder_core::lexer: Advancing to char index 16 [INFO] [stdout] 2025-10-01T20:04:32.142210Z  INFO vyder_core::lexer: Char at distance 1 from 16 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.142216Z  INFO vyder_core::lexer: Advancing to char index 17 [INFO] [stdout] 2025-10-01T20:04:32.142216Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.142224Z  INFO vyder_core::lexer: Char at distance 1 from 17 is '2' [INFO] [stdout] 2025-10-01T20:04:32.142230Z  INFO vyder_core::lexer: Advancing to char index 18 [INFO] [stdout] 2025-10-01T20:04:32.142238Z  INFO vyder_core::lexer: Char at distance 1 from 18 is ' [INFO] [stdout] ' [INFO] [stdout] 2025-10-01T20:04:32.142244Z  INFO vyder_core::lexer: Advancing to char index 19 [INFO] [stdout] 2025-10-01T20:04:32.142247Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.142250Z  INFO vyder_core::lexer: Advancing to char index 20 [INFO] [stdout] 2025-10-01T20:04:32.142256Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.142263Z  INFO vyder_core::lexer: Constructing span at line 3, column 1 [INFO] [stdout] 2025-10-01T20:04:32.142272Z  INFO vyder_core::lexer: getting line 2 [INFO] [stdout] 2025-10-01T20:04:32.142281Z  INFO vyder_core::lexer: Char at distance 0 from 20 is '/' [INFO] [stdout] 2025-10-01T20:04:32.142298Z  INFO vyder_core::lexer: Char at distance 1 from 20 is '/' [INFO] [stdout] 2025-10-01T20:04:32.142306Z  INFO vyder_core::lexer: Char at distance 1 from 20 is '/' [INFO] [stdout] 2025-10-01T20:04:32.142312Z  INFO vyder_core::lexer: Advancing to char index 21 [INFO] [stdout] 2025-10-01T20:04:32.142320Z  INFO vyder_core::lexer: Char at distance 1 from 21 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.142326Z  INFO vyder_core::lexer: Advancing to char index 22 [INFO] [stdout] 2025-10-01T20:04:32.142334Z  INFO vyder_core::lexer: Char at distance 1 from 22 is 't' [INFO] [stdout] 2025-10-01T20:04:32.142333Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.142340Z  INFO vyder_core::lexer: Advancing to char index 23 [INFO] [stdout] 2025-10-01T20:04:32.142348Z  INFO vyder_core::lexer: Char at distance 1 from 23 is 'e' [INFO] [stdout] 2025-10-01T20:04:32.142348Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.142354Z  INFO vyder_core::lexer: Advancing to char index 24 [INFO] [stdout] 2025-10-01T20:04:32.142359Z  INFO vyder_core::parser: Advancing to token index 1: '=' [INFO] [stdout] 2025-10-01T20:04:32.142362Z  INFO vyder_core::lexer: Char at distance 1 from 24 is 's' [INFO] [stdout] 2025-10-01T20:04:32.142368Z  INFO vyder_core::lexer: Advancing to char index 25 [INFO] [stdout] 2025-10-01T20:04:32.142371Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142377Z  INFO vyder_core::lexer: Char at distance 1 from 25 is 't' [INFO] [stdout] 2025-10-01T20:04:32.142382Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142383Z  INFO vyder_core::lexer: Advancing to char index 26 [INFO] [stdout] 2025-10-01T20:04:32.142391Z  INFO vyder_core::lexer: Char at distance 1 from 26 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.142391Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142397Z  INFO vyder_core::lexer: Advancing to char index 27 [INFO] [stdout] 2025-10-01T20:04:32.142402Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142405Z  INFO vyder_core::lexer: Char at distance 1 from 27 is '3' [INFO] [stdout] 2025-10-01T20:04:32.142411Z  INFO vyder_core::lexer: Advancing to char index 28 [INFO] [stdout] 2025-10-01T20:04:32.142416Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142419Z  INFO vyder_core::lexer: Char at distance 1 from 28 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.142426Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.142426Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142432Z  INFO vyder_core::lexer: Constructing span at line 3, column 9 [INFO] [stdout] 2025-10-01T20:04:32.142436Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142438Z  INFO vyder_core::lexer: getting line 2 [INFO] [stdout] 2025-10-01T20:04:32.142446Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142447Z  INFO vyder_core::lexer: Char at distance 0 from 28 is '3' [INFO] [stdout] 2025-10-01T20:04:32.142453Z  INFO vyder_core::lexer: get_number function [INFO] [stdout] 2025-10-01T20:04:32.142455Z  INFO vyder_core::parser: Advancing to token index 2: '12' [INFO] [stdout] 2025-10-01T20:04:32.142461Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.142461Z  INFO vyder_core::lexer: Char at distance 0 from 28 is '3' [INFO] [stdout] 2025-10-01T20:04:32.142467Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.142468Z  INFO vyder_core::lexer: Advancing to char index 29 [INFO] [stdout] 2025-10-01T20:04:32.142473Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.142475Z  INFO vyder_core::lexer: Char at distance 0 from 29 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.142479Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.142483Z  INFO vyder_core::lexer: Next token is '3' [INFO] [stdout] 2025-10-01T20:04:32.142485Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.142492Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.142492Z  INFO vyder_core::lexer: Advancing to char index 29 [INFO] [stdout] 2025-10-01T20:04:32.142497Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.142498Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.142503Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.142504Z  INFO vyder_core::lexer: Constructing span at line 3, column 10 [INFO] [stdout] 2025-10-01T20:04:32.142510Z  INFO vyder_core::lexer: getting line 2 [INFO] [stdout] 2025-10-01T20:04:32.142515Z  INFO vyder_core::parser: Token at distance 0 from 2 is '12' at test 1:7 - 1:8 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142520Z  INFO vyder_core::lexer: Char at distance 0 from 29 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.142527Z  INFO vyder_core::lexer: Next token is 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.142530Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.142543Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.142570Z  INFO vyder_core::parser: Token at distance 0 from 2 is '12' at test 1:7 - 1:8 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142580Z  INFO vyder_core::parser: Advancing to token index 3: 'or' [INFO] [stdout] 2025-10-01T20:04:32.142599Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142611Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142623Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142636Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] test lexer::tests::comments_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.142651Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142663Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142681Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'or' at test 1:10 - 1:11 (2 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.142690Z  INFO vyder_core::parser: Advancing to token index 4: '3' [INFO] [stdout] 2025-10-01T20:04:32.142705Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.142712Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.142718Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.142724Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.142730Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.142736Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.142751Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.142763Z  INFO vyder_core::parser: Token at distance 0 from 4 is '3' at test 1:13 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142783Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.142801Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.142817Z  INFO vyder_core::parser: Token at distance 0 from 4 is '3' at test 1:13 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142825Z  INFO vyder_core::parser: Advancing to token index 5: ';' [INFO] [stdout] 2025-10-01T20:04:32.142835Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142846Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142856Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142867Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142881Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142896Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142907Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142919Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142934Z  INFO vyder_core::parser: Parsed expression ''Assignment' at test 1:1 - 1:13 (13 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.142960Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142984Z  INFO vyder_core::parser: Token at distance 0 from 5 is ';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.142999Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:14 [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.143015Z  INFO vyder_core::parser: Advancing to token index 6: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.143025Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.143040Z  INFO vyder_core::parser: parsed statement ''Assignment;' at test 1:1 - 1:14 (14 chars) [INFO] [stdout] | foo = 12 or 3; [INFO] [stdout] ^^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.143062Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.143070Z  INFO vyder_core::parser: Token at distance 0 from 6 is None [INFO] [stdout] 2025-10-01T20:04:32.143481Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.143507Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.143523Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.143536Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.143545Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.143554Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.143567Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.143576Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.143586Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.143596Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.143607Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.143631Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.143705Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.143716Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.143724Z  INFO vyder_core::parser: Advancing to token index 1: '(' [INFO] [stdout] 2025-10-01T20:04:32.143733Z  INFO vyder_core::parser: Token at distance 0 from 1 is '(' at test 1:4 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143739Z  INFO vyder_core::parser: Advancing to token index 2: 'bar' [INFO] [stdout] 2025-10-01T20:04:32.143749Z  INFO vyder_core::parser: Token at distance 0 from 2 is 'bar' at test 1:5 - 1:7 (3 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.143755Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.143760Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.143766Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.143771Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.143776Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.143781Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.143786Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.143791Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.143801Z  INFO vyder_core::parser: Token at distance 0 from 2 is 'bar' at test 1:5 - 1:7 (3 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.143818Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.143877Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.143888Z  INFO vyder_core::parser: Token at distance 0 from 2 is 'bar' at test 1:5 - 1:7 (3 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.143895Z  INFO vyder_core::parser: Advancing to token index 3: '(' [INFO] [stdout] 2025-10-01T20:04:32.143904Z  INFO vyder_core::parser: Token at distance 0 from 3 is '(' at test 1:8 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143910Z  INFO vyder_core::parser: Advancing to token index 4: ')' [INFO] [stdout] 2025-10-01T20:04:32.143920Z  INFO vyder_core::parser: Token at distance 0 from 4 is ')' at test 1:13 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143926Z  INFO vyder_core::parser: Advancing to token index 5: ')' [INFO] [stdout] 2025-10-01T20:04:32.143935Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143944Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143953Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143977Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.143991Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144000Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144009Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144018Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144023Z  INFO vyder_core::parser: Parsed expression ''Call(bar)' at test 1:5 - 1:13 (9 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.144041Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144053Z  INFO vyder_core::parser: Token at distance 0 from 5 is ')' at test 1:14 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144060Z  INFO vyder_core::parser: Advancing to token index 6: ';' [INFO] [stdout] 2025-10-01T20:04:32.144069Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144078Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144087Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144096Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144107Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144116Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144125Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144135Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144141Z  INFO vyder_core::parser: Parsed expression ''Call(foo)' at test 1:1 - 1:14 (14 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.144157Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144166Z  INFO vyder_core::parser: Token at distance 0 from 6 is ';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.144173Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:15 [INFO] [stdout] | foo(bar( )); [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.144182Z  INFO vyder_core::parser: Advancing to token index 7: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.144188Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.144194Z  INFO vyder_core::parser: parsed statement ''Call(foo);' at test 1:1 - 1:15 (15 chars) [INFO] [stdout] | foo(bar( )); [INFO] [stdout] ^^^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.144208Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.144214Z  INFO vyder_core::parser: Token at distance 0 from 7 is None [INFO] [stdout] 2025-10-01T20:04:32.144334Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '1' [INFO] [stdout] 2025-10-01T20:04:32.146273Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.146338Z  INFO vyder_core::lexer: Constructing span at line 1, column 1 [INFO] [stdout] 2025-10-01T20:04:32.146366Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.146564Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '1' [INFO] [stdout] 2025-10-01T20:04:32.146718Z  INFO vyder_core::lexer: get_number function [INFO] [stdout] 2025-10-01T20:04:32.146920Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '1' [INFO] [stdout] 2025-10-01T20:04:32.148776Z  INFO vyder_core::lexer: Advancing to char index 1 [INFO] [stdout] 2025-10-01T20:04:32.148847Z  INFO vyder_core::lexer: Char at distance 0 from 1 is '2' [INFO] [stdout] 2025-10-01T20:04:32.148930Z  INFO vyder_core::lexer: Advancing to char index 2 [INFO] [stdout] 2025-10-01T20:04:32.149059Z  INFO vyder_core::lexer: Char at distance 0 from 2 is '.' [INFO] [stdout] test parser::tests::assignment_test ... ok [INFO] [stdout] test parser::tests::calls_test ... ok [INFO] [stdout] test interpreter::tests::number_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.149207Z  INFO vyder_core::lexer: Char at distance 1 from 2 is '5' [INFO] [stdout] 2025-10-01T20:04:32.149465Z  INFO vyder_core::lexer: Advancing to char index 3 [INFO] [stdout] 2025-10-01T20:04:32.149768Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.150265Z  INFO vyder_core::lexer: Char at distance 0 from 3 is '5' [INFO] [stdout] 2025-10-01T20:04:32.150277Z  INFO vyder_core::lexer: Advancing to char index 4 [INFO] [stdout] 2025-10-01T20:04:32.150285Z  INFO vyder_core::lexer: Char at distance 0 from 4 is '.' [INFO] [stdout] 2025-10-01T20:04:32.150287Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo.bar; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.150293Z  INFO vyder_core::lexer: Next token is '12.5' [INFO] [stdout] 2025-10-01T20:04:32.150309Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.150313Z  INFO vyder_core::lexer: Advancing to char index 4 [INFO] [stdout] 2025-10-01T20:04:32.150319Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.150321Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.150325Z  INFO vyder_core::lexer: Constructing span at line 1, column 5 [INFO] [stdout] 2025-10-01T20:04:32.150331Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.150341Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.150346Z  INFO vyder_core::lexer: Char at distance 0 from 4 is '.' [INFO] [stdout] 2025-10-01T20:04:32.150353Z  INFO vyder_core::lexer: Char at distance 1 from 4 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.150352Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.150360Z  INFO vyder_core::lexer: Next token is '.' [INFO] [stdout] 2025-10-01T20:04:32.150364Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.150377Z  INFO vyder_core::lexer: Advancing to char index 5 [INFO] [stdout] 2025-10-01T20:04:32.150378Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.150383Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.150389Z  INFO vyder_core::lexer: Constructing span at line 1, column 6 [INFO] [stdout] 2025-10-01T20:04:32.150389Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.150396Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.150401Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.150403Z  INFO vyder_core::lexer: Char at distance 0 from 5 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.150411Z  INFO vyder_core::lexer: Char at distance 0 from 5 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.150414Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo.bar; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.150418Z  INFO vyder_core::lexer: Advancing to char index 6 [INFO] [stdout] 2025-10-01T20:04:32.150425Z  INFO vyder_core::lexer: Char at distance 0 from 6 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.150431Z  INFO vyder_core::lexer: Advancing to char index 7 [INFO] [stdout] 2025-10-01T20:04:32.150439Z  INFO vyder_core::lexer: Char at distance 0 from 7 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.150439Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.150445Z  INFO vyder_core::lexer: Advancing to char index 8 [INFO] [stdout] 2025-10-01T20:04:32.150452Z  INFO vyder_core::lexer: Char at distance 0 from 8 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.150459Z  INFO vyder_core::lexer: Next token is 'foo' [INFO] [stdout] 2025-10-01T20:04:32.150469Z  INFO vyder_core::lexer: Advancing to char index 8 [INFO] [stdout] 2025-10-01T20:04:32.150475Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.150481Z  INFO vyder_core::lexer: Constructing span at line 1, column 9 [INFO] [stdout] 2025-10-01T20:04:32.150487Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.150495Z  INFO vyder_core::lexer: Char at distance 0 from 8 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.150501Z  INFO vyder_core::lexer: Advancing to char index 9 [INFO] [stdout] 2025-10-01T20:04:32.150508Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.150513Z  INFO vyder_core::lexer: Constructing span at line 1, column 10 [INFO] [stdout] 2025-10-01T20:04:32.150513Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.150519Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.150527Z  INFO vyder_core::lexer: Char at distance 0 from 9 is '1' [INFO] [stdout] 2025-10-01T20:04:32.150529Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo.bar; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.150534Z  INFO vyder_core::lexer: get_number function [INFO] [stdout] 2025-10-01T20:04:32.150537Z  INFO vyder_core::parser: Advancing to token index 1: '.' [INFO] [stdout] 2025-10-01T20:04:32.150541Z  INFO vyder_core::lexer: Char at distance 0 from 9 is '1' [INFO] [stdout] 2025-10-01T20:04:32.150547Z  INFO vyder_core::lexer: Advancing to char index 10 [INFO] [stdout] 2025-10-01T20:04:32.150548Z  INFO vyder_core::parser: Token at distance 0 from 1 is '.' at test 1:4 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150554Z  INFO vyder_core::parser: Advancing to token index 2: 'bar' [INFO] [stdout] 2025-10-01T20:04:32.150554Z  INFO vyder_core::lexer: Char at distance 0 from 10 is '2' [INFO] [stdout] 2025-10-01T20:04:32.150561Z  INFO vyder_core::lexer: Advancing to char index 11 [INFO] [stdout] 2025-10-01T20:04:32.150565Z  INFO vyder_core::parser: Token at distance 0 from 2 is 'bar' at test 1:5 - 1:7 (3 chars) [INFO] [stdout] | foo.bar; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.150568Z  INFO vyder_core::lexer: Char at distance 0 from 11 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.150573Z  INFO vyder_core::parser: Advancing to token index 3: ';' [INFO] [stdout] 2025-10-01T20:04:32.150575Z  INFO vyder_core::lexer: Next token is '12' [INFO] [stdout] 2025-10-01T20:04:32.150584Z  INFO vyder_core::lexer: Advancing to char index 11 [INFO] [stdout] 2025-10-01T20:04:32.150591Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.150594Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150597Z  INFO vyder_core::lexer: Constructing span at line 1, column 12 [INFO] [stdout] 2025-10-01T20:04:32.150603Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.150601Z  INFO vyder_core::parser: ending branch for field access at token Some(Token { value: Semicolon(Semicolon), span: Span { start_location: Location { line: 1, column: 8, char_index: 7 }, end_location: None, module_name: "test", snippet: Some("foo.bar;") } }) [INFO] [stdout] 2025-10-01T20:04:32.150610Z  INFO vyder_core::lexer: Char at distance 0 from 11 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.150615Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150617Z  INFO vyder_core::lexer: Next token is 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.150627Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150638Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150649Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150663Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150680Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150691Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150702Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150708Z  INFO vyder_core::parser: Parsed expression ''FieldAccess' at test 1:1 - 1:7 (7 chars) [INFO] [stdout] | foo.bar; [INFO] [stdout] ^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.150724Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150735Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.150742Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:8 [INFO] [stdout] | foo.bar; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.150752Z  INFO vyder_core::parser: Advancing to token index 4: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.150758Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.150765Z  INFO vyder_core::parser: parsed statement ''FieldAccess;' at test 1:1 - 1:8 (8 chars) [INFO] [stdout] | foo.bar; [INFO] [stdout] ^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.150779Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.150785Z  INFO vyder_core::parser: Token at distance 0 from 4 is None [INFO] [stdout] 2025-10-01T20:04:32.146038Z  INFO vyder_core::lexer: Char at distance 0 from 0 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.150943Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.145366Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '+' [INFO] [stdout] 2025-10-01T20:04:32.151016Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151025Z  INFO vyder_core::lexer: Constructing span at line 1, column 1 [INFO] [stdout] 2025-10-01T20:04:32.151032Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151042Z  INFO vyder_core::lexer: Char at distance 0 from 0 is '+' [INFO] [stdout] 2025-10-01T20:04:32.151049Z  INFO vyder_core::lexer: Char at distance 1 from 0 is '=' [INFO] [stdout] 2025-10-01T20:04:32.151056Z  INFO vyder_core::lexer: Advancing to char index 1 [INFO] [stdout] 2025-10-01T20:04:32.151063Z  INFO vyder_core::lexer: Next token is '+=' [INFO] [stdout] 2025-10-01T20:04:32.151074Z  INFO vyder_core::lexer: Advancing to char index 2 [INFO] [stdout] 2025-10-01T20:04:32.151080Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151086Z  INFO vyder_core::lexer: Constructing span at line 1, column 3 [INFO] [stdout] 2025-10-01T20:04:32.151092Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151100Z  INFO vyder_core::lexer: Char at distance 0 from 2 is ' [INFO] [stdout] ' [INFO] [stdout] 2025-10-01T20:04:32.151106Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151112Z  INFO vyder_core::lexer: Constructing span at line 2, column 1 [INFO] [stdout] 2025-10-01T20:04:32.151117Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.151125Z  INFO vyder_core::lexer: Char at distance 0 from 3 is '-' [INFO] [stdout] 2025-10-01T20:04:32.151132Z  INFO vyder_core::lexer: Char at distance 1 from 3 is '-' [INFO] [stdout] 2025-10-01T20:04:32.151140Z  INFO vyder_core::lexer: Char at distance 1 from 3 is '-' [INFO] [stdout] 2025-10-01T20:04:32.151147Z  INFO vyder_core::lexer: Next token is '-' [INFO] [stdout] 2025-10-01T20:04:32.151157Z  INFO vyder_core::lexer: Advancing to char index 4 [INFO] [stdout] 2025-10-01T20:04:32.151163Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151168Z  INFO vyder_core::lexer: Constructing span at line 2, column 2 [INFO] [stdout] 2025-10-01T20:04:32.151174Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.151182Z  INFO vyder_core::lexer: Char at distance 0 from 4 is '-' [INFO] [stdout] 2025-10-01T20:04:32.151189Z  INFO vyder_core::lexer: Char at distance 1 from 4 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.151196Z  INFO vyder_core::lexer: Char at distance 1 from 4 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.151202Z  INFO vyder_core::lexer: Next token is '-' [INFO] [stdout] 2025-10-01T20:04:32.151219Z  INFO vyder_core::lexer: Advancing to char index 5 [INFO] [stdout] 2025-10-01T20:04:32.151225Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151231Z  INFO vyder_core::lexer: Constructing span at line 2, column 3 [INFO] [stdout] 2025-10-01T20:04:32.151237Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.151245Z  INFO vyder_core::lexer: Char at distance 0 from 5 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.151251Z  INFO vyder_core::lexer: Advancing to char index 6 [INFO] [stdout] 2025-10-01T20:04:32.151257Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151262Z  INFO vyder_core::lexer: Constructing span at line 2, column 4 [INFO] [stdout] 2025-10-01T20:04:32.151269Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.151277Z  INFO vyder_core::lexer: Char at distance 0 from 6 is '/' [INFO] [stdout] 2025-10-01T20:04:32.151283Z  INFO vyder_core::lexer: Char at distance 1 from 6 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.151290Z  INFO vyder_core::lexer: Char at distance 1 from 6 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.151302Z  INFO vyder_core::lexer: Next token is '/' [INFO] [stdout] 2025-10-01T20:04:32.151311Z  INFO vyder_core::lexer: Advancing to char index 7 [INFO] [stdout] 2025-10-01T20:04:32.151317Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151323Z  INFO vyder_core::lexer: Constructing span at line 2, column 5 [INFO] [stdout] 2025-10-01T20:04:32.151329Z  INFO vyder_core::lexer: getting line 1 [INFO] [stdout] 2025-10-01T20:04:32.151336Z  INFO vyder_core::lexer: Char at distance 0 from 7 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.151342Z  INFO vyder_core::lexer: Next token is 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.151430Z  INFO vyder_core::lexer: Constructing span at line 1, column 1 [INFO] [stdout] 2025-10-01T20:04:32.151443Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151452Z  INFO vyder_core::lexer: Char at distance 0 from 0 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.151459Z  INFO vyder_core::lexer: Char at distance 0 from 0 is 'f' [INFO] [stdout] 2025-10-01T20:04:32.151466Z  INFO vyder_core::lexer: Advancing to char index 1 [INFO] [stdout] 2025-10-01T20:04:32.151474Z  INFO vyder_core::lexer: Char at distance 0 from 1 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.151480Z  INFO vyder_core::lexer: Advancing to char index 2 [INFO] [stdout] 2025-10-01T20:04:32.151487Z  INFO vyder_core::lexer: Char at distance 0 from 2 is 'o' [INFO] [stdout] 2025-10-01T20:04:32.151494Z  INFO vyder_core::lexer: Advancing to char index 3 [INFO] [stdout] 2025-10-01T20:04:32.151502Z  INFO vyder_core::lexer: Char at distance 0 from 3 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.151509Z  INFO vyder_core::lexer: Next token is 'foo' [INFO] [stdout] 2025-10-01T20:04:32.151527Z  INFO vyder_core::lexer: Advancing to char index 3 [INFO] [stdout] 2025-10-01T20:04:32.151534Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151540Z  INFO vyder_core::lexer: Constructing span at line 1, column 4 [INFO] [stdout] 2025-10-01T20:04:32.151547Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151555Z  INFO vyder_core::lexer: Char at distance 0 from 3 is ' ' [INFO] [stdout] 2025-10-01T20:04:32.151562Z  INFO vyder_core::lexer: Advancing to char index 4 [INFO] [stdout] 2025-10-01T20:04:32.151568Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151574Z  INFO vyder_core::lexer: Constructing span at line 1, column 5 [INFO] [stdout] 2025-10-01T20:04:32.151581Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151589Z  INFO vyder_core::lexer: Char at distance 0 from 4 is 'r' [INFO] [stdout] 2025-10-01T20:04:32.151597Z  INFO vyder_core::lexer: Char at distance 0 from 4 is 'r' [INFO] [stdout] 2025-10-01T20:04:32.151603Z  INFO vyder_core::lexer: Advancing to char index 5 [INFO] [stdout] 2025-10-01T20:04:32.151610Z  INFO vyder_core::lexer: Char at distance 0 from 5 is 'e' [INFO] [stdout] 2025-10-01T20:04:32.151618Z  INFO vyder_core::lexer: Advancing to char index 6 [INFO] [stdout] 2025-10-01T20:04:32.151625Z  INFO vyder_core::lexer: Char at distance 0 from 6 is 't' [INFO] [stdout] 2025-10-01T20:04:32.151632Z  INFO vyder_core::lexer: Advancing to char index 7 [INFO] [stdout] 2025-10-01T20:04:32.151639Z  INFO vyder_core::lexer: Char at distance 0 from 7 is 'u' [INFO] [stdout] 2025-10-01T20:04:32.151646Z  INFO vyder_core::lexer: Advancing to char index 8 [INFO] [stdout] 2025-10-01T20:04:32.151652Z  INFO vyder_core::lexer: Char at distance 0 from 8 is 'r' [INFO] [stdout] 2025-10-01T20:04:32.151659Z  INFO vyder_core::lexer: Advancing to char index 9 [INFO] [stdout] 2025-10-01T20:04:32.151666Z  INFO vyder_core::lexer: Char at distance 0 from 9 is 'n' [INFO] [stdout] 2025-10-01T20:04:32.151672Z  INFO vyder_core::lexer: Advancing to char index 10 [INFO] [stdout] 2025-10-01T20:04:32.151680Z  INFO vyder_core::lexer: Char at distance 0 from 10 is ')' [INFO] [stdout] 2025-10-01T20:04:32.151688Z  INFO vyder_core::lexer: Next token is 'return' [INFO] [stdout] 2025-10-01T20:04:32.151697Z  INFO vyder_core::lexer: Advancing to char index 10 [INFO] [stdout] 2025-10-01T20:04:32.151703Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151710Z  INFO vyder_core::lexer: Constructing span at line 1, column 11 [INFO] [stdout] 2025-10-01T20:04:32.151716Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151724Z  INFO vyder_core::lexer: Char at distance 0 from 10 is ')' [INFO] [stdout] 2025-10-01T20:04:32.151731Z  INFO vyder_core::lexer: Next token is ')' [INFO] [stdout] 2025-10-01T20:04:32.151741Z  INFO vyder_core::lexer: Advancing to char index 11 [INFO] [stdout] 2025-10-01T20:04:32.151747Z  INFO vyder_core::lexer: Normal get_token function [INFO] [stdout] 2025-10-01T20:04:32.151753Z  INFO vyder_core::lexer: Constructing span at line 1, column 12 [INFO] [stdout] 2025-10-01T20:04:32.151760Z  INFO vyder_core::lexer: getting line 0 [INFO] [stdout] 2025-10-01T20:04:32.151768Z  INFO vyder_core::lexer: Char at distance 0 from 11 is 'None' [INFO] [stdout] 2025-10-01T20:04:32.151775Z  INFO vyder_core::lexer: Next token is 'EOF' [INFO] [stdout] test interpreter::tests::negate_test ... ok [INFO] [stdout] test lexer::tests::numbers_test ... ok [INFO] [stdout] test parser::tests::field_access_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.152149Z  INFO vyder_core::interpreter: evaluating 'not' [INFO] [stdout] test lexer::tests::operators_test ... ok [INFO] [stdout] test lexer::tests::identifiers_test ... ok [INFO] [stdout] test statement::tests::expect_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.152390Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] test interpreter::tests::not_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.152411Z  INFO vyder_core::parser: Token at distance 0 from 0 is '1' at test 1:1 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.152423Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.152435Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.152448Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.152458Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] test token::tests::expect_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.152470Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.152482Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.152492Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.152503Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.152523Z  INFO vyder_core::parser: Token at distance 0 from 0 is '1' at test 1:1 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.152551Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.152624Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.153098Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.155163Z  INFO vyder_core::parser: Token at distance 0 from 0 is '!' at test 1:1 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155284Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.155368Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.155429Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.155485Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.155497Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.155510Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.155521Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.155532Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.155546Z  INFO vyder_core::parser: Token at distance 0 from 0 is '!' at test 1:1 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155566Z  INFO vyder_core::parser: Advancing to token index 1: '-' [INFO] [stdout] 2025-10-01T20:04:32.155576Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.155588Z  INFO vyder_core::parser: Token at distance 0 from 1 is '-' at test 1:2 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155596Z  INFO vyder_core::parser: Advancing to token index 2: 'foo' [INFO] [stdout] 2025-10-01T20:04:32.155602Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.155618Z  INFO vyder_core::parser: Token at distance 0 from 2 is 'foo' at test 1:3 - 1:5 (3 chars) [INFO] [stdout] | !-foo; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.155641Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.155713Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.155729Z  INFO vyder_core::parser: Token at distance 0 from 2 is 'foo' at test 1:3 - 1:5 (3 chars) [INFO] [stdout] | !-foo; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.155736Z  INFO vyder_core::parser: Advancing to token index 3: ';' [INFO] [stdout] 2025-10-01T20:04:32.155752Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155767Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155776Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155786Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155797Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155807Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155816Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155826Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155832Z  INFO vyder_core::parser: Parsed expression ''Not' at test 1:1 - 1:5 (5 chars) [INFO] [stdout] | !-foo; [INFO] [stdout] ^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.155847Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155855Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.155862Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:6 [INFO] [stdout] | !-foo; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.155871Z  INFO vyder_core::parser: Advancing to token index 4: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.155879Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.155886Z  INFO vyder_core::parser: parsed statement ''Not;' at test 1:1 - 1:6 (6 chars) [INFO] [stdout] | !-foo; [INFO] [stdout] ^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.155898Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.155904Z  INFO vyder_core::parser: Token at distance 0 from 4 is None [INFO] [stdout] 2025-10-01T20:04:32.156052Z  INFO vyder_core::parser: Token at distance 0 from 0 is '1' at test 1:1 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.156090Z  INFO vyder_core::parser: Advancing to token index 1: '..' [INFO] [stdout] 2025-10-01T20:04:32.156127Z  INFO vyder_core::parser: Token at distance 0 from 1 is '..' at test 1:2 - 1:3 (2 chars) [INFO] [stdout] | 1..3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.156160Z  INFO vyder_core::parser: Token at distance 0 from 1 is '..' at test 1:2 - 1:3 (2 chars) [INFO] [stdout] | 1..3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.156192Z  INFO vyder_core::parser: Token at distance 0 from 1 is '..' at test 1:2 - 1:3 (2 chars) [INFO] [stdout] | 1..3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.156220Z  INFO vyder_core::parser: Token at distance 0 from 1 is '..' at test 1:2 - 1:3 (2 chars) [INFO] [stdout] | 1..3; [INFO] [stdout] ^^ here [INFO] [stdout] 2025-10-01T20:04:32.156247Z  INFO vyder_core::parser: Advancing to token index 2: '3' [INFO] [stdout] 2025-10-01T20:04:32.156269Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.156291Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.156314Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.156341Z  INFO vyder_core::parser: Token at distance 0 from 2 is '3' at test 1:4 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.156374Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.156397Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.156424Z  INFO vyder_core::parser: Token at distance 0 from 2 is '3' at test 1:4 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.156452Z  INFO vyder_core::parser: Advancing to token index 3: ';' [INFO] [stdout] 2025-10-01T20:04:32.156483Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.156510Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158005Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158028Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158038Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158055Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158065Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158071Z  INFO vyder_core::parser: Parsed expression ''Range' at test 1:1 - 1:4 (4 chars) [INFO] [stdout] | 1..3; [INFO] [stdout] ^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.158085Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158094Z  INFO vyder_core::parser: Token at distance 0 from 3 is ';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.158101Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:5 [INFO] [stdout] | 1..3; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.158110Z  INFO vyder_core::parser: Advancing to token index 4: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.158116Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.158123Z  INFO vyder_core::parser: parsed statement ''Range;' at test 1:1 - 1:5 (5 chars) [INFO] [stdout] | 1..3; [INFO] [stdout] ^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.158134Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.158140Z  INFO vyder_core::parser: Token at distance 0 from 4 is None [INFO] [stdout] test parser::tests::unary_test ... ok [INFO] [stdout] test parser::tests::ranges_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.164308Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.164352Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo[1]; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.164365Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.164377Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.164391Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.164402Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.164413Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.164426Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.164442Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.164454Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.164466Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo[1]; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.164490Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.164563Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.164577Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo[1]; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.164585Z  INFO vyder_core::parser: Advancing to token index 1: '[' [INFO] [stdout] 2025-10-01T20:04:32.164596Z  INFO vyder_core::parser: Token at distance 0 from 1 is '[' at test 1:4 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164604Z  INFO vyder_core::parser: Advancing to token index 2: '1' [INFO] [stdout] 2025-10-01T20:04:32.164610Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.164616Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.164621Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.164627Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.164633Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.164638Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.164644Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.164649Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.164659Z  INFO vyder_core::parser: Token at distance 0 from 2 is '1' at test 1:5 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164671Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.164727Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.164740Z  INFO vyder_core::parser: Token at distance 0 from 2 is '1' at test 1:5 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164747Z  INFO vyder_core::parser: Advancing to token index 3: ']' [INFO] [stdout] 2025-10-01T20:04:32.164757Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164766Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164776Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164787Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164799Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164808Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164817Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164826Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164833Z  INFO vyder_core::parser: Parsed expression ''1' at test 1:5 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.164846Z  INFO vyder_core::parser: Token at distance 0 from 3 is ']' at test 1:6 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164854Z  INFO vyder_core::parser: Advancing to token index 4: ';' [INFO] [stdout] 2025-10-01T20:04:32.164863Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164873Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164881Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164891Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164901Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164909Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164918Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164931Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164936Z  INFO vyder_core::parser: Parsed expression ''Index' at test 1:1 - 1:6 (6 chars) [INFO] [stdout] | foo[1]; [INFO] [stdout] ^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.164951Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164959Z  INFO vyder_core::parser: Token at distance 0 from 4 is ';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.164984Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:7 [INFO] [stdout] | foo[1]; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.167436Z  INFO vyder_core::parser: Advancing to token index 5: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.168443Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.168703Z  INFO vyder_core::parser: parsed statement ''Index;' at test 1:1 - 1:7 (7 chars) [INFO] [stdout] | foo[1]; [INFO] [stdout] ^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.168902Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.169000Z  INFO vyder_core::parser: Token at distance 0 from 5 is None [INFO] [stdout] test parser::tests::index_test ... ok [INFO] [stdout] 2025-10-01T20:04:32.169563Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.169597Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.169626Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.169637Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.169649Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.169660Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.169675Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.169688Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.169703Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.169725Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.169739Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.169760Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.169823Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.169844Z  INFO vyder_core::parser: Token at distance 0 from 0 is 'foo' at test 1:1 - 1:3 (3 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^ here [INFO] [stdout] 2025-10-01T20:04:32.169853Z  INFO vyder_core::parser: Advancing to token index 1: '=' [INFO] [stdout] 2025-10-01T20:04:32.169863Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169873Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169883Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169892Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169905Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169921Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169931Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169939Z  INFO vyder_core::parser: Token at distance 0 from 1 is '=' at test 1:5 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.169947Z  INFO vyder_core::parser: Advancing to token index 2: '(' [INFO] [stdout] 2025-10-01T20:04:32.169953Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.169959Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.169982Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.169988Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.169994Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.169999Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.170005Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.170010Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.170020Z  INFO vyder_core::parser: Token at distance 0 from 2 is '(' at test 1:7 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.170041Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.170055Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.170066Z  INFO vyder_core::parser: Token at distance 0 from 2 is '(' at test 1:7 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.170073Z  INFO vyder_core::parser: Advancing to token index 3: 'import' [INFO] [stdout] 2025-10-01T20:04:32.170084Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.170097Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.170107Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.170117Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.170129Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.170139Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.170151Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.170159Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.170175Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'import' at test 1:8 - 1:13 (6 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^^ here [INFO] [stdout] 2025-10-01T20:04:32.170198Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.170266Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.170282Z  INFO vyder_core::parser: Token at distance 0 from 3 is 'import' at test 1:8 - 1:13 (6 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^^ here [INFO] [stdout] 2025-10-01T20:04:32.170291Z  INFO vyder_core::parser: Advancing to token index 4: '(' [INFO] [stdout] 2025-10-01T20:04:32.170302Z  INFO vyder_core::parser: Token at distance 0 from 4 is '(' at test 1:14 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.170308Z  INFO vyder_core::parser: Advancing to token index 5: '"std"' [INFO] [stdout] 2025-10-01T20:04:32.170320Z  INFO vyder_core::parser: Token at distance 0 from 5 is '"std"' at test 1:15 - 1:19 (5 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^ here [INFO] [stdout] 2025-10-01T20:04:32.170327Z  INFO vyder_core::parser: get_expression function [INFO] [stdout] 2025-10-01T20:04:32.170333Z  INFO vyder_core::parser: get_combiner function [INFO] [stdout] 2025-10-01T20:04:32.170338Z  INFO vyder_core::parser: get_equality function [INFO] [stdout] 2025-10-01T20:04:32.170343Z  INFO vyder_core::parser: get_comparison function [INFO] [stdout] 2025-10-01T20:04:32.170349Z  INFO vyder_core::parser: get_range function [INFO] [stdout] 2025-10-01T20:04:32.170354Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.170360Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.170365Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.170377Z  INFO vyder_core::parser: Token at distance 0 from 5 is '"std"' at test 1:15 - 1:19 (5 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^ here [INFO] [stdout] 2025-10-01T20:04:32.170392Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.170457Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.170474Z  INFO vyder_core::parser: Token at distance 0 from 5 is '"std"' at test 1:15 - 1:19 (5 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^ here [INFO] [stdout] 2025-10-01T20:04:32.171025Z  INFO vyder_core::parser: Advancing to token index 6: ')' [INFO] [stdout] 2025-10-01T20:04:32.171210Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.197515Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.206334Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.206370Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.206394Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.215040Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.215151Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.215329Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.215608Z  INFO vyder_core::parser: Parsed expression ''"std"' at test 1:15 - 1:19 (5 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.216708Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.217331Z  INFO vyder_core::parser: Token at distance 0 from 6 is ')' at test 1:20 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.217363Z  INFO vyder_core::parser: Advancing to token index 7: '.' [INFO] [stdout] 2025-10-01T20:04:32.217431Z  INFO vyder_core::parser: Token at distance 0 from 7 is '.' at test 1:21 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.217456Z  INFO vyder_core::parser: Advancing to token index 8: 'argc' [INFO] [stdout] 2025-10-01T20:04:32.217482Z  INFO vyder_core::parser: Token at distance 0 from 8 is 'argc' at test 1:22 - 1:25 (4 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^ here [INFO] [stdout] 2025-10-01T20:04:32.217536Z  INFO vyder_core::parser: Advancing to token index 9: '+' [INFO] [stdout] 2025-10-01T20:04:32.217570Z  INFO vyder_core::parser: Token at distance 0 from 9 is '+' at test 1:27 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.217593Z  INFO vyder_core::parser: ending branch for field access at token Some(Token { value: Plus(Plus), span: Span { start_location: Location { line: 1, column: 27, char_index: 26 }, end_location: None, module_name: "test", snippet: Some("foo = (import('std').argc + 2) + 2;") } }) [INFO] [stdout] 2025-10-01T20:04:32.217663Z  INFO vyder_core::parser: Token at distance 0 from 9 is '+' at test 1:27 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.217697Z  INFO vyder_core::parser: Token at distance 0 from 9 is '+' at test 1:27 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.219615Z  INFO vyder_core::parser: Token at distance 0 from 9 is '+' at test 1:27 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.219684Z  INFO vyder_core::parser: Advancing to token index 10: '2' [INFO] [stdout] 2025-10-01T20:04:32.219711Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.224493Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.224584Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.224773Z  INFO vyder_core::parser: Token at distance 0 from 10 is '2' at test 1:29 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.227541Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.227605Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.227646Z  INFO vyder_core::parser: Token at distance 0 from 10 is '2' at test 1:29 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.227716Z  INFO vyder_core::parser: Advancing to token index 11: ')' [INFO] [stdout] 2025-10-01T20:04:32.227787Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.227840Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.227919Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228004Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228029Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228119Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228183Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228494Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228537Z  INFO vyder_core::parser: Parsed expression ''Addition' at test 1:8 - 1:29 (22 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^^^^^^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.228628Z  INFO vyder_core::parser: Token at distance 0 from 11 is ')' at test 1:30 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.228716Z  INFO vyder_core::parser: Advancing to token index 12: '+' [INFO] [stdout] 2025-10-01T20:04:32.229801Z  INFO vyder_core::parser: Token at distance 0 from 12 is '+' at test 1:32 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.229897Z  INFO vyder_core::parser: Token at distance 0 from 12 is '+' at test 1:32 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.229981Z  INFO vyder_core::parser: Token at distance 0 from 12 is '+' at test 1:32 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.230071Z  INFO vyder_core::parser: Advancing to token index 13: '2' [INFO] [stdout] 2025-10-01T20:04:32.230105Z  INFO vyder_core::parser: get_term function [INFO] [stdout] 2025-10-01T20:04:32.230162Z  INFO vyder_core::parser: get_factor function [INFO] [stdout] 2025-10-01T20:04:32.230290Z  INFO vyder_core::parser: get_unary function [INFO] [stdout] 2025-10-01T20:04:32.230374Z  INFO vyder_core::parser: Token at distance 0 from 13 is '2' at test 1:34 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.230439Z  INFO vyder_core::parser: get_properties function [INFO] [stdout] 2025-10-01T20:04:32.230475Z  INFO vyder_core::parser: get_primary function [INFO] [stdout] 2025-10-01T20:04:32.230540Z  INFO vyder_core::parser: Token at distance 0 from 13 is '2' at test 1:34 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.230573Z  INFO vyder_core::parser: Advancing to token index 14: ';' [INFO] [stdout] 2025-10-01T20:04:32.230648Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.230734Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.230802Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.230845Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.231805Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.232547Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.232631Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.232673Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.232767Z  INFO vyder_core::parser: Parsed expression ''Assignment' at test 1:1 - 1:34 (34 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.232855Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.232897Z  INFO vyder_core::parser: Token at distance 0 from 14 is ';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here [INFO] [stdout] 2025-10-01T20:04:32.232978Z  INFO vyder_core::parser: token after statement parse is '';' at test 1:35 [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] [INFO] [stdout] ^ here' [INFO] [stdout] 2025-10-01T20:04:32.233229Z  INFO vyder_core::parser: Advancing to token index 15: 'EOF' [INFO] [stdout] 2025-10-01T20:04:32.233272Z  INFO vyder_core::parser: exit get_statement [INFO] [stdout] 2025-10-01T20:04:32.233346Z  INFO vyder_core::parser: parsed statement ''Assignment;' at test 1:1 - 1:35 (35 chars) [INFO] [stdout] | foo = (import('std').argc + 2) + 2; [INFO] [stdout] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ here' [INFO] [stdout] 2025-10-01T20:04:32.233395Z  INFO vyder_core::parser: get_statement function [INFO] [stdout] 2025-10-01T20:04:32.233466Z  INFO vyder_core::parser: Token at distance 0 from 15 is None [INFO] [stdout] test parser::tests::import_test ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s [INFO] [stdout] [INFO] [stderr] Running unittests src/bin/vyder_debug_cli/main.rs (/opt/rustwide/target/debug/deps/vyder_debug_cli-bb2043fe6848a052) [INFO] [stdout] [INFO] [stderr] Doc-tests vyder_core [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test src/expression/mod.rs - expression::Expression::expect (line 23) ... ok [INFO] [stdout] test src/statement/mod.rs - statement::Statement::expect (line 23) ... ok [INFO] [stdout] test src/token/mod.rs - token::Token::expect (line 22) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "4dbaee7cd854989e68f91264e876e94077544b529212708af5246cde550661a6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4dbaee7cd854989e68f91264e876e94077544b529212708af5246cde550661a6", kill_on_drop: false }` [INFO] [stdout] 4dbaee7cd854989e68f91264e876e94077544b529212708af5246cde550661a6