doc/langref.html.in | 76 +++++-- doc/langref/runtime_invalid_enum_cast.zig | 12 +- doc/langref/test_comptime_invalid_enum_cast.zig | 4 +- doc/langref/test_enums.zig | 28 ++- doc/langref/test_inline_else.zig | 4 +- doc/langref/test_packed_struct_backing_int.zig | 21 ++ doc/langref/test_tagged_union_with_tag_values.zig | 4 +- lib/std/meta.zig | 38 +++- lib/std/zig.zig | 2 - lib/std/zig/Ast/Render.zig | 21 +- lib/std/zig/AstGen.zig | 18 ++ lib/std/zig/AstRlAnnotate.zig | 2 + lib/std/zig/BuiltinFn.zig | 16 ++ lib/std/zig/Zir.zig | 30 ++- lib/std/zig/parser_test.zig | 62 +++++- src/Air.zig | 6 + src/Air/Legalize.zig | 130 +++++++++-- src/Air/Liveness.zig | 1 + src/Air/Liveness/Verify.zig | 1 + src/Air/Verify.zig | 2 +- src/Air/print.zig | 1 + src/InternPool.zig | 10 +- src/Sema.zig | 347 +++++++++++++++++++++-------- src/Sema/reinterpret.zig | 8 +- src/Sema/type_resolution.zig | 30 ++- src/Type.zig | 46 ++-- src/Value.zig | 17 +- src/Zcu/PerThread.zig | 35 ++- src/codegen.zig | 2 +- src/codegen/aarch64.zig | 6 +- src/codegen/aarch64/Select.zig | 2 + src/codegen/c.zig | 6 +- src/codegen/c/type.zig | 3 +- src/codegen/c/type/render_defs.zig | 4 +- src/codegen/llvm.zig | 2 +- src/codegen/llvm/FuncGen.zig | 29 ++- src/codegen/riscv64/CodeGen.zig | 5 +- src/codegen/sparc64/CodeGen.zig | 3 +- src/codegen/spirv/CodeGen.zig | 21 +- src/codegen/wasm/CodeGen.zig | 24 +- src/codegen/x86_64/CodeGen.zig | 2 + src/link/Dwarf.zig | 1 + src/link/Wasm/Flush.zig | 2 +- src/print_value.zig | 30 ++- src/print_zir.zig | 14 ++ stage1/zig1.wasm | Bin 3212254 -> 3223935 bytes test/behavior.zig | 1 + test/behavior/backing_int.zig | 384 ++++++++++++++++++++++++++++++++ test/behavior/enum.zig | 38 ++-- test/behavior/packed-struct.zig | 44 +++- test/behavior/packed-union.zig | 27 +++ test/behavior/switch.zig | 4 +- test/behavior/type.zig | 14 +- test/cases/compile_errors/backing_int_invalid_arg_type.zig | 38 ++++ test/cases/compile_errors/bitCast_with_invalid_array_element_type.zig | 23 -- test/cases/compile_errors/bitcast_invalid_types.zig | 205 +++++++++++++++++ test/cases/compile_errors/bitcast_to_enum_invalid_tag_value.zig | 16 ++ test/cases/compile_errors/empty_enum_from_backing_int.zig | 18 ++ test/cases/compile_errors/enum_noreturn_backing_type.zig | 16 ++ test/cases/compile_errors/extern_struct_with_non-extern-compatible_integer_tag_type.zig | 30 ++- test/cases/compile_errors/from_backing_int_invalid_dest_type.zig | 37 +++ test/cases/compile_errors/from_backing_int_type_mismatch.zig | 23 ++ test/cases/compile_errors/from_backing_int_undef.zig | 22 ++ test/cases/compile_errors/initialize_empty_union.zig | 4 +- test/cases/compile_errors/instantiate_empty_enum.zig | 32 +++ test/cases/compile_errors/int_from_enum_undefined.zig | 11 - test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig | 2 +- test/cases/compile_errors/packed_struct_with_fields_of_not_allowed_types.zig | 8 + test/cases/compile_errors/packed_union_with_fields_of_not_allowed_types.zig | 8 + test/cases/compile_errors/reify_type_for_tagged_union_with_no_enum_fields.zig | 2 +- test/cases/compile_errors/sizeof_alignof_empty_union.zig | 4 +- test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig | 2 +- test/cases/safety/backing_int_no_matching_tag_value.zig | 25 +++ test/cases/safety/bitcast_to_enum_no_matching_tag_value.zig | 25 +++ 74 files changed, 1824 insertions(+), 367 deletions(-)