Problem
The Home checker uses Void as "type not known", and checkAssignable accepts Void against any expected type ("gradual typing"). Unknown type names, unknown generics, tuple destructuring, imported namespaces, closures and match expressions all degrade to Void, so errors silently disappear. Type already has an .Unknown variant (~:618) that the checker does not use.
Evidence (origin/main @ d4b219507)
packages/types/src/type_system.zig:1966-1971packages/types/src/type_system.zig:2148packages/types/src/type_system.zig:2300packages/types/src/type_system.zig:2737packages/types/src/type_system.zig:4137packages/types/src/type_system.zig:4216packages/types/src/type_system.zig:1493-1500packages/types/src/type_system.zig:985-996packages/types/src/type_system.zig:2713-2721
Scope
- Introduce a distinct internal error/unknown type that is not assignable everywhere (and suppresses cascades).
- An unresolved type name is a diagnostic, not
Void. - Type tuple destructuring, closures and
matchresults properly (match: join of all arms).
Acceptance criteria
let x: Nonexistent = 1is an error.let (a, b) = (1, "s"); a + bis an error.foo.anythingon an import alias is an error whenanythingis not exported.home check examples/re-baselined, with remaining diagnostics triaged.