lib/std/zig/AstGen.zig | 1 + src/RangeSet.zig | 41 ++--- src/Sema.zig | 303 ++++++++++++++++++-------------- test/cases/compile_errors/capture_by_ref_discard.zig | 5 + test/cases/compile_errors/duplicate_boolean_switch_value.zig | 4 +- test/cases/compile_errors/duplicate_error_in_switch.zig | 2 +- test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig | 3 +- test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig | 3 +- test/cases/compile_errors/switch_expression-duplicate_error_prong.zig | 4 +- test/cases/compile_errors/switch_expression-duplicate_error_prong_when_else_present.zig | 4 +- test/cases/compile_errors/switch_expression-duplicate_or_overlapping_integer_value.zig | 16 -- test/cases/compile_errors/switch_expression-duplicate_type.zig | 2 +- test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig | 3 +- test/cases/compile_errors/switch_on_invalid_type.zig | 103 +++++++++++ test/cases/compile_errors/switch_on_non_packed_struct.zig | 25 --- test/cases/compile_errors/switch_on_union_with_nonexhaustive_tag_is_exhaustive.zig | 56 ++++++ test/cases/compile_errors/switch_with_overlapping_case_ranges.zig | 42 ++++- 17 files changed, 402 insertions(+), 215 deletions(-)