inferExprType now returns .unresolved when it genuinely cannot infer a type, instead of silently guessing .s64. To keep codegen correct, every consumer that turns inference into a concrete type was fixed to resolve it properly rather than lean on the fake s64: - pack-fn mono: value-pack params type from the lowered Ref (getRefType); comptime ..$args prefers inference (int-literal default is s64) and falls back to the lowered type only when inference cannot tell. - if-expr / match merge result type: fall back to the contextual target_type when the branch/arm type is not statically inferable; a statement match with non-value arms stays void (do not let a leaked target_type make it a value). - inferExprType call arm: resolve a not-yet-lowered function return type from fn_ast_map (void for a return-less fn) instead of falling through. - lowerBinaryOp: type the result from the lowered LHS when inference is unresolved (e.g. #objc_call(...) * 2). - null comparison (x == null): lower the non-null side first and take the null type from it, never a guess. A consequence: `xx enum` with no target type now boxes as Any (prints the variant name) instead of the silent-s64 int -- examples/52 snapshot updated to the honest output. 236 examples + unit tests green.
7 lines
105 B
Plaintext
7 lines
105 B
Plaintext
ok: floating is null
|
|
ok: left h=.leading
|
|
ok: center h=.center
|
|
ok: top_right h=.trailing v=.top
|
|
rect
|
|
text
|