lib/c.zig | 2 +- lib/std/os.zig | 2 +- lib/std/process.zig | 2 +- src/AstGen.zig | 27 ++--- src/Sema.zig | 186 +++++++++++++++++++++++++------- src/Zir.zig | 25 +++-- src/print_zir.zig | 5 +- src/type.zig | 2 +- test/cases/compile_errors/assign_to_invalid_dereference.zig | 9 ++ test/cases/compile_errors/bitCast_to_enum_type.zig | 12 +++ test/cases/compile_errors/bogus_compile_var.zig | 8 ++ test/cases/compile_errors/callconv_apcs_aapcs_aapcsvfp_on_unsupported_platform.zig | 11 ++ test/cases/compile_errors/callconv_interrupt_on_unsupported_platform.zig | 7 ++ test/cases/compile_errors/callconv_signal_on_unsupported_platform.zig | 7 ++ test/cases/compile_errors/callconv_stdcall_fastcall_thiscall_on_unsupported_platform.zig | 23 ++++ test/cases/compile_errors/callconv_vectorcall_on_unsupported_platform.zig | 7 ++ test/cases/compile_errors/compile-time_division_by_zero.zig | 12 +++ test/cases/compile_errors/compile-time_remainder_division_by_zero.zig | 12 +++ test/cases/compile_errors/compileLog_of_tagged_enum_doesnt_crash_the_compiler.zig | 17 +++ test/cases/compile_errors/compile_log.zig | 14 +++ test/cases/compile_errors/compile_log_statement_inside_function_which_must_be_comptime_evaluated.zig | 14 +++ test/cases/compile_errors/compile_time_division_by_zero.zig | 13 +++ test/cases/compile_errors/deref_on_undefined_value.zig | 10 ++ test/cases/compile_errors/deref_slice_and_get_len_field.zig | 10 ++ test/cases/compile_errors/dereference_an_array.zig | 14 +++ test/cases/compile_errors/dereference_slice.zig | 12 +++ test/cases/compile_errors/dereference_unknown_length_pointer.zig | 9 ++ test/cases/compile_errors/discarding_error_value.zig | 12 +++ test/cases/compile_errors/division_by_zero.zig | 17 +++ test/cases/compile_errors/duplicate_enum_field.zig | 16 +++ test/cases/compile_errors/duplicate_error_in_switch.zig | 22 ++++ test/cases/compile_errors/error_not_handled_in_switch.zig | 21 ++++ test/cases/compile_errors/explicitly_casting_non_tag_type_to_enum.zig | 18 ++++ test/cases/compile_errors/fieldParentPtr-comptime_field_ptr_not_based_on_struct.zig | 17 +++ test/cases/compile_errors/fieldParentPtr-comptime_wrong_field_index.zig | 17 +++ test/cases/compile_errors/fieldParentPtr-field_pointer_is_not_pointer.zig | 12 +++ test/cases/compile_errors/field_access_of_opaque_type.zig | 16 +++ test/cases/compile_errors/field_access_of_slices.zig | 12 +++ test/cases/compile_errors/field_access_of_unknown_length_pointer.zig | 13 +++ test/cases/compile_errors/ignored_deferred_function_call.zig | 10 ++ test/cases/compile_errors/ignored_expression_in_while_continuation.zig | 22 ++++ test/cases/compile_errors/illegal_comparison_of_types.zig | 20 ++++ test/cases/compile_errors/implicitly_casting_enum_to_tag_type.zig | 17 +++ test/cases/compile_errors/incorrect_return_type.zig | 21 ++++ test/cases/compile_errors/indexing_an_array_of_size_zero.zig | 11 ++ test/cases/compile_errors/indexing_an_array_of_size_zero_with_runtime_index.zig | 12 +++ test/cases/compile_errors/indexing_single-item_pointer.zig | 9 ++ test/cases/compile_errors/invalid_cast_from_integral_type_to_enum.zig | 17 +++ test/cases/compile_errors/invalid_deref_on_switch_target.zig | 17 +++ test/cases/compile_errors/invalid_multiple_dereferences.zig | 19 ++++ test/cases/compile_errors/runtime_indexing_comptime_array.zig | 12 +-- test/cases/compile_errors/stage1/comptime_ptrcast_of_zero-sized_type.zig | 12 +++ test/cases/compile_errors/stage1/deref_on_undefined_value.zig | 10 -- test/cases/compile_errors/stage1/error_equality_but_sets_have_no_common_members.zig | 16 +++ test/cases/compile_errors/stage1/implicit_cast_from_f64_to_f32.zig | 10 ++ test/cases/compile_errors/stage1/int_to_ptr_of_0_bits.zig | 11 ++ test/cases/compile_errors/stage1/obj/assign_to_invalid_dereference.zig | 9 -- test/cases/compile_errors/stage1/obj/bitCast_to_enum_type.zig | 10 -- test/cases/compile_errors/stage1/obj/bogus_compile_var.zig | 8 -- test/cases/compile_errors/stage1/obj/callconv_apcs_aapcs_aapcsvfp_on_unsupported_platform.zig | 11 -- test/cases/compile_errors/stage1/obj/callconv_interrupt_on_unsupported_platform.zig | 7 -- test/cases/compile_errors/stage1/obj/callconv_signal_on_unsupported_platform.zig | 7 -- test/cases/compile_errors/stage1/obj/callconv_stdcall_fastcall_thiscall_on_unsupported_platform-0.zig | 23 ---- test/cases/compile_errors/stage1/obj/callconv_stdcall_fastcall_thiscall_on_unsupported_platform-1.zig | 11 -- test/cases/compile_errors/stage1/obj/callconv_vectorcall_on_unsupported_platform.zig | 7 -- test/cases/compile_errors/stage1/obj/compile-time_division_by_zero.zig | 12 --- test/cases/compile_errors/stage1/obj/compile-time_remainder_division_by_zero.zig | 12 --- test/cases/compile_errors/stage1/obj/compileLog_of_tagged_enum_doesnt_crash_the_compiler.zig | 17 --- test/cases/compile_errors/stage1/obj/compile_log.zig | 16 --- test/cases/compile_errors/stage1/obj/compile_log_statement_inside_function_which_must_be_comptime_evaluated.zig | 14 --- test/cases/compile_errors/stage1/obj/compile_time_division_by_zero.zig | 12 --- test/cases/compile_errors/stage1/obj/comptime_ptrcast_of_zero-sized_type.zig | 12 --- test/cases/compile_errors/stage1/obj/deref_slice_and_get_len_field.zig | 10 -- test/cases/compile_errors/stage1/obj/dereference_an_array.zig | 14 --- test/cases/compile_errors/stage1/obj/dereference_unknown_length_pointer.zig | 9 -- test/cases/compile_errors/stage1/obj/discarding_error_value.zig | 12 --- test/cases/compile_errors/stage1/obj/division_by_zero.zig | 18 ---- test/cases/compile_errors/stage1/obj/duplicate_enum_field.zig | 16 --- test/cases/compile_errors/stage1/obj/duplicate_error_in_switch.zig | 22 ---- test/cases/compile_errors/stage1/obj/error_equality_but_sets_have_no_common_members.zig | 16 --- test/cases/compile_errors/stage1/obj/error_not_handled_in_switch.zig | 20 ---- test/cases/compile_errors/stage1/obj/explicitly_casting_non_tag_type_to_enum.zig | 18 ---- test/cases/compile_errors/stage1/obj/fieldParentPtr-comptime_field_ptr_not_based_on_struct.zig | 17 --- test/cases/compile_errors/stage1/obj/fieldParentPtr-comptime_wrong_field_index.zig | 16 --- test/cases/compile_errors/stage1/obj/fieldParentPtr-field_pointer_is_not_pointer.zig | 12 --- test/cases/compile_errors/stage1/obj/field_access_of_opaque_type.zig | 16 --- test/cases/compile_errors/stage1/obj/field_access_of_slices.zig | 11 -- test/cases/compile_errors/stage1/obj/field_access_of_unknown_length_pointer.zig | 13 --- test/cases/compile_errors/stage1/obj/ignored_deferred_function_call.zig | 10 -- test/cases/compile_errors/stage1/obj/ignored_expression_in_while_continuation.zig | 22 ---- test/cases/compile_errors/stage1/obj/illegal_comparison_of_types.zig | 20 ---- test/cases/compile_errors/stage1/obj/implicit_cast_from_f64_to_f32.zig | 10 -- test/cases/compile_errors/stage1/obj/implicitly_casting_enum_to_tag_type.zig | 17 --- test/cases/compile_errors/stage1/obj/incorrect_return_type.zig | 21 ---- test/cases/compile_errors/stage1/obj/indexing_an_array_of_size_zero.zig | 11 -- test/cases/compile_errors/stage1/obj/indexing_an_array_of_size_zero_with_runtime_index.zig | 12 --- test/cases/compile_errors/stage1/obj/indexing_single-item_pointer.zig | 9 -- test/cases/compile_errors/stage1/obj/int_to_ptr_of_0_bits.zig | 11 -- test/cases/compile_errors/stage1/obj/invalid_cast_from_integral_type_to_enum.zig | 17 --- test/cases/compile_errors/stage1/obj/invalid_deref_on_switch_target.zig | 17 --- test/cases/compile_errors/stage1/obj/invalid_multiple_dereferences.zig | 19 ---- test/cases/compile_errors/stage1/obj/take_slice_of_invalid_dereference.zig | 10 -- test/cases/compile_errors/take_slice_of_invalid_dereference.zig | 10 ++ test/stage2/cbe.zig | 4 +- 104 files changed, 840 insertions(+), 719 deletions(-)