lang: rename signed integer types sN -> iN
Surface rename of the signed integer family: s1..s64 become i1..i64
(u1..u64, usize, isize unchanged). 'string' keeps the s-prefix arm in
name classification; width parsing moves to the i-prefix arm next to
isize.
Internal TypeId tags follow the surface (.s8/.s16/.s32/.s64 ->
.i8/.i16/.i32/.i64), as do mono-key mangle fragments (ptr_i64,
tu_i64_bool) and all display/diagnostic formatting (i{d}).
Migrated in the same sweep: stdlib + examples + issue repros + FFI C
companions (shared symbol names like ffi_id_i64), expected
stdout/stderr/ir snapshots, specs.md, readme.md, CLAUDE.md/AGENTS.md,
implementation_plan.md, docs/, issue writeups. Vendored stb_image and
historical flow state left untouched.
zig build test: 426/426; examples suite: 595/595.
This commit is contained in:
@@ -67,10 +67,10 @@ pub fn registerProtocolDecl(self: *Lowering, pd: *const ast.ProtocolDecl) void {
|
||||
}
|
||||
|
||||
/// Instantiate a parameterized protocol as a runtime VALUE type:
|
||||
/// `VL(s64)` → a 16-byte `{ctx, __vtable}` protocol value (`is_protocol`),
|
||||
/// `VL(i64)` → a 16-byte `{ctx, __vtable}` protocol value (`is_protocol`),
|
||||
/// with method infos resolved under the type-arg binding (so `get -> T`
|
||||
/// becomes `get -> s64`) and the binding recorded for projection. Cached by
|
||||
/// the mangled name `VL__s64`. Mirrors the non-parameterized path in
|
||||
/// becomes `get -> i64`) and the binding recorded for projection. Cached by
|
||||
/// the mangled name `VL__i64`. Mirrors the non-parameterized path in
|
||||
/// `registerProtocolDecl`.
|
||||
pub fn instantiateParamProtocol(self: *Lowering, pd: *const ast.ProtocolDecl, args: []const *const Node) TypeId {
|
||||
const table = &self.module.types;
|
||||
@@ -105,7 +105,7 @@ pub fn instantiateParamProtocol(self: *Lowering, pd: *const ast.ProtocolDecl, ar
|
||||
const id = if (table.findByName(name_id)) |existing| existing else table.intern(struct_info);
|
||||
table.updatePreservingKey(id, struct_info);
|
||||
|
||||
// Method infos resolved with the type-arg binding (T → s64), pinned to
|
||||
// Method infos resolved with the type-arg binding (T → i64), pinned to
|
||||
// the protocol's OWN module (E4) so a method-signature type visible only
|
||||
// there resolves correctly when instantiated cross-module. `Self` and the
|
||||
// bound type-args short-circuit before the leaf; a concrete library type
|
||||
@@ -332,10 +332,10 @@ pub fn createProtocolThunk(self: *Lowering, proto_name: []const u8, concrete_typ
|
||||
if (self.program_index.fn_ast_map.contains(qualified)) {
|
||||
self.lazyLowerFunction(qualified);
|
||||
} else if (self.genericInstanceMethod(concrete_type_name, method.name)) |gm| {
|
||||
// Generic-struct instance (`Combined__s64_s64`): the impl method is
|
||||
// Generic-struct instance (`Combined__i64_i64`): the impl method is
|
||||
// authored on the instance's STAMPED decl (CP-4). Monomorphize it
|
||||
// for this instance's bindings so the thunk has a concrete
|
||||
// `Combined__s64_s64.get` to call.
|
||||
// `Combined__i64_i64.get` to call.
|
||||
self.monomorphizeFunction(gm.fd, qualified, gm.bindings);
|
||||
}
|
||||
}
|
||||
@@ -441,7 +441,7 @@ pub fn buildProtocolValue(self: *Lowering, concrete_ptr: Ref, proto_name: []cons
|
||||
var ctx_ptr = concrete_ptr;
|
||||
if (heap_copy) {
|
||||
const concrete_size = self.module.types.typeSizeBytes(concrete_ty);
|
||||
const size_ref = self.builder.constInt(@intCast(concrete_size), .s64);
|
||||
const size_ref = self.builder.constInt(@intCast(concrete_size), .i64);
|
||||
const heap_ptr = self.allocViaContext(size_ref, void_ptr_ty);
|
||||
_ = self.callForeign("memcpy", &.{ heap_ptr, concrete_ptr, size_ref }, void_ptr_ty);
|
||||
ctx_ptr = heap_ptr;
|
||||
@@ -591,7 +591,7 @@ pub fn emitProtocolDispatch(self: *Lowering, receiver: Ref, proto_info: Protocol
|
||||
/// Handles both direct types and pointer-to-types.
|
||||
pub fn resolveConcreteTypeName(self: *Lowering, ty: TypeId) ?[]const u8 {
|
||||
if (ty.isBuiltin()) {
|
||||
// Primitive types like s64 — check if they have toName()
|
||||
// Primitive types like i64 — check if they have toName()
|
||||
return self.module.types.typeName(ty);
|
||||
}
|
||||
const info = self.module.types.get(ty);
|
||||
|
||||
Reference in New Issue
Block a user