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 | 22 +- 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 | 32 ++- lib/std/zig/AstGen.zig | 18 ++ lib/std/zig/AstRlAnnotate.zig | 2 + lib/std/zig/BuiltinFn.zig | 16 ++ lib/std/zig/Zir.zig | 30 ++- src/Air.zig | 6 + src/Air/Legalize.zig | 114 +++++++++- src/Air/Liveness.zig | 1 + src/Air/Liveness/Verify.zig | 1 + src/Air/Verify.zig | 2 +- src/Air/print.zig | 1 + src/InternPool.zig | 1 + src/Sema.zig | 320 +++++++++++++++++++++------ src/Sema/reinterpret.zig | 8 +- src/Sema/type_resolution.zig | 2 +- src/Type.zig | 54 ++--- 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 | 8 +- src/codegen/x86_64/CodeGen.zig | 2 + src/link/Wasm/Flush.zig | 2 +- src/print_value.zig | 30 ++- src/print_zir.zig | 14 ++ test/behavior.zig | 1 + test/behavior/backing_int.zig | 378 ++++++++++++++++++++++++++++++++ test/behavior/enum.zig | 15 ++ test/behavior/packed-struct.zig | 31 ++- test/behavior/packed-union.zig | 14 ++ test/behavior/switch.zig | 4 +- test/behavior/type.zig | 12 +- 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/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/invalid_non-exhaustive_enum_to_union.zig | 2 +- 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 +++ 60 files changed, 1578 insertions(+), 255 deletions(-)