green(reify): field_type($T, i) -> Type over the type table
REIFY Phase 2.1. fieldTypeOf (lower/generic.zig, re-exported on Lowering) returns the i-th member type of T: struct field / tagged-union + union variant payload (.void for a tagless variant) / tuple element / array + vector element. Out-of-range and memberless types poison to .unresolved with a loud diagnostic (never a silent default). Wired into resolveTypeCallWithBindings (replacing the Phase-2 bail); since it folds to a TypeId at lower time it composes inside type_eq / type_name / any type-arg slot. examples/0616 green: struct fields (name via field_name + type via field_type), type_eq fold, tagged-union payloads incl. quit -> void. Suite green (672 examples, 447 unit). type_info($T) -> TypeInfo (reflect into a value, inverse of reify) is NOT done — still bails loudly; it's the larger Phase 2.2 step (widen the TypeInfo data model + comptime value construction). Plan/checkpoint updated.
This commit is contained in:
@@ -1894,6 +1894,7 @@ pub const Lowering = struct {
|
||||
pub const flatFnAuthorAmbiguous = lower_generic.flatFnAuthorAmbiguous;
|
||||
pub const flatFnAuthorVisible = lower_generic.flatFnAuthorVisible;
|
||||
pub const resolveTypeCallWithBindings = lower_generic.resolveTypeCallWithBindings;
|
||||
pub const fieldTypeOf = lower_generic.fieldTypeOf;
|
||||
pub const resolveParameterizedWithBindings = lower_generic.resolveParameterizedWithBindings;
|
||||
pub const resolveValueParamArg = lower_generic.resolveValueParamArg;
|
||||
pub const canonicalIntConstraintName = lower_generic.canonicalIntConstraintName;
|
||||
|
||||
Reference in New Issue
Block a user