src/AstGen.zig | 9 - src/Sema.zig | 399 ++++++++++++++++++++++---------- src/print_zir.zig | 15 +- src/type.zig | 5 +- test/behavior.zig | 1 + test/behavior/empty_union.zig | 54 +++++ test/behavior/error.zig | 62 ++++- test/behavior/optional.zig | 36 +++ test/behavior/union.zig | 45 ++++ test/cases/compile_errors/enum_with_0_fields.zig | 7 - test/cases/compile_errors/invalid_error_union_payload_type.zig | 13 ++ test/cases/compile_errors/invalid_optional_payload_type.zig | 13 ++ test/cases/compile_errors/noreturn_struct_field.zig | 12 + test/cases/compile_errors/reify_type_for_exhaustive_enum_with_zero_fields.zig | 18 -- test/cases/compile_errors/reify_type_for_union_with_zero_fields.zig | 17 -- test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig | 2 - test/cases/compile_errors/union_fields_with_value_assignments.zig | 7 - test/cases/compile_errors/union_noreturn_field_initialized.zig | 43 ++++ test/cases/compile_errors/union_with_0_fields.zig | 7 - test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig | 11 - test/stage2/cbe.zig | 9 - 21 files changed, 573 insertions(+), 212 deletions(-)