Skip to content

fix(compiler): preserve self slot for final recursive local - #486

Merged
akonwi merged 1 commit into
mainfrom
fix/final-recursive-local-self-slot
Sep 7, 2026
Merged

fix(compiler): preserve self slot for final recursive local#486
akonwi merged 1 commit into
mainfrom
fix/final-recursive-local-self-slot

Conversation

@akonwi

@akonwi akonwi commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

  • load an existing local named-function binding when its declaration is the block result
  • avoid rebuilding the closure and downgrading its recursive self capture from CaptureSlot to a nil value snapshot
  • cover ordinary function blocks and global initializer blocks with AIR-shape and Go-runtime regressions
  • document the final-declaration lowering contract in ADR 0031

Validation

  • go test ./... -count=1
  • go test -race ./air ./go -count=1
  • go vet ./...
  • gopls check on changed Go files
  • LSP harness: 18/18
  • downstreams: Tinear, Decode, SQL, Cooper

Fixes #484

@vercel

vercel Bot commented Sep 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ard-lang-dev Ready Ready Preview Sep 7, 2026 7:41pm UTC

@akonwi
akonwi merged commit 8e9d02b into main Sep 7, 2026
6 checks passed
@akonwi
akonwi deleted the fix/final-recursive-local-self-slot branch September 7, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(compiler): preserve self slot for final recursive local declaration

1 participant