mem: Step 8 — delete context global from std.sx

The `context : Context = ---;` global in `library/modules/std.sx` had
no remaining readers — all `context.X` lookups in user code resolve
through `current_ctx_ref` (Step 5), `push Context.{...}` uses an alloca
slot (Step 6), and `allocViaContext` sources from the lowering's
current ref. `emitDefaultContextInit` (the only writer) was already
removed in Step 5.

`inferExprType` for the `context` identifier now returns the registered
`Context` type when implicit-ctx is enabled, mirroring the lowering's
identifier-handling fast path. Without this, `context.allocator` would
type as `s64` (the fallback) and the field access would fail.

11 JNI/ObjC IR snapshots regen — the `@context` LLVM global is gone
from each.

152/152 example tests pass.
This commit is contained in:
agra
2026-05-25 09:13:36 +03:00
parent 4bf5908792
commit b69a2ea29c
13 changed files with 5 additions and 13 deletions

View File

@@ -9929,6 +9929,11 @@ pub const Lowering = struct {
return binding.ty;
}
}
// `context` is the implicit-ctx identifier; type is Context
// when the program has registered it (i.e. std.sx imported).
if (self.implicit_ctx_enabled and std.mem.eql(u8, id.name, "context")) {
if (self.module.types.findByName(self.module.types.internString("Context"))) |ty| return ty;
}
// Check global variables (e.g., `context : Context`)
if (self.global_names.get(id.name)) |gi| {
return gi.ty;