Skip to content

Fix parser regressions and native target CI - #486

Merged
LunaStev merged 3 commits into
wavefnd:masterfrom
LunaStev:fix/ci-followups-482-484
Sep 7, 2026
Merged

Fix parser regressions and native target CI#486
LunaStev merged 3 commits into
wavefnd:masterfrom
LunaStev:fix/ci-followups-482-484

Conversation

@LunaStev

@LunaStev LunaStev commented Sep 7, 2026

Copy link
Copy Markdown
Member

Summary

Fix parser crashes and silently skipped tokens, preserve source locations through imports and generic expansion, and use consistent numeric conversion from lexer to LLVM. The series also fixes projected pointer loads exposed by Linux ARM64 ByteWriter initialization, supplies the native Windows ARM64 LLVM XML link dependency, and executes target-feature regression tests in CI.

  • Build SHA-256-pinned libxml2 with native ARM64 MSVC/clang-cl, verify COFF object architectures, and reuse provisioning in build/cases/release jobs.
  • Load projected fields using their actual storage types. Keep shared/test85 and add shared/test103.
  • Gate LoongArch-specific tests and mixed target entries by enabled LLVM features; execute the complete core64 suite and scoped LoongArch interoperability tests.
  • Share block parsing, numeric literal/default conversion and target-sized integer resolution.
  • Preserve physical source ranges and expansion provenance in frontend nodes and diagnostics.

Motivation

isz/usz and radix defaults could panic, unsupported tokens could disappear from function bodies, nested boolean statements were rejected, and inactive imported variants leaked into parsing. An incorrect i8 load from a pointer field could also make ByteWriter fail depending on its address. Core64 tests requested the disabled LoongArch backend, and native Windows ARM64 linking lacked xml2s.lib.

Closes #405
Closes #406
Closes #475
Closes #476
Closes #477
Closes #478
Closes #479
Closes #482
Closes #483
Closes #484

Target and compatibility impact

  • Pointer-sized integers resolve against the selected target before semantic analysis.
  • Malformed statements and literal spellings receive errors instead of being silently accepted.
  • Existing -> ! declarations have explicit non-returning control flow and LLVM lowering.
  • Frontend records gain source locations; parameter defaults are Expressions. Source-preserving consumers use parse_syntax_with_spans; parse_syntax_only retains the location-discarding compatibility path.
  • Existing std sources, shared/test85, LoongArch backend code and mirror.yml are preserved.

Validation

Compiler changes passed the local workspace tests, default/core64 Clippy with warnings denied, rustdoc, release build, formatting, std policy and diff checks. The release compiler passed 248 corpus sources and 26 std runtime examples on Linux. Python tooling passed 16 tests and the manifest validated all 40 targets. Frontend tests have been rerun after the latest documentation/test cleanup.

Target validation includes complete core64 execution, isolated WebAssembly/frontend tests, LoongArch Clang/LLD/QEMU interoperability, and original ByteWriter regressions under cross-target QEMU. Native Linux ARM64 build/cases passed in this PR.

Remaining CI blockers

Native Windows ARM64 libxml2, release linking, Clippy and all three Rust unit tests passed before the later smoke/case failures. Resolve the above blockers and rerun required checks before merging. No auto-merge is enabled.

Additional contributor tasks: #487 (isolated frontend CI), #489 (terminal caret alignment), #490 (unfiltered single-backend regressions). #481 remains a separate LP64S runtime verification task.

Checklist

  • Commits include a DCO Signed-off-by line.
  • Tests cover new behavior.
  • Diagnostics cover user-facing errors.
  • The compiler/std license boundary is preserved.
  • Remaining PR CI blockers are resolved.

Signed-off-by: LunaStev <luna@lunastev.org>
…lation

Signed-off-by: LunaStev <luna@lunastev.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment