From 3204d00a5e7fe119b690e921138a439fb84dff5b Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Mon, 27 Jun 2022 18:32:59 +0300 Subject: [PATCH] move passing stage1 compile error tests to stage2 --- src/AstGen.zig | 6 + src/Sema.zig | 178 +++++++++++------- src/TypedValue.zig | 10 +- .../hello_world_with_updates.1.zig | 2 +- ...nus_for_unsigned_types_a_compile_error.zig | 6 +- ...e_6823_dont_allow_._to_be_followed_by_.zig | 4 +- .../access_invalid_typeInfo_decl.zig | 4 +- ...ccess_non-existent_member_of_error_set.zig | 12 ++ .../add_assign_on_undefined_value.zig | 10 + .../compile_errors/add_on_undefined_value.zig | 10 + .../add_overflow_in_function_evaluation.zig | 5 +- .../obj => }/addition_with_non_numbers.zig | 4 +- .../address_of_number_literal.zig | 10 + .../alignCast_expects_pointer_or_slice.zig | 4 +- .../alignment_of_enum_field_specified.zig | 4 +- .../obj => }/ambiguous_decl_reference.zig | 8 +- .../any_typed_null_to_any_typed_optional.zig | 2 +- .../array_access_of_undeclared_identifier.zig | 9 + .../array_concatenation_with_wrong_type.zig | 4 +- .../{stage1/obj => }/asm_at_compile_time.zig | 4 +- .../assign_null_to_non-optional_pointer.zig | 4 +- .../assign_through_constant_pointer.zig | 4 +- .../assign_through_constant_slice.zig | 4 +- .../obj => }/assign_to_constant_field.zig | 4 +- .../obj => }/assign_to_constant_variable.zig | 4 +- .../obj => }/assign_too_big_number_to_u16.zig | 4 +- .../compile_errors/assign_unreachable.zig | 11 ++ ...rings_of_atomicStore_Acquire_or_AcqRel.zig | 4 +- ..._cmpxchg-failure_stricter_than_success.zig | 4 +- ..._cmpxchg-success_Monotonic_or_stricter.zig | 4 +- ...orderings_of_fence_Acquire_or_stricter.zig | 9 + .../atomicrmw_with_bool_op_not_.Xchg.zig | 4 +- .../atomicrmw_with_enum_op_not_.Xchg.zig | 4 +- ...w_with_float_op_not_.Xchg_.Add_or_.Sub.zig | 4 +- .../attempt_to_cast_enum_literal_to_error.zig | 4 +- ...ver_comptime_variable_from_outer_scope.zig | 14 ++ .../attempt_to_create_17_bit_float_type.zig | 4 +- .../attempted_double_ampersand.zig | 12 ++ ...ttempted_double_pipe_on_boolean_values.zig | 13 ++ ..._implicit_cast_from_T_to_slice_const_T.zig | 4 +- ...d_implicit_cast_from_const_T_to_sliceT.zig | 4 +- ..._function_which_references_local_const.zig | 4 +- test/cases/compile_errors/bad_import.zig | 7 + test/cases/compile_errors/bad_splat_type.zig | 11 ++ .../binary_OR_operator_on_error_sets.zig | 5 +- .../obj => }/binary_not_on_number_literal.zig | 4 +- ...tCast_same_size_but_bit_count_mismatch.zig | 10 + ...h_different_sizes_inside_an_expression.zig | 10 + ...t_shifting_only_works_on_integer_types.zig | 10 + .../bogus_method_call_on_slice.zig | 11 ++ .../obj => }/branch_on_undefined_value.zig | 4 +- .../obj => }/call_assigned_to_constant.zig | 6 +- ...ction_passing_array_instead_of_pointer.zig | 4 +- ...um_literal_to_enum_but_it_doesnt_match.zig | 6 +- ...cast_negative_integer_literal_to_usize.zig | 10 + ...ast_negative_value_to_unsigned_integer.zig | 6 +- .../cases/compile_errors/cast_unreachable.zig | 13 ++ ..._bit_offset_pointer_to_regular_pointer.zig | 6 +- .../obj => }/chained_comparison_operators.zig | 4 +- .../{stage1/obj => }/cmpxchg_with_float.zig | 4 +- .../colliding_invalid_top_level_functions.zig | 12 ++ .../combination_of_nosuspend_and_async.zig | 7 +- ...ng_a_non-optional_pointer_against_null.zig | 4 +- ...parison_operators_with_undefined_value.zig | 14 +- ...rison_with_error_union_and_error_value.zig | 4 +- ...traceback_of_references_that_caused_it.zig | 4 +- ...ompile_error_in_struct_init_expression.zig | 4 +- ...ting_return_type_of_inferred_error_set.zig | 4 +- ...mpile_log_a_pointer_to_an_opaque_value.zig | 4 +- ...nt_warning_deduplication_in_generic_fn.zig | 5 +- ...st_enum_to_union_but_field_has_payload.zig | 18 ++ ...lice_of_undefined_pointer_non-zero_len.zig | 4 +- .../comptime_struct_field_no_init_value.zig | 4 +- ...const_is_a_statement_not_an_expression.zig | 9 + .../obj => }/container_init_with_non-type.zig | 4 +- ...trol_flow_uses_comptime_var_at_runtime.zig | 15 ++ .../obj => }/declaration_between_fields.zig | 8 +- ...e_as_primitive_must_use_special_syntax.zig | 12 ++ .../deduplicate_undeclared_identifier.zig | 13 ++ ...licit_cast_double_pointer_to_anyopaque.zig | 4 +- .../duplicate_boolean_switch_value.zig | 6 +- .../duplicate_error_value_in_error_set.zig | 6 +- ...icate_field_in_struct_value_expression.zig | 5 +- .../obj => }/duplicate_struct_field.zig | 7 +- .../obj => }/duplicate_union_field.zig | 7 +- .../obj => }/embedFile_with_bogus_file.zig | 4 +- .../compile_errors/empty_for_loop_body.zig | 9 + test/cases/compile_errors/empty_if_body.zig | 9 + .../obj => }/empty_switch_on_an_integer.zig | 4 +- .../compile_errors/empty_while_loop_body.zig | 9 + .../endless_loop_in_function_evaluation.zig | 6 +- ...field_count_range_but_not_matching_tag.zig | 6 +- .../compile_errors/enum_with_0_fields.zig | 7 + ...eclarations_unavailable_for_reify_type.zig | 4 +- ..._initializer_doesnt_crash_the_compiler.zig | 7 +- ..._union_operator_with_non_error_set_LHS.zig | 4 +- ...rors_in_for_loop_bodies_are_propagated.zig | 5 +- .../exceeded_maximum_bit_width_of_integer.zig | 15 ++ ...ger_when_there_is_a_fraction_component.zig | 9 + ..._known_at_comptime_violates_error_sets.zig | 5 +- .../export_with_empty_name_string.zig | 5 +- .../extern_union_field_missing_type.zig | 4 +- .../obj => }/extern_variable_has_no_type.zig | 4 +- .../fieldParentPtr-bad_field_name.zig | 5 +- .../obj => }/fieldParentPtr-non_struct.zig | 4 +- .../field_type_supplied_in_an_enum.zig | 12 ++ ...nction_call_assigned_to_incorrect_type.zig | 4 +- .../function_prototype_with_no_body.zig | 4 +- .../function_with_invalid_return_type.zig | 7 + ...nction_call_assigned_to_incorrect_type.zig | 4 +- ...nitializer_must_be_constant_expression.zig | 4 +- .../hasDecl_with_non-container.zig | 9 + .../if_condition_is_bool_not_int.zig | 9 + .../ignored_assert-err-ok_return_value.zig | 4 +- .../ignored_comptime_statement_value.zig | 4 +- .../obj => }/ignored_comptime_value.zig | 4 +- .../ignored_deferred_statement_value.zig | 4 +- .../{stage1/obj => }/ignored_return_value.zig | 4 +- .../ignored_statement_value.zig | 9 + .../implicit_semicolon-block_expr.zig | 4 +- .../implicit_semicolon-block_statement.zig | 4 +- ...implicit_semicolon-comptime_expression.zig | 4 +- .../implicit_semicolon-comptime_statement.zig | 4 +- .../obj => }/implicit_semicolon-defer.zig | 4 +- .../implicit_semicolon-for_expression.zig | 4 +- .../implicit_semicolon-for_statement.zig | 4 +- ...t_semicolon-if-else-if-else_expression.zig | 4 +- ...it_semicolon-if-else-if-else_statement.zig | 4 +- ...plicit_semicolon-if-else-if_expression.zig | 4 +- ...mplicit_semicolon-if-else-if_statement.zig | 4 +- .../implicit_semicolon-if-else_expression.zig | 4 +- .../implicit_semicolon-if-else_statement.zig | 4 +- .../implicit_semicolon-if_expression.zig | 4 +- .../implicit_semicolon-if_statement.zig | 4 +- .../implicit_semicolon-test_expression.zig | 4 +- .../implicit_semicolon-test_statement.zig | 4 +- ...it_semicolon-while-continue_expression.zig | 4 +- ...cit_semicolon-while-continue_statement.zig | 4 +- .../implicit_semicolon-while_expression.zig | 4 +- .../implicit_semicolon-while_statement.zig | 4 +- .../import_outside_package_path.zig | 9 + .../inferred_array_size_invalid_here.zig | 6 +- ...nferring_error_set_of_function_pointer.zig | 9 + .../initializing_array_with_struct_syntax.zig | 4 +- ...float_conversion_to_comptime_int-float.zig | 7 +- .../int_to_err_global_invalid_number.zig | 4 +- .../int_to_err_non_global_invalid_number.zig | 5 +- .../obj => }/integer_overflow_error.zig | 4 +- .../obj => }/integer_underflow_error.zig | 4 +- .../invalid_address_space_coercion.zig | 2 +- .../compile_errors/invalid_array_elem_ty.zig | 2 +- .../{stage1/test => }/invalid_assignments.zig | 9 +- .../invalid_break_expression.zig | 9 + .../{stage1/obj => }/invalid_builtin_fn.zig | 4 +- ...valid_comparison_for_function_pointers.zig | 4 +- .../invalid_continue_expression.zig | 9 + .../obj => }/invalid_empty_unicode_escape.zig | 4 +- .../invalid_exponent_in_float_literal-1.zig | 11 ++ .../invalid_exponent_in_float_literal-2.zig | 11 ++ .../invalid_field_access_in_comptime.zig | 7 + ...valid_field_in_struct_value_expression.zig | 5 +- .../{stage1/test => }/invalid_float_casts.zig | 11 +- .../obj => }/invalid_float_literal.zig | 4 +- .../{stage1/test => }/invalid_int_casts.zig | 11 +- .../invalid_legacy_unicode_escape.zig | 10 + .../invalid_member_of_builtin_enum.zig | 5 +- .../invalid_non-exhaustive_enum_to_union.zig | 9 +- .../obj => }/invalid_pointer_for_var_type.zig | 4 +- ...ace_when_taking_address_of_dereference.zig | 2 +- .../obj => }/invalid_pointer_syntax.zig | 4 +- .../invalid_pointer_with_reify_type.zig | 5 +- .../obj => }/invalid_shift_amount_error.zig | 4 +- .../{stage1/obj => }/invalid_struct_field.zig | 8 +- .../{stage1/obj => }/invalid_type.zig | 4 +- .../invalid_type_used_in_array_type.zig | 4 +- ...nderscore_placement_in_float_literal-1.zig | 11 ++ ...derscore_placement_in_float_literal-10.zig | 11 ++ ...derscore_placement_in_float_literal-11.zig | 11 ++ ...derscore_placement_in_float_literal-12.zig | 11 ++ ...derscore_placement_in_float_literal-13.zig | 11 ++ ...derscore_placement_in_float_literal-14.zig | 11 ++ ...nderscore_placement_in_float_literal-2.zig | 11 ++ ...nderscore_placement_in_float_literal-3.zig | 11 ++ ...nderscore_placement_in_float_literal-4.zig | 11 ++ ...nderscore_placement_in_float_literal-5.zig | 11 ++ ...nderscore_placement_in_float_literal-6.zig | 11 ++ ...nderscore_placement_in_float_literal-7.zig | 11 ++ ...nderscore_placement_in_float_literal-9.zig | 11 ++ ..._underscore_placement_in_int_literal-1.zig | 11 ++ ..._underscore_placement_in_int_literal-2.zig | 11 ++ ..._underscore_placement_in_int_literal-3.zig | 11 ++ ..._underscore_placement_in_int_literal-4.zig | 11 ++ ..._9346_return_outside_of_function_scope.zig | 7 + .../obj => }/labeled_break_not_found.zig | 4 +- .../obj => }/labeled_continue_not_found.zig | 4 +- ...local_shadows_global_that_occurs_later.zig | 12 ++ .../local_variable_redeclaration.zig | 11 ++ .../local_variable_redeclares_parameter.zig | 11 ++ .../local_variable_shadowing_global.zig | 6 +- .../locally_shadowing_a_primitive_type.zig | 12 ++ .../main_function_with_bogus_args_type.zig | 7 + .../{stage1/exe => }/main_missing_name.zig | 4 +- .../obj => }/missing_boolean_switch_value.zig | 6 +- .../{stage1/obj => }/missing_else_clause.zig | 6 +- ...ssing_field_in_struct_value_expression.zig | 5 +- .../compile_errors/missing_function_name.zig | 7 + .../{stage1/obj => }/missing_param_name.zig | 4 +- ...ing_parameter_name_of_generic_function.zig | 4 +- ...elled_type_with_pointer_only_reference.zig | 4 +- .../multiple_function_definitions.zig | 10 + .../{stage1/test => }/nested_vectors.zig | 6 +- ...h_struct_return_value_outside_function.zig | 5 +- ...ion_in_struct_literal_outside_function.zig | 4 +- .../non-const_switch_number_literal.zig | 5 +- .../non-exhaustive_enum_field_non_final.zig | 11 ++ ...xhaustive_enum_marker_assigned_a_value.zig | 19 ++ ...-exhaustive_enum_specifies_every_value.zig | 14 ++ .../non-extern_function_with_var_args.zig | 4 +- .../non-pure_function_returns_type.zig | 5 +- .../non_float_passed_to_floatToInt.zig | 4 +- .../obj => }/non_int_passed_to_intToFloat.zig | 4 +- .../non_pointer_given_to_ptrToInt.zig | 4 +- .../normal_string_with_newline.zig | 9 + .../obj => }/offsetOf-bad_field_name.zig | 5 +- .../{stage1/obj => }/offsetOf-non_struct.zig | 4 +- ...binary_operator_allowed_for_error_sets.zig | 4 +- ...ange_comptime_int_passed_to_floatToInt.zig | 4 +- .../parameter_redeclaration.zig | 10 + .../obj => }/parameter_shadowing_global.zig | 6 +- ..._not-aligned-enough_pointer_to_cmpxchg.zig | 4 +- ...pointer_arithmetic_on_pointer-to-array.zig | 14 ++ .../pointer_with_different_address_spaces.zig | 2 +- ...pointers_with_different_address_spaces.zig | 2 +- .../{stage1/obj => }/popCount-non-integer.zig | 4 +- ...ives_take_precedence_over_declarations.zig | 4 +- .../ptrToInt_0_to_non_optional_pointer.zig | 4 +- .../obj => }/ptrcast_to_non-pointer.zig | 4 +- .../test => }/reassign_to_slice_parameter.zig | 5 +- .../compile_errors/redefinition_of_enums.zig | 9 + .../redefinition_of_global_variables.zig | 9 + .../compile_errors/redefinition_of_struct.zig | 9 + ...efer_to_the_type_of_a_generic_function.zig | 4 +- .../test => }/reference_to_const_data.zig | 11 +- .../referring_to_a_struct_that_is_invalid.zig | 5 +- ...ify_typeOf_with_incompatible_arguments.zig | 7 +- .../reify_typeOf_with_no_arguments.zig | 9 + ..._extern_function_definitions_with_body.zig | 5 +- ...ect_extern_variables_with_initializers.zig | 7 + ...n_returning_type_crashes_compiler_2655.zig | 4 +- .../obj => }/return_from_defer_expression.zig | 4 +- .../return_invalid_type_from_test.zig | 8 + ...ast_to_union_which_has_non-void_fields.zig | 23 +++ ...ating_arithmetic_does_not_allow_floats.zig | 9 + .../setAlignStack_in_naked_function.zig | 4 +- .../setAlignStack_outside_function.zig | 9 + .../setAlignStack_set_twice.zig | 11 ++ .../compile_errors/setAlignStack_too_big.zig | 9 + .../setting_a_section_on_a_local_variable.zig | 4 +- ...fting_RHS_is_log2_of_LHS_int_bit_width.zig | 4 +- .../obj => }/slicing_single-item_pointer.zig | 4 +- ...ccess_non-existent_member_of_error_set.zig | 11 -- .../obj/add_assign_on_undefined_value.zig | 10 - .../stage1/obj/add_on_undefined_value.zig | 10 - .../stage1/obj/address_of_number_literal.zig | 10 - .../array_access_of_undeclared_identifier.zig | 9 - .../stage1/obj/assign_unreachable.zig | 10 - ...orderings_of_fence_Acquire_or_stricter.zig | 9 - ...ver_comptime_variable_from_outer_scope.zig | 14 -- .../stage1/obj/attempted_double_ampersand.zig | 12 -- ...ttempted_double_pipe_on_boolean_values.zig | 13 -- .../compile_errors/stage1/obj/bad_import.zig | 7 - ...tCast_same_size_but_bit_count_mismatch.zig | 10 - ...h_different_sizes_inside_an_expression.zig | 10 - ...t_shifting_only_works_on_integer_types.zig | 10 - .../stage1/obj/bogus_method_call_on_slice.zig | 11 -- ...cast_negative_integer_literal_to_usize.zig | 10 - .../stage1/obj/cast_unreachable.zig | 11 -- .../colliding_invalid_top_level_functions.zig | 10 - ...st_enum_to_union_but_field_has_payload.zig | 17 -- ...const_is_a_statement_not_an_expression.zig | 9 - ...trol_flow_uses_comptime_var_at_runtime.zig | 15 -- ...e_as_primitive_must_use_special_syntax.zig | 12 -- .../obj/deduplicate_undeclared_identifier.zig | 12 -- .../stage1/obj/empty_for_loop_body.zig | 9 - .../stage1/obj/empty_if_body.zig | 9 - .../stage1/obj/empty_while_loop_body.zig | 9 - .../stage1/obj/enum_with_0_fields.zig | 7 - .../exceeded_maximum_bit_width_of_integer.zig | 15 -- ...ger_when_there_is_a_fraction_component.zig | 9 - .../obj/field_type_supplied_in_an_enum.zig | 12 -- .../obj/function_with_invalid_return_type.zig | 7 - .../stage1/obj/hasDecl_with_non-container.zig | 9 - .../obj/if_condition_is_bool_not_int.zig | 9 - .../stage1/obj/ignored_statement_value.zig | 9 - .../obj/import_outside_package_path.zig | 9 - ...nferring_error_set_of_function_pointer.zig | 9 - .../stage1/obj/invalid_break_expression.zig | 9 - .../obj/invalid_continue_expression.zig | 9 - .../invalid_exponent_in_float_literal-1.zig | 11 -- .../invalid_exponent_in_float_literal-2.zig | 11 -- .../obj/invalid_field_access_in_comptime.zig | 7 - .../obj/invalid_legacy_unicode_escape.zig | 10 - ...nderscore_placement_in_float_literal-1.zig | 11 -- ...derscore_placement_in_float_literal-10.zig | 11 -- ...derscore_placement_in_float_literal-11.zig | 11 -- ...derscore_placement_in_float_literal-12.zig | 11 -- ...derscore_placement_in_float_literal-13.zig | 11 -- ...derscore_placement_in_float_literal-14.zig | 11 -- ...nderscore_placement_in_float_literal-2.zig | 11 -- ...nderscore_placement_in_float_literal-3.zig | 11 -- ...nderscore_placement_in_float_literal-4.zig | 11 -- ...nderscore_placement_in_float_literal-5.zig | 11 -- ...nderscore_placement_in_float_literal-6.zig | 11 -- ...nderscore_placement_in_float_literal-7.zig | 11 -- ...nderscore_placement_in_float_literal-9.zig | 11 -- ..._underscore_placement_in_int_literal-1.zig | 11 -- ..._underscore_placement_in_int_literal-2.zig | 11 -- ..._underscore_placement_in_int_literal-3.zig | 11 -- ..._underscore_placement_in_int_literal-4.zig | 11 -- ...invalid_union_field_access_in_comptime.zig | 15 -- ..._9346_return_outside_of_function_scope.zig | 7 - ...local_shadows_global_that_occurs_later.zig | 12 -- .../obj/local_variable_redeclaration.zig | 11 -- .../local_variable_redeclares_parameter.zig | 11 -- .../locally_shadowing_a_primitive_type.zig | 12 -- .../main_function_with_bogus_args_type.zig | 7 - .../stage1/obj/missing_function_name.zig | 8 - .../obj/multiple_function_definitions.zig | 10 - .../stage1/obj/normal_string_with_newline.zig | 9 - .../stage1/obj/parameter_redeclaration.zig | 10 - ...pointer_arithmetic_on_pointer-to-array.zig | 12 -- ...bad_implicit_casting_of_anyframe_types.zig | 6 +- .../stage1/obj/redefinition_of_enums.zig | 9 - .../obj/redefinition_of_global_variables.zig | 9 - .../stage1/obj/redefinition_of_struct.zig | 9 - ...ast_to_union_which_has_non-void_fields.zig | 20 -- ...ating_arithmetic_does_not_allow_floats.zig | 9 - .../obj/setAlignStack_outside_function.zig | 9 - .../stage1/obj/setAlignStack_set_twice.zig | 11 -- .../stage1/obj/setAlignStack_too_big.zig | 9 - ...pression-non_exhaustive_integer_prongs.zig | 12 -- ...h_expression-unreachable_else_prong_u1.zig | 14 -- ...ch_on_enum_with_1_field_with_no_prongs.zig | 12 -- .../obj/type_variables_must_be_constant.zig | 2 +- .../undefined_as_field_type_is_rejected.zig | 13 -- .../stage1/obj/undefined_function_call.zig | 9 - .../union_fields_with_value_assignments.zig | 14 -- .../stage1/obj/union_with_0_fields.zig | 7 - .../obj/unreachable_code-nested_returns.zig | 10 - .../stage1/obj/unreachable_code.zig | 13 -- .../obj/use_of_undeclared_identifier.zig | 9 - .../obj/usingnamespace_with_wrong_type.zig | 7 - .../stage1/obj/variable_has_wrong_type.zig | 10 - .../obj/variable_with_type_noreturn.zig | 10 - .../obj/volatile_on_global_assembly.zig | 9 - .../stage1/test/bad_splat_type.zig | 12 -- ...xhaustive_enum_marker_assigned_a_value.zig | 20 -- .../stage1/test/non-exhaustive_enums.zig | 22 --- .../test/reify_typeOf_with_no_arguments.zig | 10 - ...ect_extern_variables_with_initializers.zig | 8 - .../test/return_invalid_type_from_test.zig | 8 - .../obj => }/struct_field_missing_type.zig | 4 +- .../obj => }/struct_init_syntax_for_array.zig | 4 +- ...eclarations_unavailable_for_reify_type.zig | 4 +- .../obj => }/struct_with_invalid_field.zig | 4 +- .../obj => }/suspend_inside_suspend_block.zig | 6 +- ...expression-duplicate_enumeration_prong.zig | 8 +- ...te_enumeration_prong_when_else_present.zig | 8 +- .../switch_expression-duplicate_type.zig | 6 +- ...expression-duplicate_type_struct_alias.zig | 6 +- ...h_expression-missing_enumeration_prong.zig | 8 +- ...switch_expression-multiple_else_prongs.zig | 5 +- ...pression-non_exhaustive_integer_prongs.zig | 12 ++ ...expression-unreachable_else_prong_enum.zig | 6 +- ...ession-unreachable_else_prong_range_i8.zig | 6 +- ...ession-unreachable_else_prong_range_u8.zig | 6 +- ...h_expression-unreachable_else_prong_u1.zig | 14 ++ ...h_expression-unreachable_else_prong_u2.zig | 6 +- ...ch_on_enum_with_1_field_with_no_prongs.zig | 14 ++ ...hing_with_exhaustive_enum_has___prong_.zig | 6 +- ...n_invalid_value_of_non-exhaustive_enum.zig | 5 +- .../threadlocal_qualifier_on_const.zig | 4 +- .../obj => }/truncate_sign_mismatch.zig | 10 +- ...in_function_with_non_error_return_type.zig | 4 +- ...e_mismatch_in_C_prototype_with_varargs.zig | 5 +- .../obj => }/undeclared_identifier.zig | 4 +- ...ntifier_error_should_mark_fn_as_impure.zig | 4 +- ...clared_identifier_in_unanalyzed_branch.zig | 4 +- .../undefined_as_field_type_is_rejected.zig | 9 + .../undefined_function_call.zig | 9 + .../underscore_is_not_a_declarable_symbol.zig | 4 +- ...rscore_should_not_be_usable_inside_for.zig | 4 +- ...core_should_not_be_usable_inside_while.zig | 4 +- ...should_not_be_usable_inside_while_else.zig | 4 +- .../union_fields_with_value_assignments.zig | 7 + .../compile_errors/union_with_0_fields.zig | 7 + .../union_with_specified_enum_omits_field.zig | 7 +- .../unreachable_code-double_break.zig | 7 +- .../unreachable_code-nested_returns.zig | 10 + .../cases/compile_errors/unreachable_code.zig | 13 ++ .../{stage1/obj => }/unreachable_variable.zig | 4 +- .../obj => }/unreachable_with_return.zig | 4 +- ..._invalid_number_literal_as_array_index.zig | 4 +- .../use_of_undeclared_identifier.zig | 9 + ...types_in_function_call_raises_an_error.zig | 4 +- .../usingnamespace_with_wrong_type.zig | 7 + .../variable_has_wrong_type.zig | 10 + ...lization_compile_error_then_referenced.zig | 4 +- .../variable_with_type_noreturn.zig | 11 ++ .../volatile_on_global_assembly.zig | 9 + .../while_expected_bool_got_error_union.zig | 4 +- .../while_expected_bool_got_optional.zig | 4 +- .../write_to_const_global_variable.zig | 4 +- .../wrong_size_to_an_array_literal.zig | 4 +- .../obj => }/wrong_type_passed_to_panic.zig | 4 +- .../obj => }/wrong_type_to_hasField.zig | 4 +- test/cases/compile_log.0.zig | 2 +- .../hello_world_with_updates.1.zig | 2 +- test/cases/x86_64-linux/inline_assembly.0.zig | 2 +- .../hello_world_with_updates.1.zig | 2 +- test/stage2/cbe.zig | 10 +- 421 files changed, 1686 insertions(+), 1636 deletions(-) rename test/cases/compile_errors/{stage1/obj => }/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/Issue_6823_dont_allow_._to_be_followed_by_.zig (50%) rename test/cases/compile_errors/{stage1/test => }/access_invalid_typeInfo_decl.zig (60%) create mode 100644 test/cases/compile_errors/access_non-existent_member_of_error_set.zig create mode 100644 test/cases/compile_errors/add_assign_on_undefined_value.zig create mode 100644 test/cases/compile_errors/add_on_undefined_value.zig rename test/cases/compile_errors/{stage1/obj => }/add_overflow_in_function_evaluation.zig (57%) rename test/cases/compile_errors/{stage1/obj => }/addition_with_non_numbers.zig (64%) create mode 100644 test/cases/compile_errors/address_of_number_literal.zig rename test/cases/compile_errors/{stage1/obj => }/alignCast_expects_pointer_or_slice.zig (52%) rename test/cases/compile_errors/{stage1/obj => }/alignment_of_enum_field_specified.zig (69%) rename test/cases/compile_errors/{stage1/obj => }/ambiguous_decl_reference.zig (61%) rename test/cases/{llvm => compile_errors}/any_typed_null_to_any_typed_optional.zig (74%) create mode 100644 test/cases/compile_errors/array_access_of_undeclared_identifier.zig rename test/cases/compile_errors/{stage1/obj => }/array_concatenation_with_wrong_type.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/asm_at_compile_time.zig (70%) rename test/cases/compile_errors/{stage1/obj => }/assign_null_to_non-optional_pointer.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/assign_through_constant_pointer.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/assign_through_constant_slice.zig (60%) rename test/cases/compile_errors/{stage1/obj => }/assign_to_constant_field.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/assign_to_constant_variable.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/assign_too_big_number_to_u16.zig (52%) create mode 100644 test/cases/compile_errors/assign_unreachable.zig rename test/cases/compile_errors/{stage1/obj => }/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig (69%) rename test/cases/compile_errors/{stage1/obj => }/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig (70%) create mode 100644 test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig rename test/cases/compile_errors/{stage1/obj => }/atomicrmw_with_bool_op_not_.Xchg.zig (59%) rename test/cases/compile_errors/{stage1/obj => }/atomicrmw_with_enum_op_not_.Xchg.zig (69%) rename test/cases/compile_errors/{stage1/obj => }/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/attempt_to_cast_enum_literal_to_error.zig (52%) create mode 100644 test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig rename test/cases/compile_errors/{stage1/obj => }/attempt_to_create_17_bit_float_type.zig (65%) create mode 100644 test/cases/compile_errors/attempted_double_ampersand.zig create mode 100644 test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig rename test/cases/compile_errors/{stage1/obj => }/attempted_implicit_cast_from_T_to_slice_const_T.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/attempted_implicit_cast_from_const_T_to_sliceT.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig (68%) create mode 100644 test/cases/compile_errors/bad_import.zig create mode 100644 test/cases/compile_errors/bad_splat_type.zig rename test/cases/compile_errors/{stage1/test => }/binary_OR_operator_on_error_sets.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/binary_not_on_number_literal.zig (72%) create mode 100644 test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig create mode 100644 test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig create mode 100644 test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig create mode 100644 test/cases/compile_errors/bogus_method_call_on_slice.zig rename test/cases/compile_errors/{stage1/obj => }/branch_on_undefined_value.zig (57%) rename test/cases/compile_errors/{stage1/obj => }/call_assigned_to_constant.zig (72%) rename test/cases/compile_errors/{stage1/obj => }/calling_var_args_extern_function_passing_array_instead_of_pointer.zig (59%) rename test/cases/compile_errors/{stage1/obj => }/cast_enum_literal_to_enum_but_it_doesnt_match.zig (51%) create mode 100644 test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig rename test/cases/compile_errors/{stage1/obj => }/cast_negative_value_to_unsigned_integer.zig (57%) create mode 100644 test/cases/compile_errors/cast_unreachable.zig rename test/cases/compile_errors/{stage1/obj => }/casting_bit_offset_pointer_to_regular_pointer.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/chained_comparison_operators.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/cmpxchg_with_float.zig (56%) create mode 100644 test/cases/compile_errors/colliding_invalid_top_level_functions.zig rename test/cases/compile_errors/{stage1/test => }/combination_of_nosuspend_and_async.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/comparing_a_non-optional_pointer_against_null.zig (57%) rename test/cases/compile_errors/{stage1/obj => }/comparison_operators_with_undefined_value.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/comparison_with_error_union_and_error_value.zig (65%) rename test/cases/compile_errors/{stage1/obj => }/compileError_shows_traceback_of_references_that_caused_it.zig (75%) rename test/cases/compile_errors/{stage1/obj => }/compile_error_in_struct_init_expression.zig (67%) rename test/cases/compile_errors/{stage1/obj => }/compile_error_when_evaluating_return_type_of_inferred_error_set.zig (65%) rename test/cases/compile_errors/{stage1/obj => }/compile_log_a_pointer_to_an_opaque_value.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/compile_log_statement_warning_deduplication_in_generic_fn.zig (69%) create mode 100644 test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig rename test/cases/compile_errors/{stage1/obj => }/comptime_slice_of_undefined_pointer_non-zero_len.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/comptime_struct_field_no_init_value.zig (60%) create mode 100644 test/cases/compile_errors/const_is_a_statement_not_an_expression.zig rename test/cases/compile_errors/{stage1/obj => }/container_init_with_non-type.zig (62%) create mode 100644 test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig rename test/cases/compile_errors/{stage1/obj => }/declaration_between_fields.zig (56%) create mode 100644 test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig create mode 100644 test/cases/compile_errors/deduplicate_undeclared_identifier.zig rename test/cases/compile_errors/{stage1/obj => }/dont_implicit_cast_double_pointer_to_anyopaque.zig (71%) rename test/cases/compile_errors/{stage1/obj => }/duplicate_boolean_switch_value.zig (72%) rename test/cases/compile_errors/{stage1/obj => }/duplicate_error_value_in_error_set.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/duplicate_field_in_struct_value_expression.zig (71%) rename test/cases/compile_errors/{stage1/obj => }/duplicate_struct_field.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/duplicate_union_field.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/embedFile_with_bogus_file.zig (64%) create mode 100644 test/cases/compile_errors/empty_for_loop_body.zig create mode 100644 test/cases/compile_errors/empty_if_body.zig rename test/cases/compile_errors/{stage1/obj => }/empty_switch_on_an_integer.zig (54%) create mode 100644 test/cases/compile_errors/empty_while_loop_body.zig rename test/cases/compile_errors/{stage1/obj => }/endless_loop_in_function_evaluation.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/enum_in_field_count_range_but_not_matching_tag.zig (53%) create mode 100644 test/cases/compile_errors/enum_with_0_fields.zig rename test/cases/compile_errors/{stage1/obj => }/enum_with_declarations_unavailable_for_reify_type.zig (57%) rename test/cases/compile_errors/{stage1/test => }/error_in_struct_initializer_doesnt_crash_the_compiler.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/error_union_operator_with_non_error_set_LHS.zig (55%) rename test/cases/compile_errors/{stage1/test => }/errors_in_for_loop_bodies_are_propagated.zig (61%) create mode 100644 test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig create mode 100644 test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig rename test/cases/compile_errors/{stage1/obj => }/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig (56%) rename test/cases/compile_errors/{stage1/test => }/export_with_empty_name_string.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/extern_union_field_missing_type.zig (67%) rename test/cases/compile_errors/{stage1/obj => }/extern_variable_has_no_type.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/fieldParentPtr-bad_field_name.zig (57%) rename test/cases/compile_errors/{stage1/obj => }/fieldParentPtr-non_struct.zig (61%) create mode 100644 test/cases/compile_errors/field_type_supplied_in_an_enum.zig rename test/cases/compile_errors/{stage1/obj => }/function_call_assigned_to_incorrect_type.zig (66%) rename test/cases/compile_errors/{stage1/obj => }/function_prototype_with_no_body.zig (53%) create mode 100644 test/cases/compile_errors/function_with_invalid_return_type.zig rename test/cases/compile_errors/{stage1/obj => }/generic_function_call_assigned_to_incorrect_type.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/global_variable_initializer_must_be_constant_expression.zig (56%) create mode 100644 test/cases/compile_errors/hasDecl_with_non-container.zig create mode 100644 test/cases/compile_errors/if_condition_is_bool_not_int.zig rename test/cases/compile_errors/{stage1/obj => }/ignored_assert-err-ok_return_value.zig (63%) rename test/cases/compile_errors/{stage1/obj => }/ignored_comptime_statement_value.zig (51%) rename test/cases/compile_errors/{stage1/obj => }/ignored_comptime_value.zig (50%) rename test/cases/compile_errors/{stage1/obj => }/ignored_deferred_statement_value.zig (50%) rename test/cases/compile_errors/{stage1/obj => }/ignored_return_value.zig (57%) create mode 100644 test/cases/compile_errors/ignored_statement_value.zig rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-block_expr.zig (62%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-block_statement.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-comptime_expression.zig (65%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-comptime_statement.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-defer.zig (63%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-for_expression.zig (67%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-for_statement.zig (63%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if-else-if-else_expression.zig (72%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if-else-if-else_statement.zig (71%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if-else-if_expression.zig (70%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if-else-if_statement.zig (66%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if-else_expression.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if-else_statement.zig (67%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if_expression.zig (65%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-if_statement.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-test_expression.zig (67%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-test_statement.zig (63%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-while-continue_expression.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-while-continue_statement.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-while_expression.zig (66%) rename test/cases/compile_errors/{stage1/obj => }/implicit_semicolon-while_statement.zig (61%) create mode 100644 test/cases/compile_errors/import_outside_package_path.zig rename test/cases/compile_errors/{stage1/obj => }/inferred_array_size_invalid_here.zig (61%) create mode 100644 test/cases/compile_errors/inferring_error_set_of_function_pointer.zig rename test/cases/compile_errors/{stage1/obj => }/initializing_array_with_struct_syntax.zig (55%) rename test/cases/compile_errors/{stage1/test => }/int-float_conversion_to_comptime_int-float.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/int_to_err_global_invalid_number.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/int_to_err_non_global_invalid_number.zig (62%) rename test/cases/compile_errors/{stage1/obj => }/integer_overflow_error.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/integer_underflow_error.zig (62%) rename test/cases/{llvm => compile_errors}/invalid_address_space_coercion.zig (73%) rename test/cases/compile_errors/{stage1/test => }/invalid_assignments.zig (50%) create mode 100644 test/cases/compile_errors/invalid_break_expression.zig rename test/cases/compile_errors/{stage1/obj => }/invalid_builtin_fn.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/invalid_comparison_for_function_pointers.zig (61%) create mode 100644 test/cases/compile_errors/invalid_continue_expression.zig rename test/cases/compile_errors/{stage1/obj => }/invalid_empty_unicode_escape.zig (52%) create mode 100644 test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig create mode 100644 test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig create mode 100644 test/cases/compile_errors/invalid_field_access_in_comptime.zig rename test/cases/compile_errors/{stage1/obj => }/invalid_field_in_struct_value_expression.zig (64%) rename test/cases/compile_errors/{stage1/test => }/invalid_float_casts.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/invalid_float_literal.zig (71%) rename test/cases/compile_errors/{stage1/test => }/invalid_int_casts.zig (55%) create mode 100644 test/cases/compile_errors/invalid_legacy_unicode_escape.zig rename test/cases/compile_errors/{stage1/obj => }/invalid_member_of_builtin_enum.zig (55%) rename test/cases/compile_errors/{stage1/test => }/invalid_non-exhaustive_enum_to_union.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/invalid_pointer_for_var_type.zig (67%) rename test/cases/{llvm => compile_errors}/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig (73%) rename test/cases/compile_errors/{stage1/obj => }/invalid_pointer_syntax.zig (54%) rename test/cases/compile_errors/{stage1/test => }/invalid_pointer_with_reify_type.zig (72%) rename test/cases/compile_errors/{stage1/obj => }/invalid_shift_amount_error.zig (57%) rename test/cases/compile_errors/{stage1/obj => }/invalid_struct_field.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/invalid_type.zig (51%) rename test/cases/compile_errors/{stage1/obj => }/invalid_type_used_in_array_type.zig (66%) create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig create mode 100644 test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig create mode 100644 test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig rename test/cases/compile_errors/{stage1/obj => }/labeled_break_not_found.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/labeled_continue_not_found.zig (73%) create mode 100644 test/cases/compile_errors/local_shadows_global_that_occurs_later.zig create mode 100644 test/cases/compile_errors/local_variable_redeclaration.zig create mode 100644 test/cases/compile_errors/local_variable_redeclares_parameter.zig rename test/cases/compile_errors/{stage1/obj => }/local_variable_shadowing_global.zig (56%) create mode 100644 test/cases/compile_errors/locally_shadowing_a_primitive_type.zig create mode 100644 test/cases/compile_errors/main_function_with_bogus_args_type.zig rename test/cases/compile_errors/{stage1/exe => }/main_missing_name.zig (52%) rename test/cases/compile_errors/{stage1/obj => }/missing_boolean_switch_value.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/missing_else_clause.zig (63%) rename test/cases/compile_errors/{stage1/obj => }/missing_field_in_struct_value_expression.zig (73%) create mode 100644 test/cases/compile_errors/missing_function_name.zig rename test/cases/compile_errors/{stage1/obj => }/missing_param_name.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/missing_parameter_name_of_generic_function.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/misspelled_type_with_pointer_only_reference.zig (88%) create mode 100644 test/cases/compile_errors/multiple_function_definitions.zig rename test/cases/compile_errors/{stage1/test => }/nested_vectors.zig (59%) rename test/cases/compile_errors/{stage1/obj => }/non-const_expression_function_call_with_struct_return_value_outside_function.zig (71%) rename test/cases/compile_errors/{stage1/obj => }/non-const_expression_in_struct_literal_outside_function.zig (68%) rename test/cases/compile_errors/{stage1/obj => }/non-const_switch_number_literal.zig (55%) create mode 100644 test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig create mode 100644 test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig create mode 100644 test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig rename test/cases/compile_errors/{stage1/obj => }/non-extern_function_with_var_args.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/non-pure_function_returns_type.zig (80%) rename test/cases/compile_errors/{stage1/obj => }/non_float_passed_to_floatToInt.zig (60%) rename test/cases/compile_errors/{stage1/obj => }/non_int_passed_to_intToFloat.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/non_pointer_given_to_ptrToInt.zig (55%) create mode 100644 test/cases/compile_errors/normal_string_with_newline.zig rename test/cases/compile_errors/{stage1/obj => }/offsetOf-bad_field_name.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/offsetOf-non_struct.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/only_equality_binary_operator_allowed_for_error_sets.zig (52%) rename test/cases/compile_errors/{stage1/obj => }/out_of_range_comptime_int_passed_to_floatToInt.zig (57%) create mode 100644 test/cases/compile_errors/parameter_redeclaration.zig rename test/cases/compile_errors/{stage1/obj => }/parameter_shadowing_global.zig (50%) rename test/cases/compile_errors/{stage1/obj => }/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig (74%) create mode 100644 test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig rename test/cases/{llvm => compile_errors}/pointer_with_different_address_spaces.zig (71%) rename test/cases/{llvm => compile_errors}/pointers_with_different_address_spaces.zig (73%) rename test/cases/compile_errors/{stage1/obj => }/popCount-non-integer.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/primitives_take_precedence_over_declarations.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/ptrToInt_0_to_non_optional_pointer.zig (52%) rename test/cases/compile_errors/{stage1/obj => }/ptrcast_to_non-pointer.zig (56%) rename test/cases/compile_errors/{stage1/test => }/reassign_to_slice_parameter.zig (62%) create mode 100644 test/cases/compile_errors/redefinition_of_enums.zig create mode 100644 test/cases/compile_errors/redefinition_of_global_variables.zig create mode 100644 test/cases/compile_errors/redefinition_of_struct.zig rename test/cases/compile_errors/{stage1/obj => }/refer_to_the_type_of_a_generic_function.zig (58%) rename test/cases/compile_errors/{stage1/test => }/reference_to_const_data.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/referring_to_a_struct_that_is_invalid.zig (69%) rename test/cases/compile_errors/{stage1/test => }/reify_typeOf_with_incompatible_arguments.zig (53%) create mode 100644 test/cases/compile_errors/reify_typeOf_with_no_arguments.zig rename test/cases/compile_errors/{stage1/test => }/reject_extern_function_definitions_with_body.zig (55%) create mode 100644 test/cases/compile_errors/reject_extern_variables_with_initializers.zig rename test/cases/compile_errors/{stage1/test => }/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/return_from_defer_expression.zig (78%) create mode 100644 test/cases/compile_errors/return_invalid_type_from_test.zig create mode 100644 test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig create mode 100644 test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig rename test/cases/compile_errors/{stage1/obj => }/setAlignStack_in_naked_function.zig (56%) create mode 100644 test/cases/compile_errors/setAlignStack_outside_function.zig create mode 100644 test/cases/compile_errors/setAlignStack_set_twice.zig create mode 100644 test/cases/compile_errors/setAlignStack_too_big.zig rename test/cases/compile_errors/{stage1/obj => }/setting_a_section_on_a_local_variable.zig (58%) rename test/cases/compile_errors/{stage1/obj => }/shifting_RHS_is_log2_of_LHS_int_bit_width.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/slicing_single-item_pointer.zig (60%) delete mode 100644 test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig delete mode 100644 test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig delete mode 100644 test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig delete mode 100644 test/cases/compile_errors/stage1/obj/address_of_number_literal.zig delete mode 100644 test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig delete mode 100644 test/cases/compile_errors/stage1/obj/assign_unreachable.zig delete mode 100644 test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig delete mode 100644 test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig delete mode 100644 test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig delete mode 100644 test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig delete mode 100644 test/cases/compile_errors/stage1/obj/bad_import.zig delete mode 100644 test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig delete mode 100644 test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig delete mode 100644 test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig delete mode 100644 test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig delete mode 100644 test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig delete mode 100644 test/cases/compile_errors/stage1/obj/cast_unreachable.zig delete mode 100644 test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig delete mode 100644 test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig delete mode 100644 test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig delete mode 100644 test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig delete mode 100644 test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig delete mode 100644 test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig delete mode 100644 test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig delete mode 100644 test/cases/compile_errors/stage1/obj/empty_if_body.zig delete mode 100644 test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig delete mode 100644 test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig delete mode 100644 test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig delete mode 100644 test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig delete mode 100644 test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig delete mode 100644 test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig delete mode 100644 test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig delete mode 100644 test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig delete mode 100644 test/cases/compile_errors/stage1/obj/ignored_statement_value.zig delete mode 100644 test/cases/compile_errors/stage1/obj/import_outside_package_path.zig delete mode 100644 test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_break_expression.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig delete mode 100644 test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig delete mode 100644 test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig delete mode 100644 test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig delete mode 100644 test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig delete mode 100644 test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig delete mode 100644 test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig delete mode 100644 test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig delete mode 100644 test/cases/compile_errors/stage1/obj/missing_function_name.zig delete mode 100644 test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig delete mode 100644 test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig delete mode 100644 test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig delete mode 100644 test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig delete mode 100644 test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig delete mode 100644 test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig delete mode 100644 test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig delete mode 100644 test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig delete mode 100644 test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig delete mode 100644 test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig delete mode 100644 test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig delete mode 100644 test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig delete mode 100644 test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig delete mode 100644 test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig delete mode 100644 test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig delete mode 100644 test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig delete mode 100644 test/cases/compile_errors/stage1/obj/undefined_function_call.zig delete mode 100644 test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig delete mode 100644 test/cases/compile_errors/stage1/obj/union_with_0_fields.zig delete mode 100644 test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig delete mode 100644 test/cases/compile_errors/stage1/obj/unreachable_code.zig delete mode 100644 test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig delete mode 100644 test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig delete mode 100644 test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig delete mode 100644 test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig delete mode 100644 test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig delete mode 100644 test/cases/compile_errors/stage1/test/bad_splat_type.zig delete mode 100644 test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig delete mode 100644 test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig delete mode 100644 test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig delete mode 100644 test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig delete mode 100644 test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig rename test/cases/compile_errors/{stage1/obj => }/struct_field_missing_type.zig (66%) rename test/cases/compile_errors/{stage1/obj => }/struct_init_syntax_for_array.zig (52%) rename test/cases/compile_errors/{stage1/obj => }/struct_with_declarations_unavailable_for_reify_type.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/struct_with_invalid_field.zig (85%) rename test/cases/compile_errors/{stage1/obj => }/suspend_inside_suspend_block.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-duplicate_enumeration_prong.zig (63%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-duplicate_enumeration_prong_when_else_present.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-duplicate_type.zig (70%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-duplicate_type_struct_alias.zig (74%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-missing_enumeration_prong.zig (50%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-multiple_else_prongs.zig (63%) create mode 100644 test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig rename test/cases/compile_errors/{stage1/obj => }/switch_expression-unreachable_else_prong_enum.zig (67%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-unreachable_else_prong_range_i8.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/switch_expression-unreachable_else_prong_range_u8.zig (55%) create mode 100644 test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig rename test/cases/compile_errors/{stage1/obj => }/switch_expression-unreachable_else_prong_u2.zig (52%) create mode 100644 test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig rename test/cases/compile_errors/{stage1/test => }/switching_with_exhaustive_enum_has___prong_.zig (59%) rename test/cases/compile_errors/{stage1/test => }/tagName_on_invalid_value_of_non-exhaustive_enum.zig (54%) rename test/cases/compile_errors/{stage1/obj => }/threadlocal_qualifier_on_const.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/truncate_sign_mismatch.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/try_in_function_with_non_error_return_type.zig (57%) rename test/cases/compile_errors/{stage1/test => }/type_mismatch_in_C_prototype_with_varargs.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/undeclared_identifier.zig (51%) rename test/cases/compile_errors/{stage1/obj => }/undeclared_identifier_error_should_mark_fn_as_impure.zig (59%) rename test/cases/compile_errors/{stage1/obj => }/undeclared_identifier_in_unanalyzed_branch.zig (55%) create mode 100644 test/cases/compile_errors/undefined_as_field_type_is_rejected.zig create mode 100644 test/cases/compile_errors/undefined_function_call.zig rename test/cases/compile_errors/{stage1/obj => }/underscore_is_not_a_declarable_symbol.zig (51%) rename test/cases/compile_errors/{stage1/obj => }/underscore_should_not_be_usable_inside_for.zig (64%) rename test/cases/compile_errors/{stage1/obj => }/underscore_should_not_be_usable_inside_while.zig (70%) rename test/cases/compile_errors/{stage1/obj => }/underscore_should_not_be_usable_inside_while_else.zig (78%) create mode 100644 test/cases/compile_errors/union_fields_with_value_assignments.zig create mode 100644 test/cases/compile_errors/union_with_0_fields.zig rename test/cases/compile_errors/{stage1/obj => }/union_with_specified_enum_omits_field.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/unreachable_code-double_break.zig (52%) create mode 100644 test/cases/compile_errors/unreachable_code-nested_returns.zig create mode 100644 test/cases/compile_errors/unreachable_code.zig rename test/cases/compile_errors/{stage1/obj => }/unreachable_variable.zig (53%) rename test/cases/compile_errors/{stage1/obj => }/unreachable_with_return.zig (52%) rename test/cases/compile_errors/{stage1/obj => }/use_invalid_number_literal_as_array_index.zig (55%) create mode 100644 test/cases/compile_errors/use_of_undeclared_identifier.zig rename test/cases/compile_errors/{stage1/obj => }/using_invalid_types_in_function_call_raises_an_error.zig (66%) create mode 100644 test/cases/compile_errors/usingnamespace_with_wrong_type.zig create mode 100644 test/cases/compile_errors/variable_has_wrong_type.zig rename test/cases/compile_errors/{stage1/obj => }/variable_initialization_compile_error_then_referenced.zig (74%) create mode 100644 test/cases/compile_errors/variable_with_type_noreturn.zig create mode 100644 test/cases/compile_errors/volatile_on_global_assembly.zig rename test/cases/compile_errors/{stage1/obj => }/while_expected_bool_got_error_union.zig (56%) rename test/cases/compile_errors/{stage1/obj => }/while_expected_bool_got_optional.zig (57%) rename test/cases/compile_errors/{stage1/obj => }/write_to_const_global_variable.zig (61%) rename test/cases/compile_errors/{stage1/obj => }/wrong_size_to_an_array_literal.zig (55%) rename test/cases/compile_errors/{stage1/obj => }/wrong_type_passed_to_panic.zig (51%) rename test/cases/compile_errors/{stage1/obj => }/wrong_type_to_hasField.zig (52%) diff --git a/src/AstGen.zig b/src/AstGen.zig index ec8af65614..c4cba54bdc 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -4464,6 +4464,7 @@ fn containerDecl( var total_fields: usize = 0; var decls: usize = 0; var nonexhaustive_node: Ast.Node.Index = 0; + var nonfinal_nonexhaustive = false; for (container_decl.ast.members) |member_node| { const member = switch (node_tags[member_node]) { .container_field_init => tree.containerFieldInit(member_node), @@ -4515,6 +4516,8 @@ fn containerDecl( return astgen.failNode(member.ast.value_expr, "'_' is used to mark an enum as non-exhaustive and cannot be assigned a value", .{}); } continue; + } else if (nonexhaustive_node != 0) { + nonfinal_nonexhaustive = true; } total_fields += 1; if (member.ast.value_expr != 0) { @@ -4524,6 +4527,9 @@ fn containerDecl( values += 1; } } + if (nonfinal_nonexhaustive) { + return astgen.failNode(nonexhaustive_node, "'_' field of non-exhaustive enum must be last", .{}); + } break :blk .{ .total_fields = total_fields, .values = values, diff --git a/src/Sema.zig b/src/Sema.zig index fdf3810d4a..6f516229a0 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -1707,7 +1707,7 @@ fn failWithModRemNegative(sema: *Sema, block: *Block, src: LazySrcLoc, lhs_ty: T } fn failWithExpectedOptionalType(sema: *Sema, block: *Block, src: LazySrcLoc, optional_ty: Type) CompileError { - return sema.fail(block, src, "expected optional type, found {}", .{optional_ty.fmt(sema.mod)}); + return sema.fail(block, src, "expected optional type, found '{}'", .{optional_ty.fmt(sema.mod)}); } fn failWithArrayInitNotSupported(sema: *Sema, block: *Block, src: LazySrcLoc, ty: Type) CompileError { @@ -1844,7 +1844,7 @@ pub fn resolveAlign( const alignment = @intCast(u32, alignment_big); // We coerce to u16 in the prev line. if (alignment == 0) return sema.fail(block, src, "alignment must be >= 1", .{}); if (!std.math.isPowerOfTwo(alignment)) { - return sema.fail(block, src, "alignment value {d} is not a power of two", .{ + return sema.fail(block, src, "alignment value '{d}' is not a power of two", .{ alignment, }); } @@ -2376,6 +2376,12 @@ fn zirEnumDecl( } } + if (small.nonexhaustive) { + if (fields_len > 1 and std.math.log2_int(u64, fields_len) == enum_obj.tag_ty.bitSize(sema.mod.getTarget())) { + return sema.fail(block, src, "non-exhaustive enum specifies every value", .{}); + } + } + try enum_obj.fields.ensureTotalCapacity(new_decl_arena_allocator, fields_len); const any_values = for (sema.code.extra[body_end..][0..bit_bags_count]) |bag| { if (bag != 0) break true; @@ -4540,6 +4546,7 @@ fn analyzeBlockBody( // to emit a jump instruction to after the block when it encounters the break. try parent_block.instructions.append(gpa, merges.block_inst); const resolved_ty = try sema.resolvePeerTypes(parent_block, src, merges.results.items, .none); + // TODO add note "missing else causes void value" const type_src = src; // TODO: better source location const valid_rt = try sema.validateRunTimeType(child_block, type_src, resolved_ty, false); @@ -4761,7 +4768,7 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst const msg = msg: { const msg = try sema.errMsg(block, src, "multiple @setAlignStack in the same function body", .{}); errdefer msg.destroy(sema.gpa); - try sema.errNote(block, src, msg, "other instance here", .{}); + try sema.errNote(block, gop.value_ptr.src, msg, "other instance here", .{}); break :msg msg; }; return sema.failWithOwnedErrorMsg(block, msg); @@ -6155,7 +6162,7 @@ fn zirErrorUnionType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr const payload = try sema.resolveType(block, rhs_src, extra.rhs); if (error_set.zigTypeTag() != .ErrorSet) { - return sema.fail(block, lhs_src, "expected error set type, found {}", .{ + return sema.fail(block, lhs_src, "expected error set type, found '{}'", .{ error_set.fmt(sema.mod), }); } @@ -6243,7 +6250,7 @@ fn zirIntToError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! if (try sema.resolveDefinedValue(block, operand_src, operand)) |value| { const int = try sema.usizeCast(block, operand_src, value.toUnsignedInt(target)); if (int > sema.mod.global_error_set.count() or int == 0) - return sema.fail(block, operand_src, "integer value {d} represents no error", .{int}); + return sema.fail(block, operand_src, "integer value '{d}' represents no error", .{int}); const payload = try sema.arena.create(Value.Payload.Error); payload.* = .{ .base = .{ .tag = .@"error" }, @@ -6288,9 +6295,9 @@ fn zirMergeErrorSets(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr const lhs_ty = try sema.analyzeAsType(block, lhs_src, lhs); const rhs_ty = try sema.analyzeAsType(block, rhs_src, rhs); if (lhs_ty.zigTypeTag() != .ErrorSet) - return sema.fail(block, lhs_src, "expected error set type, found {}", .{lhs_ty.fmt(sema.mod)}); + return sema.fail(block, lhs_src, "expected error set type, found '{}'", .{lhs_ty.fmt(sema.mod)}); if (rhs_ty.zigTypeTag() != .ErrorSet) - return sema.fail(block, rhs_src, "expected error set type, found {}", .{rhs_ty.fmt(sema.mod)}); + return sema.fail(block, rhs_src, "expected error set type, found '{}'", .{rhs_ty.fmt(sema.mod)}); // Anything merged with anyerror is anyerror. if (lhs_ty.tag() == .anyerror or rhs_ty.tag() == .anyerror) { @@ -6351,7 +6358,7 @@ fn zirEnumToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A break :blk try sema.unionToTag(block, tag_ty, operand, operand_src); }, else => { - return sema.fail(block, operand_src, "expected enum or tagged union, found {}", .{ + return sema.fail(block, operand_src, "expected enum or tagged union, found '{}'", .{ operand_ty.fmt(sema.mod), }); }, @@ -6385,7 +6392,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A const operand = try sema.resolveInst(extra.rhs); if (dest_ty.zigTypeTag() != .Enum) { - return sema.fail(block, dest_ty_src, "expected enum, found {}", .{dest_ty.fmt(sema.mod)}); + return sema.fail(block, dest_ty_src, "expected enum, found '{}'", .{dest_ty.fmt(sema.mod)}); } if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |int_val| { @@ -6400,7 +6407,7 @@ fn zirIntToEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A const msg = try sema.errMsg( block, src, - "enum '{}' has no tag with value {}", + "enum '{}' has no tag with value '{}'", .{ dest_ty.fmt(sema.mod), int_val.fmtValue(sema.typeOf(operand), sema.mod) }, ); errdefer msg.destroy(sema.gpa); @@ -6452,7 +6459,7 @@ fn analyzeOptionalPayloadPtr( const opt_type = optional_ptr_ty.elemType(); if (opt_type.zigTypeTag() != .Optional) { - return sema.fail(block, src, "expected optional type, found {}", .{opt_type.fmt(sema.mod)}); + return sema.fail(block, src, "expected optional type, found '{}'", .{opt_type.fmt(sema.mod)}); } const child_type = try opt_type.optionalChildAlloc(sema.arena); @@ -6640,7 +6647,7 @@ fn analyzeErrUnionPayloadPtr( assert(operand_ty.zigTypeTag() == .Pointer); if (operand_ty.elemType().zigTypeTag() != .ErrorUnion) { - return sema.fail(block, src, "expected error union type, found {}", .{ + return sema.fail(block, src, "expected error union type, found '{}'", .{ operand_ty.elemType().fmt(sema.mod), }); } @@ -6739,7 +6746,7 @@ fn zirErrUnionCodePtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE assert(operand_ty.zigTypeTag() == .Pointer); if (operand_ty.elemType().zigTypeTag() != .ErrorUnion) { - return sema.fail(block, src, "expected error union type, found {}", .{ + return sema.fail(block, src, "expected error union type, found '{}'", .{ operand_ty.elemType().fmt(sema.mod), }); } @@ -7639,7 +7646,6 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A defer tracy.end(); const inst_data = sema.code.instructions.items(.data)[inst].pl_node; - const src = inst_data.src(); const dest_ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; @@ -7674,7 +7680,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A return sema.addConstant(dest_ty, try operand_val.floatCast(sema.arena, dest_ty, target)); } if (dest_is_comptime_float) { - return sema.fail(block, src, "unable to cast runtime value to 'comptime_float'", .{}); + return sema.fail(block, operand_src, "unable to cast runtime value to 'comptime_float'", .{}); } const src_bits = operand_ty.floatBits(target); const dst_bits = dest_ty.floatBits(target); @@ -11664,8 +11670,8 @@ fn analyzeCmp( const instructions = &[_]Air.Inst.Ref{ lhs, rhs }; const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{ .override = &[_]LazySrcLoc{ lhs_src, rhs_src } }); if (!resolved_type.isSelfComparable(is_equality_cmp)) { - return sema.fail(block, src, "{s} operator not allowed for type '{}'", .{ - @tagName(op), resolved_type.fmt(sema.mod), + return sema.fail(block, src, "operator {s} not allowed for type '{}'", .{ + compareOperatorName(op), resolved_type.fmt(sema.mod), }); } const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src); @@ -11673,6 +11679,17 @@ fn analyzeCmp( return sema.cmpSelf(block, casted_lhs, casted_rhs, op, lhs_src, rhs_src); } +fn compareOperatorName(comp: std.math.CompareOperator) []const u8 { + return switch (comp) { + .lt => "<", + .lte => "<=", + .eq => "==", + .gte => ">=", + .gt => ">", + .neq => "!=", + }; +} + fn cmpSelf( sema: *Sema, block: *Block, @@ -14382,7 +14399,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air }; return sema.failWithOwnedErrorMsg(block, msg); }, - else => return sema.fail(block, operand_src, "expected enum or union; found {}", .{ + else => return sema.fail(block, operand_src, "expected enum or union; found '{}'", .{ operand_ty.fmt(mod), }), }; @@ -14392,8 +14409,8 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air const field_index = enum_ty.enumTagFieldIndex(val, mod) orelse { const enum_decl = mod.declPtr(enum_decl_index); const msg = msg: { - const msg = try sema.errMsg(block, src, "no field with value {} in enum '{s}'", .{ - casted_operand, enum_decl.name, + const msg = try sema.errMsg(block, src, "no field with value '{}' in enum '{s}'", .{ + val.fmtValue(enum_ty, sema.mod), enum_decl.name, }); errdefer msg.destroy(sema.gpa); try mod.errNoteNonLazy(enum_decl.srcLoc(), msg, "declared here", .{}); @@ -14458,6 +14475,8 @@ fn zirReify(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I var buffer: Value.ToTypeBuffer = undefined; const child_ty = child_val.toType(&buffer); + try sema.checkVectorElemType(block, src, child_ty); + const ty = try Type.vector(sema.arena, len, try child_ty.copy(sema.arena)); return sema.addType(ty); }, @@ -15099,6 +15118,8 @@ fn zirFloatToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |val| { const result_val = try sema.floatToInt(block, operand_src, val, operand_ty, dest_ty); return sema.addConstant(dest_ty, result_val); + } else if (dest_ty.zigTypeTag() == .ComptimeInt) { + return sema.failWithNeededComptime(block, operand_src); } try sema.requireRuntimeBlock(block, operand_src); @@ -15121,6 +15142,8 @@ fn zirIntToFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! const target = sema.mod.getTarget(); const result_val = try val.intToFloat(sema.arena, operand_ty, dest_ty, target); return sema.addConstant(dest_ty, result_val); + } else if (dest_ty.zigTypeTag() == .ComptimeFloat) { + return sema.failWithNeededComptime(block, operand_src); } try sema.requireRuntimeBlock(block, operand_src); @@ -15242,7 +15265,7 @@ fn zirErrSetCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat const msg = try sema.errMsg( block, src, - "error.{s} not a member of error set '{}'", + "'error.{s}' not a member of error set '{}'", .{ error_name, dest_ty.fmt(sema.mod) }, ); errdefer msg.destroy(sema.gpa); @@ -15633,22 +15656,29 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6 try sema.resolveTypeLayout(block, lhs_src, ty); if (ty.tag() != .@"struct") { - return sema.fail( - block, - lhs_src, - "expected struct type, found '{}'", - .{ty.fmt(sema.mod)}, - ); + const msg = msg: { + const msg = try sema.errMsg(block, lhs_src, "expected struct type, found '{}'", .{ty.fmt(sema.mod)}); + errdefer msg.destroy(sema.gpa); + try sema.addDeclaredHereNote(msg, ty); + break :msg msg; + }; + return sema.failWithOwnedErrorMsg(block, msg); } const fields = ty.structFields(); const index = fields.getIndex(field_name) orelse { - return sema.fail( - block, - rhs_src, - "struct '{}' has no field '{s}'", - .{ ty.fmt(sema.mod), field_name }, - ); + const msg = msg: { + const msg = try sema.errMsg( + block, + rhs_src, + "struct '{}' has no field '{s}'", + .{ ty.fmt(sema.mod), field_name }, + ); + errdefer msg.destroy(sema.gpa); + try sema.addDeclaredHereNote(msg, ty); + break :msg msg; + }; + return sema.failWithOwnedErrorMsg(block, msg); }; switch (ty.containerLayout()) { @@ -15701,7 +15731,7 @@ fn checkPtrOperand( const msg = try sema.errMsg( block, ty_src, - "expected pointer, found {}", + "expected pointer, found '{}'", .{ty.fmt(sema.mod)}, ); errdefer msg.destroy(sema.gpa); @@ -15817,7 +15847,7 @@ fn checkAtomicPtrOperand( error.BadType => return sema.fail( block, elem_ty_src, - "expected bool, integer, float, enum, or pointer type; found {}", + "expected bool, integer, float, enum, or pointer type; found '{}'", .{elem_ty.fmt(sema.mod)}, ), }; @@ -16026,7 +16056,7 @@ fn checkVectorizableBinaryOperands( } } else { const msg = msg: { - const msg = try sema.errMsg(block, src, "mixed scalar and vector operands: {} and {}", .{ + const msg = try sema.errMsg(block, src, "mixed scalar and vector operands: '{}' and '{}'", .{ lhs_ty.fmt(sema.mod), rhs_ty.fmt(sema.mod), }); errdefer msg.destroy(sema.gpa); @@ -16069,6 +16099,10 @@ fn resolveExportOptions( const visibility_val = try sema.resolveConstValue(block, src, visibility_operand); const visibility = visibility_val.toEnum(std.builtin.SymbolVisibility); + if (name.len < 1) { + return sema.fail(block, src, "exported symbol name cannot be empty", .{}); + } + if (visibility != .default and linkage == .Internal) { return sema.fail(block, src, "symbol '{s}' exported with internal linkage has non-default visibility {s}", .{ name, @tagName(visibility), @@ -16247,7 +16281,7 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. const target = sema.mod.getTarget(); if (operand_ty.zigTypeTag() != .Vector) { - return sema.fail(block, operand_src, "expected vector, found {}", .{operand_ty.fmt(sema.mod)}); + return sema.fail(block, operand_src, "expected vector, found '{}'", .{operand_ty.fmt(sema.mod)}); } const scalar_ty = operand_ty.childType(); @@ -16256,13 +16290,13 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. switch (operation) { .And, .Or, .Xor => switch (scalar_ty.zigTypeTag()) { .Int, .Bool => {}, - else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or boolean operand; found {}", .{ + else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or boolean operand; found '{}'", .{ @tagName(operation), operand_ty.fmt(sema.mod), }), }, .Min, .Max, .Add, .Mul => switch (scalar_ty.zigTypeTag()) { .Int, .Float => {}, - else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or float operand; found {}", .{ + else => return sema.fail(block, operand_src, "@reduce operation '{s}' requires integer or float operand; found '{}'", .{ @tagName(operation), operand_ty.fmt(sema.mod), }), }, @@ -16321,7 +16355,7 @@ fn zirShuffle(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air const mask_len = switch (sema.typeOf(mask).zigTypeTag()) { .Array, .Vector => sema.typeOf(mask).arrayLen(), - else => return sema.fail(block, mask_src, "expected vector or array, found {}", .{sema.typeOf(mask).fmt(sema.mod)}), + else => return sema.fail(block, mask_src, "expected vector or array, found '{}'", .{sema.typeOf(mask).fmt(sema.mod)}), }; mask_ty = try Type.Tag.vector.create(sema.arena, .{ .len = mask_len, @@ -16356,7 +16390,7 @@ fn analyzeShuffle( var maybe_a_len = switch (sema.typeOf(a).zigTypeTag()) { .Array, .Vector => sema.typeOf(a).arrayLen(), .Undefined => null, - else => return sema.fail(block, a_src, "expected vector or array with element type {}, found {}", .{ + else => return sema.fail(block, a_src, "expected vector or array with element type '{}', found '{}'", .{ elem_ty.fmt(sema.mod), sema.typeOf(a).fmt(sema.mod), }), @@ -16364,7 +16398,7 @@ fn analyzeShuffle( var maybe_b_len = switch (sema.typeOf(b).zigTypeTag()) { .Array, .Vector => sema.typeOf(b).arrayLen(), .Undefined => null, - else => return sema.fail(block, b_src, "expected vector or array with element type {}, found {}", .{ + else => return sema.fail(block, b_src, "expected vector or array with element type '{}', found '{}'", .{ elem_ty.fmt(sema.mod), sema.typeOf(b).fmt(sema.mod), }), @@ -16412,7 +16446,7 @@ fn analyzeShuffle( const msg = try sema.errMsg(block, mask_src, "mask index {d} has out-of-bounds selection", .{i}); errdefer msg.destroy(sema.gpa); - try sema.errNote(block, operand_info[chosen][1], msg, "selected index {d} out of bounds of {}", .{ + try sema.errNote(block, operand_info[chosen][1], msg, "selected index {d} out of bounds of '{}'", .{ unsigned, operand_info[chosen][2].fmt(sema.mod), }); @@ -16881,7 +16915,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError const args_ty = sema.typeOf(args); if (!args_ty.isTuple() and args_ty.tag() != .empty_struct_literal) { - return sema.fail(block, args_src, "expected a tuple, found {}", .{args_ty.fmt(sema.mod)}); + return sema.fail(block, args_src, "expected a tuple, found '{}'", .{args_ty.fmt(sema.mod)}); } var resolved_args: []Air.Inst.Ref = undefined; @@ -18217,9 +18251,15 @@ fn fieldVal( if (payload.data.names.getEntry(field_name)) |entry| { break :blk entry.key_ptr.*; } - return sema.fail(block, src, "no error named '{s}' in '{}'", .{ - field_name, child_type.fmt(sema.mod), - }); + const msg = msg: { + const msg = try sema.errMsg(block, src, "no error named '{s}' in '{}'", .{ + field_name, child_type.fmt(sema.mod), + }); + errdefer msg.destroy(sema.gpa); + try sema.addDeclaredHereNote(msg, child_type); + break :msg msg; + }; + return sema.failWithOwnedErrorMsg(block, msg); } else (try sema.mod.getErrorValue(field_name)).key; return sema.addConstant( @@ -18894,12 +18934,12 @@ fn tupleFieldIndex( field_name_src: LazySrcLoc, ) CompileError!u32 { const field_index = std.fmt.parseUnsigned(u32, field_name, 10) catch |err| { - return sema.fail(block, field_name_src, "tuple {} has no such field '{s}': {s}", .{ + return sema.fail(block, field_name_src, "tuple '{}' has no such field '{s}': {s}", .{ tuple_ty.fmt(sema.mod), field_name, @errorName(err), }); }; if (field_index >= tuple_ty.structFieldCount()) { - return sema.fail(block, field_name_src, "tuple {} has no such field '{s}'", .{ + return sema.fail(block, field_name_src, "tuple '{}' has no such field '{s}'", .{ tuple_ty.fmt(sema.mod), field_name, }); } @@ -19809,7 +19849,7 @@ fn coerce( return sema.fail( block, inst_src, - "fractional component prevents float value {} from coercion to type '{}'", + "fractional component prevents float value '{}' from coercion to type '{}'", .{ val.fmtValue(inst_ty, sema.mod), dest_ty.fmt(sema.mod) }, ); } @@ -19820,7 +19860,7 @@ fn coerce( if (try sema.resolveDefinedValue(block, inst_src, inst)) |val| { // comptime known integer to other number if (!(try sema.intFitsInType(block, inst_src, val, dest_ty))) { - return sema.fail(block, inst_src, "type {} cannot represent integer value {}", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) }); + return sema.fail(block, inst_src, "type '{}' cannot represent integer value '{}'", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) }); } return try sema.addConstant(dest_ty, val); } @@ -19854,7 +19894,7 @@ fn coerce( return sema.fail( block, inst_src, - "type {} cannot represent float value {}", + "type '{}' cannot represent float value '{}'", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) }, ); } @@ -19878,7 +19918,7 @@ fn coerce( // return sema.fail( // block, // inst_src, - // "type {} cannot represent integer value {}", + // "type '{}' cannot represent integer value '{}'", // .{ dest_ty.fmt(sema.mod), val }, // ); //} @@ -20021,7 +20061,7 @@ fn coerce( return sema.addConstUndef(dest_ty); } - return sema.fail(block, inst_src, "expected {}, found {}", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod) }); + return sema.fail(block, inst_src, "expected type '{}', found '{}'", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod) }); } const InMemoryCoercionResult = enum { @@ -21541,7 +21581,7 @@ fn coerceEnumToUnion( const tag_ty = union_ty.unionTagType() orelse { const msg = msg: { - const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{ + const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{ union_ty.fmt(sema.mod), inst_ty.fmt(sema.mod), }); errdefer msg.destroy(sema.gpa); @@ -21557,7 +21597,7 @@ fn coerceEnumToUnion( const union_obj = union_ty.cast(Type.Payload.Union).?.data; const field_index = union_obj.tag_ty.enumTagFieldIndex(val, sema.mod) orelse { const msg = msg: { - const msg = try sema.errMsg(block, inst_src, "union {} has no tag with value {}", .{ + const msg = try sema.errMsg(block, inst_src, "union '{}' has no tag with value '{}'", .{ union_ty.fmt(sema.mod), val.fmtValue(tag_ty, sema.mod), }); errdefer msg.destroy(sema.gpa); @@ -21593,7 +21633,7 @@ fn coerceEnumToUnion( if (tag_ty.isNonexhaustiveEnum()) { const msg = msg: { - const msg = try sema.errMsg(block, inst_src, "runtime coercion to union {} from non-exhaustive enum", .{ + const msg = try sema.errMsg(block, inst_src, "runtime coercion to union '{}' from non-exhaustive enum", .{ union_ty.fmt(sema.mod), }); errdefer msg.destroy(sema.gpa); @@ -21710,7 +21750,7 @@ fn coerceArrayLike( if (dest_len != inst_len) { const msg = msg: { - const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{ + const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod), }); errdefer msg.destroy(sema.gpa); @@ -21781,7 +21821,7 @@ fn coerceTupleToArray( if (dest_len != inst_len) { const msg = msg: { - const msg = try sema.errMsg(block, inst_src, "expected {}, found {}", .{ + const msg = try sema.errMsg(block, inst_src, "expected type '{}', found '{}'", .{ dest_ty.fmt(sema.mod), inst_ty.fmt(sema.mod), }); errdefer msg.destroy(sema.gpa); @@ -23553,7 +23593,7 @@ fn resolveStructLayout( switch (struct_obj.status) { .none, .have_field_types => {}, .field_types_wip, .layout_wip => { - return sema.fail(block, src, "struct {} depends on itself", .{ty.fmt(sema.mod)}); + return sema.fail(block, src, "struct '{}' depends on itself", .{ty.fmt(sema.mod)}); }, .have_layout, .fully_resolved_wip, .fully_resolved => return, } @@ -23584,7 +23624,7 @@ fn resolveUnionLayout( switch (union_obj.status) { .none, .have_field_types => {}, .field_types_wip, .layout_wip => { - return sema.fail(block, src, "union {} depends on itself", .{ty.fmt(sema.mod)}); + return sema.fail(block, src, "union '{}' depends on itself", .{ty.fmt(sema.mod)}); }, .have_layout, .fully_resolved_wip, .fully_resolved => return, } @@ -23752,7 +23792,7 @@ fn resolveTypeFieldsStruct( switch (struct_obj.status) { .none => {}, .field_types_wip => { - return sema.fail(block, src, "struct {} depends on itself", .{ty.fmt(sema.mod)}); + return sema.fail(block, src, "struct '{}' depends on itself", .{ty.fmt(sema.mod)}); }, .have_field_types, .have_layout, @@ -23782,7 +23822,7 @@ fn resolveTypeFieldsUnion( switch (union_obj.status) { .none => {}, .field_types_wip => { - return sema.fail(block, src, "union {} depends on itself", .{ty.fmt(sema.mod)}); + return sema.fail(block, src, "union '{}' depends on itself", .{ty.fmt(sema.mod)}); }, .have_field_types, .have_layout, @@ -25005,7 +25045,7 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr // The type is not in-memory coercible or the direct dereference failed, so it must // be bitcast according to the pointer type we are performing the load through. if (!load_ty.hasWellDefinedLayout()) - return sema.fail(block, src, "comptime dereference requires {} to have a well-defined layout, but it does not.", .{load_ty.fmt(sema.mod)}); + return sema.fail(block, src, "comptime dereference requires '{}' to have a well-defined layout, but it does not.", .{load_ty.fmt(sema.mod)}); const load_sz = try sema.typeAbiSize(block, src, load_ty); @@ -25020,11 +25060,11 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr if (deref.ty_without_well_defined_layout) |bad_ty| { // We got no parent for bit-casting, or the parent we got was too small. Either way, the problem // is that some type we encountered when de-referencing does not have a well-defined layout. - return sema.fail(block, src, "comptime dereference requires {} to have a well-defined layout, but it does not.", .{bad_ty.fmt(sema.mod)}); + return sema.fail(block, src, "comptime dereference requires '{}' to have a well-defined layout, but it does not.", .{bad_ty.fmt(sema.mod)}); } else { // If all encountered types had well-defined layouts, the parent is the root decl and it just // wasn't big enough for the load. - return sema.fail(block, src, "dereference of {} exceeds bounds of containing decl of type {}", .{ ptr_ty.fmt(sema.mod), deref.parent.?.tv.ty.fmt(sema.mod) }); + return sema.fail(block, src, "dereference of '{}' exceeds bounds of containing decl of type '{}'", .{ ptr_ty.fmt(sema.mod), deref.parent.?.tv.ty.fmt(sema.mod) }); } } @@ -25032,7 +25072,7 @@ fn pointerDeref(sema: *Sema, block: *Block, src: LazySrcLoc, ptr_val: Value, ptr /// is too big to fit. fn usizeCast(sema: *Sema, block: *Block, src: LazySrcLoc, int: u64) CompileError!usize { if (@bitSizeOf(u64) <= @bitSizeOf(usize)) return int; - return std.math.cast(usize, int) orelse return sema.fail(block, src, "expression produces integer value {d} which is too big for this compiler implementation to handle", .{int}); + return std.math.cast(usize, int) orelse return sema.fail(block, src, "expression produces integer value '{d}' which is too big for this compiler implementation to handle", .{int}); } /// For pointer-like optionals, it returns the pointer type. For pointers, @@ -25387,7 +25427,7 @@ fn anonStructFieldIndex( return @intCast(u32, i); } } - return sema.fail(block, field_src, "anonymous struct {} has no such field '{s}'", .{ + return sema.fail(block, field_src, "anonymous struct '{}' has no such field '{s}'", .{ struct_ty.fmt(sema.mod), field_name, }); } @@ -25768,7 +25808,7 @@ fn floatToIntScalar( try Value.Tag.int_big_positive.create(sema.arena, result_limbs); if (!(try sema.intFitsInType(block, src, result, int_ty))) { - return sema.fail(block, src, "float value {} cannot be stored in integer type '{}'", .{ + return sema.fail(block, src, "float value '{}' cannot be stored in integer type '{}'", .{ val.fmtValue(float_ty, sema.mod), int_ty.fmt(sema.mod), }); } diff --git a/src/TypedValue.zig b/src/TypedValue.zig index b00600d37a..a41c865827 100644 --- a/src/TypedValue.zig +++ b/src/TypedValue.zig @@ -409,11 +409,11 @@ pub fn print( } return writer.writeAll(" }"); }, - .float_16 => return writer.print("{}", .{val.castTag(.float_16).?.data}), - .float_32 => return writer.print("{}", .{val.castTag(.float_32).?.data}), - .float_64 => return writer.print("{}", .{val.castTag(.float_64).?.data}), - .float_80 => return writer.print("{}", .{val.castTag(.float_80).?.data}), - .float_128 => return writer.print("{}", .{val.castTag(.float_128).?.data}), + .float_16 => return writer.print("{d}", .{val.castTag(.float_16).?.data}), + .float_32 => return writer.print("{d}", .{val.castTag(.float_32).?.data}), + .float_64 => return writer.print("{d}", .{val.castTag(.float_64).?.data}), + .float_80 => return writer.print("{d}", .{@floatCast(f64, val.castTag(.float_80).?.data)}), + .float_128 => return writer.print("{d}", .{@floatCast(f64, val.castTag(.float_128).?.data)}), .@"error" => return writer.print("error.{s}", .{val.castTag(.@"error").?.data.name}), .eu_payload => { val = val.castTag(.eu_payload).?.data; diff --git a/test/cases/aarch64-macos/hello_world_with_updates.1.zig b/test/cases/aarch64-macos/hello_world_with_updates.1.zig index 909fc9ccfb..435747c2ee 100644 --- a/test/cases/aarch64-macos/hello_world_with_updates.1.zig +++ b/test/cases/aarch64-macos/hello_world_with_updates.1.zig @@ -2,4 +2,4 @@ pub export fn main() noreturn {} // error // -// :1:32: error: expected noreturn, found void +// :1:32: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig b/test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig rename to test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig index e1d498e65f..fd194f252d 100644 --- a/test/cases/compile_errors/stage1/obj/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig +++ b/test/cases/compile_errors/Issue_5586_Make_unary_minus_for_unsigned_types_a_compile_error.zig @@ -9,8 +9,8 @@ export fn f2(x: V(4, u32)) V(4, u32) { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:12: error: negation of type 'u32' -// tmp.zig:8:12: error: negation of type 'u32' +// :3:12: error: negation of type 'u32' +// :8:12: error: negation of type '@Vector(4, u32)' diff --git a/test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig b/test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig similarity index 50% rename from test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig rename to test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig index 1aa0996ba4..20c9528847 100644 --- a/test/cases/compile_errors/stage1/obj/Issue_6823_dont_allow_._to_be_followed_by_.zig +++ b/test/cases/compile_errors/Issue_6823_dont_allow_._to_be_followed_by_.zig @@ -4,7 +4,7 @@ fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:28: error: '.*' cannot be followed by '*'. Are you missing a space? +// :2:28: error: '.*' cannot be followed by '*'. Are you missing a space? diff --git a/test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig b/test/cases/compile_errors/access_invalid_typeInfo_decl.zig similarity index 60% rename from test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig rename to test/cases/compile_errors/access_invalid_typeInfo_decl.zig index 40e31a0855..4233b42e7d 100644 --- a/test/cases/compile_errors/stage1/test/access_invalid_typeInfo_decl.zig +++ b/test/cases/compile_errors/access_invalid_typeInfo_decl.zig @@ -4,8 +4,8 @@ test "Crash" { } // error -// backend=stage1 +// backend=stage2 // target=native // is_test=1 // -// tmp.zig:1:11: error: use of undeclared identifier 'B' +// :1:11: error: use of undeclared identifier 'B' diff --git a/test/cases/compile_errors/access_non-existent_member_of_error_set.zig b/test/cases/compile_errors/access_non-existent_member_of_error_set.zig new file mode 100644 index 0000000000..765bbe59c3 --- /dev/null +++ b/test/cases/compile_errors/access_non-existent_member_of_error_set.zig @@ -0,0 +1,12 @@ +const Foo = error{A}; +comptime { + const z = Foo.Bar; + _ = z; +} + +// error +// backend=stage2 +// target=native +// +// :3:18: error: no error named 'Bar' in 'error{A}' +// :1:13: note: error set declared here diff --git a/test/cases/compile_errors/add_assign_on_undefined_value.zig b/test/cases/compile_errors/add_assign_on_undefined_value.zig new file mode 100644 index 0000000000..b2d183c006 --- /dev/null +++ b/test/cases/compile_errors/add_assign_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + a += a; +} + +// error +// backend=stage2 +// target=native +// +// :3:10: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/add_on_undefined_value.zig b/test/cases/compile_errors/add_on_undefined_value.zig new file mode 100644 index 0000000000..404f5019be --- /dev/null +++ b/test/cases/compile_errors/add_on_undefined_value.zig @@ -0,0 +1,10 @@ +comptime { + var a: i64 = undefined; + _ = a + a; +} + +// error +// backend=stage2 +// target=native +// +// :3:13: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig b/test/cases/compile_errors/add_overflow_in_function_evaluation.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig rename to test/cases/compile_errors/add_overflow_in_function_evaluation.zig index d4fa312482..2f8a4678d3 100644 --- a/test/cases/compile_errors/stage1/obj/add_overflow_in_function_evaluation.zig +++ b/test/cases/compile_errors/add_overflow_in_function_evaluation.zig @@ -6,7 +6,8 @@ fn add(a: u16, b: u16) u16 { export fn entry() usize { return @sizeOf(@TypeOf(y)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:14: error: operation caused overflow +// :3:14: error: overflow of integer type 'u16' with value '65540' +// :1:14: note: called from here diff --git a/test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig b/test/cases/compile_errors/addition_with_non_numbers.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig rename to test/cases/compile_errors/addition_with_non_numbers.zig index 8f343926f2..deaeeba334 100644 --- a/test/cases/compile_errors/stage1/obj/addition_with_non_numbers.zig +++ b/test/cases/compile_errors/addition_with_non_numbers.zig @@ -6,7 +6,7 @@ const x = Foo {.field = 1} + Foo {.field = 2}; export fn entry() usize { return @sizeOf(@TypeOf(x)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:28: error: invalid operands to binary expression: 'Foo' and 'Foo' +// :4:28: error: invalid operands to binary expression: 'Struct' and 'Struct' diff --git a/test/cases/compile_errors/address_of_number_literal.zig b/test/cases/compile_errors/address_of_number_literal.zig new file mode 100644 index 0000000000..2d8380634a --- /dev/null +++ b/test/cases/compile_errors/address_of_number_literal.zig @@ -0,0 +1,10 @@ +const x = 3; +const y = &x; +fn foo() *const i32 { return y; } +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :3:30: error: expected type '*const i32', found '*const comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig b/test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig rename to test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig index 9f76d3ca4f..1b8e3767b2 100644 --- a/test/cases/compile_errors/stage1/obj/alignCast_expects_pointer_or_slice.zig +++ b/test/cases/compile_errors/alignCast_expects_pointer_or_slice.zig @@ -3,7 +3,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:19: error: expected pointer or slice, found 'u32' +// :2:19: error: expected pointer type, found 'u32' diff --git a/test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig b/test/cases/compile_errors/alignment_of_enum_field_specified.zig similarity index 69% rename from test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig rename to test/cases/compile_errors/alignment_of_enum_field_specified.zig index 9b6f1e452d..2ff42f7a65 100644 --- a/test/cases/compile_errors/stage1/obj/alignment_of_enum_field_specified.zig +++ b/test/cases/compile_errors/alignment_of_enum_field_specified.zig @@ -8,7 +8,7 @@ export fn entry1() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:7: error: expected ',' after field +// :3:7: error: expected ',' after field diff --git a/test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig b/test/cases/compile_errors/ambiguous_decl_reference.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig rename to test/cases/compile_errors/ambiguous_decl_reference.zig index 82e6a0a24c..c32b9a0755 100644 --- a/test/cases/compile_errors/stage1/obj/ambiguous_decl_reference.zig +++ b/test/cases/compile_errors/ambiguous_decl_reference.zig @@ -13,9 +13,9 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:13: error: ambiguous reference -// tmp.zig:7:9: note: declared here -// tmp.zig:1:1: note: also declared here +// :5:13: error: ambiguous reference +// :7:9: note: declared here +// :1:1: note: also declared here diff --git a/test/cases/llvm/any_typed_null_to_any_typed_optional.zig b/test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig similarity index 74% rename from test/cases/llvm/any_typed_null_to_any_typed_optional.zig rename to test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig index c155d04497..ad6427d224 100644 --- a/test/cases/llvm/any_typed_null_to_any_typed_optional.zig +++ b/test/cases/compile_errors/any_typed_null_to_any_typed_optional.zig @@ -8,4 +8,4 @@ pub fn main() void { // backend=stage2,llvm // target=x86_64-linux,x86_64-macos // -// :3:21: error: expected *anyopaque, found ?usize +// :3:21: error: expected type '*anyopaque', found '?usize' diff --git a/test/cases/compile_errors/array_access_of_undeclared_identifier.zig b/test/cases/compile_errors/array_access_of_undeclared_identifier.zig new file mode 100644 index 0000000000..8f4e447aba --- /dev/null +++ b/test/cases/compile_errors/array_access_of_undeclared_identifier.zig @@ -0,0 +1,9 @@ +export fn f() void { + i[i] = i[i]; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: use of undeclared identifier 'i' diff --git a/test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig b/test/cases/compile_errors/array_concatenation_with_wrong_type.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig rename to test/cases/compile_errors/array_concatenation_with_wrong_type.zig index ccddc7efbd..6f2648f74b 100644 --- a/test/cases/compile_errors/stage1/obj/array_concatenation_with_wrong_type.zig +++ b/test/cases/compile_errors/array_concatenation_with_wrong_type.zig @@ -5,7 +5,7 @@ const a = derp ++ "foo"; export fn entry() usize { return @sizeOf(@TypeOf(a)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:11: error: expected array, found 'usize' +// :3:11: error: expected indexable; found 'usize' diff --git a/test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig b/test/cases/compile_errors/asm_at_compile_time.zig similarity index 70% rename from test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig rename to test/cases/compile_errors/asm_at_compile_time.zig index fcfd5e7da6..ba4aa81170 100644 --- a/test/cases/compile_errors/stage1/obj/asm_at_compile_time.zig +++ b/test/cases/compile_errors/asm_at_compile_time.zig @@ -11,7 +11,7 @@ fn doSomeAsm() void { } // error -// backend=stage1 +// backend=llvm // target=native // -// tmp.zig:6:5: error: unable to evaluate constant expression +// :6:5: error: unable to evaluate constant expression diff --git a/test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig b/test/cases/compile_errors/assign_null_to_non-optional_pointer.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig rename to test/cases/compile_errors/assign_null_to_non-optional_pointer.zig index 110d6c2629..ca36dbfbfb 100644 --- a/test/cases/compile_errors/stage1/obj/assign_null_to_non-optional_pointer.zig +++ b/test/cases/compile_errors/assign_null_to_non-optional_pointer.zig @@ -3,7 +3,7 @@ const a: *u8 = null; export fn entry() usize { return @sizeOf(@TypeOf(a)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:16: error: expected type '*u8', found '@Type(.Null)' +// :1:16: error: expected type '*u8', found '@TypeOf(null)' diff --git a/test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig b/test/cases/compile_errors/assign_through_constant_pointer.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig rename to test/cases/compile_errors/assign_through_constant_pointer.zig index 69ba383843..21924ae4da 100644 --- a/test/cases/compile_errors/stage1/obj/assign_through_constant_pointer.zig +++ b/test/cases/compile_errors/assign_through_constant_pointer.zig @@ -4,7 +4,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:13: error: cannot assign to constant +// :3:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig b/test/cases/compile_errors/assign_through_constant_slice.zig similarity index 60% rename from test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig rename to test/cases/compile_errors/assign_through_constant_slice.zig index 55d2e7e7c7..a7631be61c 100644 --- a/test/cases/compile_errors/stage1/obj/assign_through_constant_slice.zig +++ b/test/cases/compile_errors/assign_through_constant_slice.zig @@ -4,7 +4,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:13: error: cannot assign to constant +// :3:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig b/test/cases/compile_errors/assign_to_constant_field.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig rename to test/cases/compile_errors/assign_to_constant_field.zig index 610818118a..4c79b29592 100644 --- a/test/cases/compile_errors/stage1/obj/assign_to_constant_field.zig +++ b/test/cases/compile_errors/assign_to_constant_field.zig @@ -7,7 +7,7 @@ export fn derp() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:15: error: cannot assign to constant +// :6:15: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig b/test/cases/compile_errors/assign_to_constant_variable.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig rename to test/cases/compile_errors/assign_to_constant_variable.zig index 531f669c1a..af6f33ec66 100644 --- a/test/cases/compile_errors/stage1/obj/assign_to_constant_variable.zig +++ b/test/cases/compile_errors/assign_to_constant_variable.zig @@ -4,7 +4,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:9: error: cannot assign to constant +// :3:9: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig b/test/cases/compile_errors/assign_too_big_number_to_u16.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig rename to test/cases/compile_errors/assign_too_big_number_to_u16.zig index 3138ed5faf..1f8b097ae2 100644 --- a/test/cases/compile_errors/stage1/obj/assign_too_big_number_to_u16.zig +++ b/test/cases/compile_errors/assign_too_big_number_to_u16.zig @@ -4,7 +4,7 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:24: error: integer value 753664 cannot be coerced to type 'u16' +// :2:24: error: type 'u16' cannot represent integer value '753664' diff --git a/test/cases/compile_errors/assign_unreachable.zig b/test/cases/compile_errors/assign_unreachable.zig new file mode 100644 index 0000000000..f3d218e465 --- /dev/null +++ b/test/cases/compile_errors/assign_unreachable.zig @@ -0,0 +1,11 @@ +export fn f() void { + const a = return; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: unreachable code +// :2:15: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig b/test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig rename to test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig index dfc7ff5036..be910701c4 100644 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig +++ b/test/cases/compile_errors/atomic_orderings_of_atomicStore_Acquire_or_AcqRel.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:30: error: @atomicStore atomic ordering must not be Acquire or AcqRel +// :3:31: error: @atomicStore atomic ordering must not be Acquire or AcqRel diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig similarity index 69% rename from test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig rename to test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig index 929950e754..3e797a031c 100644 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig +++ b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-failure_stricter_than_success.zig @@ -5,7 +5,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:81: error: failure atomic ordering must be no stricter than success +// :4:81: error: failure atomic ordering must be no stricter than success diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig similarity index 70% rename from test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig rename to test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig index fe3344e536..0ab227f039 100644 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig +++ b/test/cases/compile_errors/atomic_orderings_of_cmpxchg-success_Monotonic_or_stricter.zig @@ -5,7 +5,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:58: error: success atomic ordering must be Monotonic or stricter +// :4:58: error: success atomic ordering must be Monotonic or stricter diff --git a/test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig b/test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig new file mode 100644 index 0000000000..3982cc6bc2 --- /dev/null +++ b/test/cases/compile_errors/atomic_orderings_of_fence_Acquire_or_stricter.zig @@ -0,0 +1,9 @@ +export fn entry() void { + @fence(.Monotonic); +} + +// error +// backend=stage2 +// target=native +// +// :2:13: error: atomic ordering must be Acquire or stricter diff --git a/test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig b/test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig similarity index 59% rename from test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig rename to test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig index 0b5b0cd3c1..4582be60a6 100644 --- a/test/cases/compile_errors/stage1/obj/atomicrmw_with_bool_op_not_.Xchg.zig +++ b/test/cases/compile_errors/atomicrmw_with_bool_op_not_.Xchg.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:30: error: @atomicRmw with bool only allowed with .Xchg +// :3:31: error: @atomicRmw with bool only allowed with .Xchg diff --git a/test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig b/test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig similarity index 69% rename from test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig rename to test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig index adbf4ca45e..197eee9f7c 100644 --- a/test/cases/compile_errors/stage1/obj/atomicrmw_with_enum_op_not_.Xchg.zig +++ b/test/cases/compile_errors/atomicrmw_with_enum_op_not_.Xchg.zig @@ -10,7 +10,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:9:27: error: @atomicRmw with enum only allowed with .Xchg +// :9:28: error: @atomicRmw with enum only allowed with .Xchg diff --git a/test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig b/test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig rename to test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig index 4f3ebfcef6..80720fbca1 100644 --- a/test/cases/compile_errors/stage1/obj/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig +++ b/test/cases/compile_errors/atomicrmw_with_float_op_not_.Xchg_.Add_or_.Sub.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:29: error: @atomicRmw with float only allowed with .Xchg, .Add and .Sub +// :3:30: error: @atomicRmw with float only allowed with .Xchg, .Add, and .Sub diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig b/test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig rename to test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig index f1c30815fc..cc740d9038 100644 --- a/test/cases/compile_errors/stage1/obj/attempt_to_cast_enum_literal_to_error.zig +++ b/test/cases/compile_errors/attempt_to_cast_enum_literal_to_error.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:9: error: expected type 'error{Hi}', found '@Type(.EnumLiteral)' +// :3:10: error: expected type 'error{Hi}', found '@TypeOf(.enum_literal)' diff --git a/test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig b/test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig new file mode 100644 index 0000000000..d27f2854dc --- /dev/null +++ b/test/cases/compile_errors/attempt_to_close_over_comptime_variable_from_outer_scope.zig @@ -0,0 +1,14 @@ +fn SimpleList(comptime L: usize) type { + var T = u8; + return struct { + array: [L]T, + }; +} + +// error +// backend=stage2 +// target=native +// +// :4:19: error: mutable 'T' not accessible from here +// :2:9: note: declared mutable here +// :3:12: note: crosses namespace boundary here diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig b/test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig similarity index 65% rename from test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig rename to test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig index ba7393fcb7..6748fa1edc 100644 --- a/test/cases/compile_errors/stage1/obj/attempt_to_create_17_bit_float_type.zig +++ b/test/cases/compile_errors/attempt_to_create_17_bit_float_type.zig @@ -4,7 +4,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:16: error: 17-bit float unsupported +// :3:9: error: 17-bit float unsupported diff --git a/test/cases/compile_errors/attempted_double_ampersand.zig b/test/cases/compile_errors/attempted_double_ampersand.zig new file mode 100644 index 0000000000..3fd7779ddc --- /dev/null +++ b/test/cases/compile_errors/attempted_double_ampersand.zig @@ -0,0 +1,12 @@ +export fn entry(a: bool, b: bool) i32 { + if (a && b) { + return 1234; + } + return 5678; +} + +// error +// backend=stage2 +// target=native +// +// :2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND diff --git a/test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig b/test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig new file mode 100644 index 0000000000..59b5bde8af --- /dev/null +++ b/test/cases/compile_errors/attempted_double_pipe_on_boolean_values.zig @@ -0,0 +1,13 @@ +export fn entry(a: bool, b: bool) i32 { + if (a || b) { + return 1234; + } + return 5678; +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: expected error set type, found 'bool' +// :2:11: note: '||' merges error sets; 'or' performs boolean OR diff --git a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig b/test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig rename to test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig index c3b0847129..1d4afd55ac 100644 --- a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_T_to_slice_const_T.zig +++ b/test/cases/compile_errors/attempted_implicit_cast_from_T_to_slice_const_T.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:30: error: expected type '[*]const bool', found 'bool' +// :2:30: error: expected type '[*]const bool', found 'bool' diff --git a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig b/test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig rename to test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig index 3ff9937983..0634b4696f 100644 --- a/test/cases/compile_errors/stage1/obj/attempted_implicit_cast_from_const_T_to_sliceT.zig +++ b/test/cases/compile_errors/attempted_implicit_cast_from_const_T_to_sliceT.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:23: error: expected type '[]u32', found '*const u32' +// :3:22: error: expected type '[]u32', found '*const u32' diff --git a/test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig b/test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig rename to test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig index 7e44ad5057..0c056cb39b 100644 --- a/test/cases/compile_errors/stage1/obj/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig +++ b/test/cases/compile_errors/bad_identifier_in_function_with_struct_defined_inside_function_which_references_local_const.zig @@ -11,7 +11,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:8:5: error: use of undeclared identifier 'bogus' +// :8:5: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/bad_import.zig b/test/cases/compile_errors/bad_import.zig new file mode 100644 index 0000000000..49e78a4be4 --- /dev/null +++ b/test/cases/compile_errors/bad_import.zig @@ -0,0 +1,7 @@ +const bogus = @import("bogus-does-not-exist.zig",); + +// error +// backend=stage2 +// target=native +// +// :1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound diff --git a/test/cases/compile_errors/bad_splat_type.zig b/test/cases/compile_errors/bad_splat_type.zig new file mode 100644 index 0000000000..f32fcb4fb7 --- /dev/null +++ b/test/cases/compile_errors/bad_splat_type.zig @@ -0,0 +1,11 @@ +export fn entry() void { + const c = 4; + var v = @splat(4, c); + _ = v; +} + +// error +// backend=stage2 +// target=native +// +// :3:23: error: expected integer, float, bool, or pointer for the vector element type; found 'comptime_int' diff --git a/test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig b/test/cases/compile_errors/binary_OR_operator_on_error_sets.zig similarity index 54% rename from test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig rename to test/cases/compile_errors/binary_OR_operator_on_error_sets.zig index eb2d21c6ed..9955194f95 100644 --- a/test/cases/compile_errors/stage1/test/binary_OR_operator_on_error_sets.zig +++ b/test/cases/compile_errors/binary_OR_operator_on_error_sets.zig @@ -6,8 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:2:18: error: invalid operands to binary expression: 'error{A}' and 'error{B}' +// :2:18: error: invalid operands to binary bitwise expression: 'ErrorSet' and 'ErrorSet' diff --git a/test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig b/test/cases/compile_errors/binary_not_on_number_literal.zig similarity index 72% rename from test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig rename to test/cases/compile_errors/binary_not_on_number_literal.zig index 34ddf9adfa..cb57ca9ee1 100644 --- a/test/cases/compile_errors/stage1/obj/binary_not_on_number_literal.zig +++ b/test/cases/compile_errors/binary_not_on_number_literal.zig @@ -5,7 +5,7 @@ var block_aligned_stuff: usize = (4 + TINY_QUANTUM_SIZE) & ~(TINY_QUANTUM_SIZE - export fn entry() usize { return @sizeOf(@TypeOf(block_aligned_stuff)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:60: error: unable to perform binary not operation on type 'comptime_int' +// :3:60: error: unable to perform binary not operation on type 'comptime_int' diff --git a/test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig b/test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig new file mode 100644 index 0000000000..f67a5d139f --- /dev/null +++ b/test/cases/compile_errors/bitCast_same_size_but_bit_count_mismatch.zig @@ -0,0 +1,10 @@ +export fn entry(byte: u8) void { + var oops = @bitCast(u7, byte); + _ = oops; +} + +// error +// backend=stage2 +// target=native +// +// :2:29: error: @bitCast size mismatch: destination type 'u7' has 7 bits but source type 'u8' has 8 bits diff --git a/test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig b/test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig new file mode 100644 index 0000000000..8951eee5c0 --- /dev/null +++ b/test/cases/compile_errors/bitCast_with_different_sizes_inside_an_expression.zig @@ -0,0 +1,10 @@ +export fn entry() void { + var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf); + _ = foo; +} + +// error +// backend=stage2 +// target=native +// +// :2:29: error: @bitCast size mismatch: destination type 'u8' has 8 bits but source type 'f32' has 32 bits diff --git a/test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig b/test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig new file mode 100644 index 0000000000..b6362e83c8 --- /dev/null +++ b/test/cases/compile_errors/bit_shifting_only_works_on_integer_types.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x = &@as(u8, 1) << 10; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: bit shifting operation expected integer type, found '*const u8' diff --git a/test/cases/compile_errors/bogus_method_call_on_slice.zig b/test/cases/compile_errors/bogus_method_call_on_slice.zig new file mode 100644 index 0000000000..5471871a23 --- /dev/null +++ b/test/cases/compile_errors/bogus_method_call_on_slice.zig @@ -0,0 +1,11 @@ +var self = "aoeu"; +fn f(m: []const u8) void { + m.copy(u8, self[0..], m); +} +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } + +// error +// backend=stage2 +// target=native +// +// :3:6: error: type '[]const u8' has no field or member function named 'copy' diff --git a/test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig b/test/cases/compile_errors/branch_on_undefined_value.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig rename to test/cases/compile_errors/branch_on_undefined_value.zig index f4b922a332..a0a3be83cf 100644 --- a/test/cases/compile_errors/stage1/obj/branch_on_undefined_value.zig +++ b/test/cases/compile_errors/branch_on_undefined_value.zig @@ -3,7 +3,7 @@ const x = if (undefined) true else false; export fn entry() usize { return @sizeOf(@TypeOf(x)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:15: error: use of undefined value here causes undefined behavior +// :1:15: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig b/test/cases/compile_errors/call_assigned_to_constant.zig similarity index 72% rename from test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig rename to test/cases/compile_errors/call_assigned_to_constant.zig index ca4e8b67cd..7533acbf05 100644 --- a/test/cases/compile_errors/stage1/obj/call_assigned_to_constant.zig +++ b/test/cases/compile_errors/call_assigned_to_constant.zig @@ -17,8 +17,8 @@ export fn entry1() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:12:14: error: cannot assign to constant -// tmp.zig:16:14: error: cannot assign to constant +// :12:14: error: cannot assign to constant +// :16:14: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig b/test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig similarity index 59% rename from test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig rename to test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig index a71ab051f2..fe8037d287 100644 --- a/test/cases/compile_errors/stage1/obj/calling_var_args_extern_function_passing_array_instead_of_pointer.zig +++ b/test/cases/compile_errors/calling_var_args_extern_function_passing_array_instead_of_pointer.zig @@ -4,7 +4,7 @@ export fn entry() void { pub extern fn foo(format: *const u8, ...) void; // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:16: error: expected type '*const u8', found '[5:0]u8' +// :2:8: error: expected type '*const u8', found '[5:0]u8' diff --git a/test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig b/test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig similarity index 51% rename from test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig rename to test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig index ba53646efc..136bf612bf 100644 --- a/test/cases/compile_errors/stage1/obj/cast_enum_literal_to_enum_but_it_doesnt_match.zig +++ b/test/cases/compile_errors/cast_enum_literal_to_enum_but_it_doesnt_match.zig @@ -8,8 +8,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:20: error: enum 'Foo' has no field named 'c' -// tmp.zig:1:13: note: 'Foo' declared here +// :6:21: error: enum 'tmp.Foo' has no field named 'c' +// :1:13: note: enum declared here diff --git a/test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig b/test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig new file mode 100644 index 0000000000..29a5e522b9 --- /dev/null +++ b/test/cases/compile_errors/cast_negative_integer_literal_to_usize.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const x = @as(usize, -10); + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:26: error: type 'usize' cannot represent integer value '-10' diff --git a/test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig b/test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig rename to test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig index d2e3187140..2227005190 100644 --- a/test/cases/compile_errors/stage1/obj/cast_negative_value_to_unsigned_integer.zig +++ b/test/cases/compile_errors/cast_negative_value_to_unsigned_integer.zig @@ -10,8 +10,8 @@ export fn entry1() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:22: error: attempt to cast negative value to unsigned integer -// tmp.zig:8:27: error: cannot cast negative value -1 to unsigned integer type 'u32' +// :3:36: error: type 'u32' cannot represent integer value '-1' +// :8:27: error: type 'u32' cannot represent integer value '-1' diff --git a/test/cases/compile_errors/cast_unreachable.zig b/test/cases/compile_errors/cast_unreachable.zig new file mode 100644 index 0000000000..cf2331ff7e --- /dev/null +++ b/test/cases/compile_errors/cast_unreachable.zig @@ -0,0 +1,13 @@ +fn f() i32 { + return @as(i32, return 1); +} +export fn entry() void { _ = f(); } + +// error +// backend=stage2 +// target=native +// +// :2:12: error: unreachable code +// :2:21: note: control flow is diverted here +// :2:5: error: unreachable code +// :2:12: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig b/test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig rename to test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig index f109cdf295..083d68ee40 100644 --- a/test/cases/compile_errors/stage1/obj/casting_bit_offset_pointer_to_regular_pointer.zig +++ b/test/cases/compile_errors/casting_bit_offset_pointer_to_regular_pointer.zig @@ -12,10 +12,10 @@ fn bar(x: *const u3) u3 { return x.*; } -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:8:26: error: expected type '*const u3', found '*align(:3:1) const u3' +// :8:15: error: expected type '*const u3', found '*align(0:3:1) const u3' diff --git a/test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig b/test/cases/compile_errors/chained_comparison_operators.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig rename to test/cases/compile_errors/chained_comparison_operators.zig index 1e4ed8d82e..32c6ee64b2 100644 --- a/test/cases/compile_errors/stage1/obj/chained_comparison_operators.zig +++ b/test/cases/compile_errors/chained_comparison_operators.zig @@ -3,7 +3,7 @@ export fn a(value: u32) bool { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:22: error: comparison operators cannot be chained +// :2:22: error: comparison operators cannot be chained diff --git a/test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig b/test/cases/compile_errors/cmpxchg_with_float.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig rename to test/cases/compile_errors/cmpxchg_with_float.zig index 11f2dc21c3..1acfdd14d8 100644 --- a/test/cases/compile_errors/stage1/obj/cmpxchg_with_float.zig +++ b/test/cases/compile_errors/cmpxchg_with_float.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:22: error: expected bool, integer, enum or pointer type, found 'f32' +// :3:22: error: expected bool, integer, enum, or pointer type; found 'f32' diff --git a/test/cases/compile_errors/colliding_invalid_top_level_functions.zig b/test/cases/compile_errors/colliding_invalid_top_level_functions.zig new file mode 100644 index 0000000000..ee0711088d --- /dev/null +++ b/test/cases/compile_errors/colliding_invalid_top_level_functions.zig @@ -0,0 +1,12 @@ +fn func() bogus {} +fn func() bogus {} +export fn entry() usize { return @sizeOf(@TypeOf(func)); } + +// error +// backend=stage2 +// target=native +// +// :2:1: error: redeclaration of 'func' +// :1:1: note: other declaration here +// :1:11: error: use of undeclared identifier 'bogus' +// :2:11: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig b/test/cases/compile_errors/combination_of_nosuspend_and_async.zig similarity index 56% rename from test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig rename to test/cases/compile_errors/combination_of_nosuspend_and_async.zig index 43731c9648..dd853432b6 100644 --- a/test/cases/compile_errors/stage1/test/combination_of_nosuspend_and_async.zig +++ b/test/cases/compile_errors/combination_of_nosuspend_and_async.zig @@ -8,9 +8,8 @@ export fn entry() void { fn foo() void {} // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:4:9: error: suspend inside nosuspend block -// tmp.zig:2:5: note: nosuspend block here +// :4:9: error: suspend inside nosuspend block +// :2:5: note: nosuspend block here diff --git a/test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig b/test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig rename to test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig index 62b5708034..4d8c5f53e9 100644 --- a/test/cases/compile_errors/stage1/obj/comparing_a_non-optional_pointer_against_null.zig +++ b/test/cases/compile_errors/comparing_a_non-optional_pointer_against_null.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:12: error: comparison of '*i32' with null +// :3:12: error: comparison of '*i32' with null diff --git a/test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig b/test/cases/compile_errors/comparison_operators_with_undefined_value.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig rename to test/cases/compile_errors/comparison_operators_with_undefined_value.zig index 818a575fc8..b7b40d3178 100644 --- a/test/cases/compile_errors/stage1/obj/comparison_operators_with_undefined_value.zig +++ b/test/cases/compile_errors/comparison_operators_with_undefined_value.zig @@ -36,12 +36,12 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:11: error: use of undefined value here causes undefined behavior -// tmp.zig:11:11: error: use of undefined value here causes undefined behavior -// tmp.zig:17:11: error: use of undefined value here causes undefined behavior -// tmp.zig:23:11: error: use of undefined value here causes undefined behavior -// tmp.zig:29:11: error: use of undefined value here causes undefined behavior -// tmp.zig:35:11: error: use of undefined value here causes undefined behavior +// :5:11: error: use of undefined value here causes undefined behavior +// :11:11: error: use of undefined value here causes undefined behavior +// :17:11: error: use of undefined value here causes undefined behavior +// :23:11: error: use of undefined value here causes undefined behavior +// :29:11: error: use of undefined value here causes undefined behavior +// :35:11: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig b/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig similarity index 65% rename from test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig rename to test/cases/compile_errors/comparison_with_error_union_and_error_value.zig index 16f3b21c3d..3a9eabcb95 100644 --- a/test/cases/compile_errors/stage1/obj/comparison_with_error_union_and_error_value.zig +++ b/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:25: error: operator not allowed for type 'anyerror!i32' +// :3:25: error: operator == not allowed for type 'anyerror!i32' diff --git a/test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig b/test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig similarity index 75% rename from test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig rename to test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig index c58e9b7768..092cbbd400 100644 --- a/test/cases/compile_errors/stage1/obj/compileError_shows_traceback_of_references_that_caused_it.zig +++ b/test/cases/compile_errors/compileError_shows_traceback_of_references_that_caused_it.zig @@ -8,7 +8,7 @@ export fn entry() i32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:13: error: aoeu +// :1:13: error: aoeu diff --git a/test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig b/test/cases/compile_errors/compile_error_in_struct_init_expression.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig rename to test/cases/compile_errors/compile_error_in_struct_init_expression.zig index 041d09b002..64a97a7a5b 100644 --- a/test/cases/compile_errors/stage1/obj/compile_error_in_struct_init_expression.zig +++ b/test/cases/compile_errors/compile_error_in_struct_init_expression.zig @@ -10,7 +10,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:14: error: use of undeclared identifier 'crap' +// :2:14: error: use of undeclared identifier 'crap' diff --git a/test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig b/test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig similarity index 65% rename from test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig rename to test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig index 7b1d11b0a4..fcb696ed64 100644 --- a/test/cases/compile_errors/stage1/obj/compile_error_when_evaluating_return_type_of_inferred_error_set.zig +++ b/test/cases/compile_errors/compile_error_when_evaluating_return_type_of_inferred_error_set.zig @@ -8,7 +8,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist' +// :2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist' diff --git a/test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig b/test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig rename to test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig index d585712b8a..252b6e5f14 100644 --- a/test/cases/compile_errors/stage1/obj/compile_log_a_pointer_to_an_opaque_value.zig +++ b/test/cases/compile_errors/compile_log_a_pointer_to_an_opaque_value.zig @@ -3,7 +3,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: found compile log statement +// :2:5: error: found compile log statement diff --git a/test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig b/test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig similarity index 69% rename from test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig rename to test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig index 991021932d..4eb0036d1d 100644 --- a/test/cases/compile_errors/stage1/obj/compile_log_statement_warning_deduplication_in_generic_fn.zig +++ b/test/cases/compile_errors/compile_log_statement_warning_deduplication_in_generic_fn.zig @@ -8,7 +8,8 @@ fn inner(comptime n: usize) void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:7:39: error: found compile log statement +// :7:39: error: found compile log statement +// :7:39: note: also here diff --git a/test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig b/test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig new file mode 100644 index 0000000000..d38738dae7 --- /dev/null +++ b/test/cases/compile_errors/comptime_cast_enum_to_union_but_field_has_payload.zig @@ -0,0 +1,18 @@ +const Letter = enum { A, B, C }; +const Value = union(Letter) { + A: i32, + B, + C, +}; +export fn entry() void { + var x: Value = Letter.A; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :8:26: error: coercion from enum 'tmp.Letter' to union 'tmp.Value' must initialize 'i32' field 'A' +// :3:5: note: field 'A' declared here +// :2:15: note: union declared here diff --git a/test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig b/test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig rename to test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig index ec7fbdc6e2..9640afe406 100644 --- a/test/cases/compile_errors/stage1/obj/comptime_slice_of_undefined_pointer_non-zero_len.zig +++ b/test/cases/compile_errors/comptime_slice_of_undefined_pointer_non-zero_len.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:41: error: non-zero length slice of undefined pointer +// :2:41: error: non-zero length slice of undefined pointer diff --git a/test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig b/test/cases/compile_errors/comptime_struct_field_no_init_value.zig similarity index 60% rename from test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig rename to test/cases/compile_errors/comptime_struct_field_no_init_value.zig index b889911a4d..c0cb470eee 100644 --- a/test/cases/compile_errors/stage1/obj/comptime_struct_field_no_init_value.zig +++ b/test/cases/compile_errors/comptime_struct_field_no_init_value.zig @@ -7,7 +7,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: comptime field without default initialization value +// :2:5: error: comptime field without default initialization value diff --git a/test/cases/compile_errors/const_is_a_statement_not_an_expression.zig b/test/cases/compile_errors/const_is_a_statement_not_an_expression.zig new file mode 100644 index 0000000000..576b028372 --- /dev/null +++ b/test/cases/compile_errors/const_is_a_statement_not_an_expression.zig @@ -0,0 +1,9 @@ +export fn f() void { + (const a = 0); +} + +// error +// backend=stage2 +// target=native +// +// :2:6: error: expected expression, found 'const' diff --git a/test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig b/test/cases/compile_errors/container_init_with_non-type.zig similarity index 62% rename from test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig rename to test/cases/compile_errors/container_init_with_non-type.zig index 3364b2f5b6..ea23020611 100644 --- a/test/cases/compile_errors/stage1/obj/container_init_with_non-type.zig +++ b/test/cases/compile_errors/container_init_with_non-type.zig @@ -4,7 +4,7 @@ const a = zero{1}; export fn entry() usize { return @sizeOf(@TypeOf(a)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:11: error: expected type 'type', found 'i32' +// :2:15: error: expected type 'type', found 'i32' diff --git a/test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig b/test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig new file mode 100644 index 0000000000..43ef20873c --- /dev/null +++ b/test/cases/compile_errors/control_flow_uses_comptime_var_at_runtime.zig @@ -0,0 +1,15 @@ +export fn foo() void { + comptime var i = 0; + while (i < 5) : (i += 1) { + bar(); + } +} + +fn bar() void { } + +// error +// backend=stage2 +// target=native +// +// :3:24: error: cannot store to comptime variable in non-inline loop +// :3:5: note: non-inline loop here diff --git a/test/cases/compile_errors/stage1/obj/declaration_between_fields.zig b/test/cases/compile_errors/declaration_between_fields.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/declaration_between_fields.zig rename to test/cases/compile_errors/declaration_between_fields.zig index 25a1ff5abc..4c296f9080 100644 --- a/test/cases/compile_errors/stage1/obj/declaration_between_fields.zig +++ b/test/cases/compile_errors/declaration_between_fields.zig @@ -16,9 +16,9 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:9:5: error: declarations are not allowed between container fields -// tmp.zig:5:5: note: field before declarations here -// tmp.zig:12:5: note: field after declarations here +// :9:5: error: declarations are not allowed between container fields +// :5:5: note: field before declarations here +// :12:5: note: field after declarations here diff --git a/test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig b/test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig new file mode 100644 index 0000000000..559e8e743a --- /dev/null +++ b/test/cases/compile_errors/declaration_with_same_name_as_primitive_must_use_special_syntax.zig @@ -0,0 +1,12 @@ +const u8 = u16; +export fn entry() void { + const a: u8 = 300; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :1:7: error: name shadows primitive 'u8' +// :1:7: note: consider using @"u8" to disambiguate diff --git a/test/cases/compile_errors/deduplicate_undeclared_identifier.zig b/test/cases/compile_errors/deduplicate_undeclared_identifier.zig new file mode 100644 index 0000000000..34501e3c51 --- /dev/null +++ b/test/cases/compile_errors/deduplicate_undeclared_identifier.zig @@ -0,0 +1,13 @@ +export fn a() void { + x += 1; +} +export fn b() void { + x += 1; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: use of undeclared identifier 'x' +// :5:5: error: use of undeclared identifier 'x' diff --git a/test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig b/test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig similarity index 71% rename from test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig rename to test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig index f61dec2ee0..2ba566f221 100644 --- a/test/cases/compile_errors/stage1/obj/dont_implicit_cast_double_pointer_to_anyopaque.zig +++ b/test/cases/compile_errors/dont_implicit_cast_double_pointer_to_anyopaque.zig @@ -7,7 +7,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:29: error: expected type '*anyopaque', found '**u32' +// :5:28: error: expected type '*anyopaque', found '**u32' diff --git a/test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig b/test/cases/compile_errors/duplicate_boolean_switch_value.zig similarity index 72% rename from test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig rename to test/cases/compile_errors/duplicate_boolean_switch_value.zig index 5b85c0a2eb..81ccebf37b 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_boolean_switch_value.zig +++ b/test/cases/compile_errors/duplicate_boolean_switch_value.zig @@ -16,8 +16,8 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:9: error: duplicate switch value -// tmp.zig:13:9: error: duplicate switch value +// :5:9: error: duplicate switch value +// :13:9: error: duplicate switch value diff --git a/test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig b/test/cases/compile_errors/duplicate_error_value_in_error_set.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig rename to test/cases/compile_errors/duplicate_error_value_in_error_set.zig index 30d3bee8ab..5e9cddb975 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_error_value_in_error_set.zig +++ b/test/cases/compile_errors/duplicate_error_value_in_error_set.zig @@ -8,8 +8,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:5: error: duplicate error set field 'Bar' -// tmp.zig:2:5: note: previous declaration here +// :3:5: error: duplicate error set field 'Bar' +// :2:5: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig b/test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig similarity index 71% rename from test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig rename to test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig index 1c0bac75e2..fa5bc6fb4e 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_field_in_struct_value_expression.zig +++ b/test/cases/compile_errors/duplicate_field_in_struct_value_expression.zig @@ -14,7 +14,8 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:11:9: error: duplicate field +// :11:10: error: duplicate field +// :8:10: note: other field here diff --git a/test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig b/test/cases/compile_errors/duplicate_struct_field.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig rename to test/cases/compile_errors/duplicate_struct_field.zig index 93afdef70e..bb37178a85 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_struct_field.zig +++ b/test/cases/compile_errors/duplicate_struct_field.zig @@ -8,8 +8,9 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:5: error: duplicate struct field: 'Bar' -// tmp.zig:2:5: note: other field here +// :3:5: error: duplicate struct field: 'Bar' +// :2:5: note: other field here +// :1:13: note: struct declared here diff --git a/test/cases/compile_errors/stage1/obj/duplicate_union_field.zig b/test/cases/compile_errors/duplicate_union_field.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/duplicate_union_field.zig rename to test/cases/compile_errors/duplicate_union_field.zig index 5cbdcb7820..6a0265dd02 100644 --- a/test/cases/compile_errors/stage1/obj/duplicate_union_field.zig +++ b/test/cases/compile_errors/duplicate_union_field.zig @@ -8,8 +8,9 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:5: error: duplicate union field: 'Bar' -// tmp.zig:2:5: note: other field here +// :3:5: error: duplicate union field: 'Bar' +// :2:5: note: other field here +// :1:13: note: union declared here diff --git a/test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig b/test/cases/compile_errors/embedFile_with_bogus_file.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig rename to test/cases/compile_errors/embedFile_with_bogus_file.zig index a03949b40a..fa05d1ed49 100644 --- a/test/cases/compile_errors/stage1/obj/embedFile_with_bogus_file.zig +++ b/test/cases/compile_errors/embedFile_with_bogus_file.zig @@ -3,7 +3,7 @@ const resource = @embedFile("bogus.txt",); export fn entry() usize { return @sizeOf(@TypeOf(resource)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:29: error: unable to find ' +// :1:29: error: unable to open 'bogus.txt': FileNotFound diff --git a/test/cases/compile_errors/empty_for_loop_body.zig b/test/cases/compile_errors/empty_for_loop_body.zig new file mode 100644 index 0000000000..5d08573e32 --- /dev/null +++ b/test/cases/compile_errors/empty_for_loop_body.zig @@ -0,0 +1,9 @@ +export fn a() void { + for(undefined) |x|; +} + +// error +// backend=stage2 +// target=native +// +// :2:23: error: expected block or assignment, found ';' diff --git a/test/cases/compile_errors/empty_if_body.zig b/test/cases/compile_errors/empty_if_body.zig new file mode 100644 index 0000000000..341b83c2b3 --- /dev/null +++ b/test/cases/compile_errors/empty_if_body.zig @@ -0,0 +1,9 @@ +export fn a() void { + if(true); +} + +// error +// backend=stage2 +// target=native +// +// :2:13: error: expected block or assignment, found ';' diff --git a/test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig b/test/cases/compile_errors/empty_switch_on_an_integer.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig rename to test/cases/compile_errors/empty_switch_on_an_integer.zig index a7b8e2a81b..de4d7e9c65 100644 --- a/test/cases/compile_errors/stage1/obj/empty_switch_on_an_integer.zig +++ b/test/cases/compile_errors/empty_switch_on_an_integer.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:5: error: switch must handle all possibilities +// :3:5: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/empty_while_loop_body.zig b/test/cases/compile_errors/empty_while_loop_body.zig new file mode 100644 index 0000000000..70320c204e --- /dev/null +++ b/test/cases/compile_errors/empty_while_loop_body.zig @@ -0,0 +1,9 @@ +export fn a() void { + while(true); +} + +// error +// backend=stage2 +// target=native +// +// :2:16: error: expected block or assignment, found ';' diff --git a/test/cases/compile_errors/stage1/obj/endless_loop_in_function_evaluation.zig b/test/cases/compile_errors/endless_loop_in_function_evaluation.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/endless_loop_in_function_evaluation.zig rename to test/cases/compile_errors/endless_loop_in_function_evaluation.zig index 302ee242e0..fb2af44b23 100644 --- a/test/cases/compile_errors/stage1/obj/endless_loop_in_function_evaluation.zig +++ b/test/cases/compile_errors/endless_loop_in_function_evaluation.zig @@ -6,7 +6,9 @@ fn fibonacci(x: i32) i32 { export fn entry() usize { return @sizeOf(@TypeOf(seventh_fib_number)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:21: error: evaluation exceeded 1000 backwards branches +// :3:21: error: evaluation exceeded 1000 backwards branches +// :3:21: note: called from here (999 times) +// :1:37: note: called from here diff --git a/test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig b/test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig rename to test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig index e783cbee52..e79f6d478f 100644 --- a/test/cases/compile_errors/stage1/obj/enum_in_field_count_range_but_not_matching_tag.zig +++ b/test/cases/compile_errors/enum_in_field_count_range_but_not_matching_tag.zig @@ -8,8 +8,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:13: error: enum 'Foo' has no tag matching integer value 0 -// tmp.zig:1:13: note: 'Foo' declared here +// :6:13: error: enum 'tmp.Foo' has no tag with value '0' +// :1:13: note: enum declared here diff --git a/test/cases/compile_errors/enum_with_0_fields.zig b/test/cases/compile_errors/enum_with_0_fields.zig new file mode 100644 index 0000000000..f34065b69d --- /dev/null +++ b/test/cases/compile_errors/enum_with_0_fields.zig @@ -0,0 +1,7 @@ +const Foo = enum {}; + +// error +// backend=stage2 +// target=native +// +// :1:13: error: enum declarations must have at least one tag diff --git a/test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig b/test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig rename to test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig index ffe9a2a78a..f23718c2ca 100644 --- a/test/cases/compile_errors/stage1/obj/enum_with_declarations_unavailable_for_reify_type.zig +++ b/test/cases/compile_errors/enum_with_declarations_unavailable_for_reify_type.zig @@ -3,7 +3,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: Type.Enum.decls must be empty for @Type +// :2:9: error: reified enums must have no decls diff --git a/test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig b/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig similarity index 56% rename from test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig rename to test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig index 2858fd6a01..0c6c1cfb35 100644 --- a/test/cases/compile_errors/stage1/test/error_in_struct_initializer_doesnt_crash_the_compiler.zig +++ b/test/cases/compile_errors/error_in_struct_initializer_doesnt_crash_the_compiler.zig @@ -8,8 +8,9 @@ pub export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:4:9: error: duplicate struct field: 'e' +// :4:9: error: duplicate struct field: 'e' +// :3:9: note: other field here +// :2:22: note: struct declared here diff --git a/test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig b/test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig rename to test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig index 785e42fb9b..cafca1ee55 100644 --- a/test/cases/compile_errors/stage1/obj/error_union_operator_with_non_error_set_LHS.zig +++ b/test/cases/compile_errors/error_union_operator_with_non_error_set_LHS.zig @@ -5,7 +5,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected error set type, found type 'i32' +// :2:15: error: expected error set type, found 'i32' diff --git a/test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig b/test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig similarity index 61% rename from test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig rename to test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig index d8be29e39b..bc30b5cbe6 100644 --- a/test/cases/compile_errors/stage1/test/errors_in_for_loop_bodies_are_propagated.zig +++ b/test/cases/compile_errors/errors_in_for_loop_bodies_are_propagated.zig @@ -4,8 +4,7 @@ pub export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:26: error: expected 2 arguments, found 1 +// :3:26: error: expected 2 arguments, found 1 diff --git a/test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig b/test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig new file mode 100644 index 0000000000..b7d5c95c25 --- /dev/null +++ b/test/cases/compile_errors/exceeded_maximum_bit_width_of_integer.zig @@ -0,0 +1,15 @@ +export fn entry1() void { + const T = u65536; + _ = T; +} +export fn entry2() void { + var x: i65536 = 1; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535 +// :6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535 diff --git a/test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig b/test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig new file mode 100644 index 0000000000..1aee4580ae --- /dev/null +++ b/test/cases/compile_errors/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig @@ -0,0 +1,9 @@ +export fn entry() i32 { + return @as(i32, 12.34); +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: fractional component prevents float value '12.34' from coercion to type 'i32' diff --git a/test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig b/test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig rename to test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig index 4a41920107..22fc965769 100644 --- a/test/cases/compile_errors/stage1/obj/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig +++ b/test/cases/compile_errors/explicit_error_set_cast_known_at_comptime_violates_error_sets.zig @@ -7,7 +7,8 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:13: error: error.B not a member of error set 'Set2' +// :5:13: error: 'error.B' not a member of error set 'error{A,C}' +// :2:14: note: error set declared here diff --git a/test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig b/test/cases/compile_errors/export_with_empty_name_string.zig similarity index 54% rename from test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig rename to test/cases/compile_errors/export_with_empty_name_string.zig index b882d11723..6403761d3c 100644 --- a/test/cases/compile_errors/stage1/test/export_with_empty_name_string.zig +++ b/test/cases/compile_errors/export_with_empty_name_string.zig @@ -4,8 +4,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:5: error: exported symbol name cannot be empty +// :3:21: error: exported symbol name cannot be empty diff --git a/test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig b/test/cases/compile_errors/extern_union_field_missing_type.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig rename to test/cases/compile_errors/extern_union_field_missing_type.zig index 9d8532f8a1..6890e65714 100644 --- a/test/cases/compile_errors/stage1/obj/extern_union_field_missing_type.zig +++ b/test/cases/compile_errors/extern_union_field_missing_type.zig @@ -7,7 +7,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: union field missing type +// :2:5: error: union field missing type diff --git a/test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig b/test/cases/compile_errors/extern_variable_has_no_type.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig rename to test/cases/compile_errors/extern_variable_has_no_type.zig index 58d67f14e1..7166cfc8eb 100644 --- a/test/cases/compile_errors/stage1/obj/extern_variable_has_no_type.zig +++ b/test/cases/compile_errors/extern_variable_has_no_type.zig @@ -4,7 +4,7 @@ pub export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:8: error: unable to infer variable type +// :1:8: error: unable to infer variable type diff --git a/test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig b/test/cases/compile_errors/fieldParentPtr-bad_field_name.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig rename to test/cases/compile_errors/fieldParentPtr-bad_field_name.zig index 73022167f5..d3e487d3ce 100644 --- a/test/cases/compile_errors/stage1/obj/fieldParentPtr-bad_field_name.zig +++ b/test/cases/compile_errors/fieldParentPtr-bad_field_name.zig @@ -6,7 +6,8 @@ export fn foo(a: *i32) *Foo { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:33: error: struct 'Foo' has no field 'a' +// :5:33: error: no field named 'a' in struct 'tmp.Foo' +// :1:20: note: struct declared here diff --git a/test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig b/test/cases/compile_errors/fieldParentPtr-non_struct.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig rename to test/cases/compile_errors/fieldParentPtr-non_struct.zig index 16b9a9b332..b6e53149c3 100644 --- a/test/cases/compile_errors/stage1/obj/fieldParentPtr-non_struct.zig +++ b/test/cases/compile_errors/fieldParentPtr-non_struct.zig @@ -4,7 +4,7 @@ export fn foo(a: *i32) *Foo { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:28: error: expected struct type, found 'i32' +// :3:28: error: expected struct type, found 'i32' diff --git a/test/cases/compile_errors/field_type_supplied_in_an_enum.zig b/test/cases/compile_errors/field_type_supplied_in_an_enum.zig new file mode 100644 index 0000000000..20248c2355 --- /dev/null +++ b/test/cases/compile_errors/field_type_supplied_in_an_enum.zig @@ -0,0 +1,12 @@ +const Letter = enum { + A: void, + B, + C, +}; + +// error +// backend=stage2 +// target=native +// +// :2:8: error: enum fields do not have types +// :1:16: note: consider 'union(enum)' here to make it a tagged union diff --git a/test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig b/test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig similarity index 66% rename from test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig rename to test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig index 51bc82ffb8..7c164b8a86 100644 --- a/test/cases/compile_errors/stage1/obj/function_call_assigned_to_incorrect_type.zig +++ b/test/cases/compile_errors/function_call_assigned_to_incorrect_type.zig @@ -7,7 +7,7 @@ fn concat() [16]f32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:17: error: expected type '[4]f32', found '[16]f32' +// :3:17: error: expected type '[4]f32', found '[16]f32' diff --git a/test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig b/test/cases/compile_errors/function_prototype_with_no_body.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig rename to test/cases/compile_errors/function_prototype_with_no_body.zig index 7926faaa44..12eeda58ca 100644 --- a/test/cases/compile_errors/stage1/obj/function_prototype_with_no_body.zig +++ b/test/cases/compile_errors/function_prototype_with_no_body.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:1: error: non-extern function has no body +// :1:1: error: non-extern function has no body diff --git a/test/cases/compile_errors/function_with_invalid_return_type.zig b/test/cases/compile_errors/function_with_invalid_return_type.zig new file mode 100644 index 0000000000..afae037ef1 --- /dev/null +++ b/test/cases/compile_errors/function_with_invalid_return_type.zig @@ -0,0 +1,7 @@ +export fn foo() boid {} + +// error +// backend=stage2 +// target=native +// +// :1:17: error: use of undeclared identifier 'boid' diff --git a/test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig b/test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig rename to test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig index 72ed66b20a..a2e303670d 100644 --- a/test/cases/compile_errors/stage1/obj/generic_function_call_assigned_to_incorrect_type.zig +++ b/test/cases/compile_errors/generic_function_call_assigned_to_incorrect_type.zig @@ -7,7 +7,7 @@ fn myAlloc(comptime arg: type) anyerror!arg{ } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:18: error: expected type '[]i32', found 'anyerror!i32 +// :3:18: error: expected type '[]i32', found 'anyerror!i32' diff --git a/test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig b/test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig rename to test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig index d01e828da6..e2694343e8 100644 --- a/test/cases/compile_errors/stage1/obj/global_variable_initializer_must_be_constant_expression.zig +++ b/test/cases/compile_errors/global_variable_initializer_must_be_constant_expression.zig @@ -3,7 +3,7 @@ const x = foo(); export fn entry() i32 { return x; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:11: error: unable to evaluate constant expression +// :2:14: error: comptime call of extern function diff --git a/test/cases/compile_errors/hasDecl_with_non-container.zig b/test/cases/compile_errors/hasDecl_with_non-container.zig new file mode 100644 index 0000000000..a650c19c4b --- /dev/null +++ b/test/cases/compile_errors/hasDecl_with_non-container.zig @@ -0,0 +1,9 @@ +export fn entry() void { + _ = @hasDecl(i32, "hi"); +} + +// error +// backend=stage2 +// target=native +// +// :2:18: error: expected struct, enum, union, or opaque; found 'i32' diff --git a/test/cases/compile_errors/if_condition_is_bool_not_int.zig b/test/cases/compile_errors/if_condition_is_bool_not_int.zig new file mode 100644 index 0000000000..20262f1b65 --- /dev/null +++ b/test/cases/compile_errors/if_condition_is_bool_not_int.zig @@ -0,0 +1,9 @@ +export fn f() void { + if (0) {} +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: expected type 'bool', found 'comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig b/test/cases/compile_errors/ignored_assert-err-ok_return_value.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig rename to test/cases/compile_errors/ignored_assert-err-ok_return_value.zig index 4d45ae1304..04f6b3bd49 100644 --- a/test/cases/compile_errors/stage1/obj/ignored_assert-err-ok_return_value.zig +++ b/test/cases/compile_errors/ignored_assert-err-ok_return_value.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() anyerror!i32 { return 0; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:11: error: expression value is ignored +// :2:11: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig b/test/cases/compile_errors/ignored_comptime_statement_value.zig similarity index 51% rename from test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig rename to test/cases/compile_errors/ignored_comptime_statement_value.zig index 0e82c9ae3e..7a5258fb1d 100644 --- a/test/cases/compile_errors/stage1/obj/ignored_comptime_statement_value.zig +++ b/test/cases/compile_errors/ignored_comptime_statement_value.zig @@ -3,7 +3,7 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expression value is ignored +// :2:15: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig b/test/cases/compile_errors/ignored_comptime_value.zig similarity index 50% rename from test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig rename to test/cases/compile_errors/ignored_comptime_value.zig index 0306ea72ff..6f207653d6 100644 --- a/test/cases/compile_errors/stage1/obj/ignored_comptime_value.zig +++ b/test/cases/compile_errors/ignored_comptime_value.zig @@ -3,7 +3,7 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: expression value is ignored +// :2:5: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig b/test/cases/compile_errors/ignored_deferred_statement_value.zig similarity index 50% rename from test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig rename to test/cases/compile_errors/ignored_deferred_statement_value.zig index 1042c4f40a..6af541236a 100644 --- a/test/cases/compile_errors/stage1/obj/ignored_deferred_statement_value.zig +++ b/test/cases/compile_errors/ignored_deferred_statement_value.zig @@ -3,7 +3,7 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:12: error: expression value is ignored +// :2:12: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/ignored_return_value.zig b/test/cases/compile_errors/ignored_return_value.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/ignored_return_value.zig rename to test/cases/compile_errors/ignored_return_value.zig index b918523b37..ac3756acf5 100644 --- a/test/cases/compile_errors/stage1/obj/ignored_return_value.zig +++ b/test/cases/compile_errors/ignored_return_value.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() i32 { return 0; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:8: error: expression value is ignored +// :2:8: error: expression value is ignored diff --git a/test/cases/compile_errors/ignored_statement_value.zig b/test/cases/compile_errors/ignored_statement_value.zig new file mode 100644 index 0000000000..5c79d1f964 --- /dev/null +++ b/test/cases/compile_errors/ignored_statement_value.zig @@ -0,0 +1,9 @@ +export fn foo() void { + 1; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig b/test/cases/compile_errors/implicit_semicolon-block_expr.zig similarity index 62% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig rename to test/cases/compile_errors/implicit_semicolon-block_expr.zig index a57da8ac0b..7dd82b897b 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_expr.zig +++ b/test/cases/compile_errors/implicit_semicolon-block_expr.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:11: error: expected ';' after statement +// :4:11: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig b/test/cases/compile_errors/implicit_semicolon-block_statement.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig rename to test/cases/compile_errors/implicit_semicolon-block_statement.zig index 2d9d850e75..189ba84d98 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-block_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-block_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:9: error: expected ';' after statement +// :4:9: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig b/test/cases/compile_errors/implicit_semicolon-comptime_expression.zig similarity index 65% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig rename to test/cases/compile_errors/implicit_semicolon-comptime_expression.zig index b4cd4de849..decbc352e8 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-comptime_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:20: error: expected ';' after statement +// :4:20: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig b/test/cases/compile_errors/implicit_semicolon-comptime_statement.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig rename to test/cases/compile_errors/implicit_semicolon-comptime_statement.zig index 3b83ef92eb..d17db15924 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-comptime_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-comptime_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:18: error: expected ';' after statement +// :4:18: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig b/test/cases/compile_errors/implicit_semicolon-defer.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig rename to test/cases/compile_errors/implicit_semicolon-defer.zig index 0ded4fcf26..57fd3a2626 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-defer.zig +++ b/test/cases/compile_errors/implicit_semicolon-defer.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:15: error: expected ';' after statement +// :4:15: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig b/test/cases/compile_errors/implicit_semicolon-for_expression.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig rename to test/cases/compile_errors/implicit_semicolon-for_expression.zig index 964a48d30b..c751384e11 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-for_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:26: error: expected ';' after statement +// :4:26: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig b/test/cases/compile_errors/implicit_semicolon-for_statement.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig rename to test/cases/compile_errors/implicit_semicolon-for_statement.zig index 1320e4cc46..14709cef4c 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-for_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-for_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:24: error: expected ';' or 'else' after statement +// :4:24: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig similarity index 72% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig rename to test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig index 40b1a33d78..72a4fa7d3e 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:45: error: expected ';' after statement +// :4:45: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig similarity index 71% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig rename to test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig index 8444fe654d..95135006ba 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if-else_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if-else_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:47: error: expected ';' after statement +// :4:47: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig similarity index 70% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig rename to test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig index 7466d64691..a29636bd1d 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:37: error: expected ';' after statement +// :4:37: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig b/test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig similarity index 66% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig rename to test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig index 34e116b3f7..c62430a0a2 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else-if_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-if-else-if_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:37: error: expected ';' or 'else' after statement +// :4:37: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig b/test/cases/compile_errors/implicit_semicolon-if-else_expression.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig rename to test/cases/compile_errors/implicit_semicolon-if-else_expression.zig index 3c1e0add62..d5bee6e52b 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-if-else_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:28: error: expected ';' after statement +// :4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig b/test/cases/compile_errors/implicit_semicolon-if-else_statement.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig rename to test/cases/compile_errors/implicit_semicolon-if-else_statement.zig index e9c52fb6bb..94df128626 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if-else_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-if-else_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:28: error: expected ';' after statement +// :4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig b/test/cases/compile_errors/implicit_semicolon-if_expression.zig similarity index 65% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig rename to test/cases/compile_errors/implicit_semicolon-if_expression.zig index 2082588e0e..339a5378cf 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-if_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:20: error: expected ';' after statement +// :4:20: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig b/test/cases/compile_errors/implicit_semicolon-if_statement.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig rename to test/cases/compile_errors/implicit_semicolon-if_statement.zig index 26cefd0237..b8ccb5e401 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-if_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-if_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:18: error: expected ';' or 'else' after statement +// :4:18: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig b/test/cases/compile_errors/implicit_semicolon-test_expression.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig rename to test/cases/compile_errors/implicit_semicolon-test_expression.zig index c31f3520c1..2a37c0aa0e 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-test_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:26: error: expected ';' after statement +// :4:26: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig b/test/cases/compile_errors/implicit_semicolon-test_statement.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig rename to test/cases/compile_errors/implicit_semicolon-test_statement.zig index 8abb1cbcb1..afe00eba75 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-test_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-test_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:24: error: expected ';' or 'else' after statement +// :4:24: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig b/test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig rename to test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig index 4d3219eb66..5587627597 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-while-continue_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:28: error: expected ';' after statement +// :4:28: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig b/test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig rename to test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig index c0b3370357..9bebe3861e 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while-continue_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-while-continue_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:26: error: expected ';' or 'else' after statement +// :4:26: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig b/test/cases/compile_errors/implicit_semicolon-while_expression.zig similarity index 66% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig rename to test/cases/compile_errors/implicit_semicolon-while_expression.zig index 39f49319d5..df388a7c39 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_expression.zig +++ b/test/cases/compile_errors/implicit_semicolon-while_expression.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:23: error: expected ';' after statement +// :4:23: error: expected ';' after statement diff --git a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig b/test/cases/compile_errors/implicit_semicolon-while_statement.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig rename to test/cases/compile_errors/implicit_semicolon-while_statement.zig index 6c253ecf56..d9ed3d1e2a 100644 --- a/test/cases/compile_errors/stage1/obj/implicit_semicolon-while_statement.zig +++ b/test/cases/compile_errors/implicit_semicolon-while_statement.zig @@ -6,7 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:18: error: expected ';' or 'else' after statement +// :4:18: error: expected ';' or 'else' after statement diff --git a/test/cases/compile_errors/import_outside_package_path.zig b/test/cases/compile_errors/import_outside_package_path.zig new file mode 100644 index 0000000000..0c0df59419 --- /dev/null +++ b/test/cases/compile_errors/import_outside_package_path.zig @@ -0,0 +1,9 @@ +comptime{ + _ = @import("../a.zig"); +} + +// error +// backend=stage2 +// target=native +// +// :2:17: error: import of file outside package path: '../a.zig' diff --git a/test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig b/test/cases/compile_errors/inferred_array_size_invalid_here.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig rename to test/cases/compile_errors/inferred_array_size_invalid_here.zig index 2b2d944eab..084057dc8e 100644 --- a/test/cases/compile_errors/stage1/obj/inferred_array_size_invalid_here.zig +++ b/test/cases/compile_errors/inferred_array_size_invalid_here.zig @@ -9,8 +9,8 @@ export fn entry2() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:16: error: unable to infer array size -// tmp.zig:6:35: error: unable to infer array size +// :2:16: error: unable to infer array size +// :6:35: error: unable to infer array size diff --git a/test/cases/compile_errors/inferring_error_set_of_function_pointer.zig b/test/cases/compile_errors/inferring_error_set_of_function_pointer.zig new file mode 100644 index 0000000000..862e33906a --- /dev/null +++ b/test/cases/compile_errors/inferring_error_set_of_function_pointer.zig @@ -0,0 +1,9 @@ +comptime { + const z: ?fn()!void = null; +} + +// error +// backend=stage2 +// target=native +// +// :2:19: error: function prototype may not have inferred error set diff --git a/test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig b/test/cases/compile_errors/initializing_array_with_struct_syntax.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig rename to test/cases/compile_errors/initializing_array_with_struct_syntax.zig index 2884c6193e..b8448b2758 100644 --- a/test/cases/compile_errors/stage1/obj/initializing_array_with_struct_syntax.zig +++ b/test/cases/compile_errors/initializing_array_with_struct_syntax.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: initializing array with struct syntax +// :2:15: error: initializing array with struct syntax diff --git a/test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig b/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig similarity index 55% rename from test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig rename to test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig index de439168ae..0b77f03baa 100644 --- a/test/cases/compile_errors/stage1/test/int-float_conversion_to_comptime_int-float.zig +++ b/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig @@ -8,9 +8,8 @@ export fn bar() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:35: error: unable to evaluate constant expression -// tmp.zig:7:37: error: unable to evaluate constant expression +// :3:35: error: unable to resolve comptime value +// :7:37: error: unable to resolve comptime value diff --git a/test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig b/test/cases/compile_errors/int_to_err_global_invalid_number.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig rename to test/cases/compile_errors/int_to_err_global_invalid_number.zig index 5c078a751c..5bb9b75a8e 100644 --- a/test/cases/compile_errors/stage1/obj/int_to_err_global_invalid_number.zig +++ b/test/cases/compile_errors/int_to_err_global_invalid_number.zig @@ -9,7 +9,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:7:13: error: integer value 3 represents no error +// :7:25: error: integer value '3' represents no error diff --git a/test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig b/test/cases/compile_errors/int_to_err_non_global_invalid_number.zig similarity index 62% rename from test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig rename to test/cases/compile_errors/int_to_err_non_global_invalid_number.zig index 8c1e547746..0b774cd29e 100644 --- a/test/cases/compile_errors/stage1/obj/int_to_err_non_global_invalid_number.zig +++ b/test/cases/compile_errors/int_to_err_non_global_invalid_number.zig @@ -13,7 +13,8 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:11:13: error: error.B not a member of error set 'Set2' +// :11:13: error: 'error.B' not a member of error set 'error{A,C}' +// :5:14: note: error set declared here diff --git a/test/cases/compile_errors/stage1/obj/integer_overflow_error.zig b/test/cases/compile_errors/integer_overflow_error.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/integer_overflow_error.zig rename to test/cases/compile_errors/integer_overflow_error.zig index 117d77ed93..aa4725b7e7 100644 --- a/test/cases/compile_errors/stage1/obj/integer_overflow_error.zig +++ b/test/cases/compile_errors/integer_overflow_error.zig @@ -2,7 +2,7 @@ const x : u8 = 300; export fn entry() usize { return @sizeOf(@TypeOf(x)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:16: error: integer value 300 cannot be coerced to type 'u8' +// :1:16: error: type 'u8' cannot represent integer value '300' diff --git a/test/cases/compile_errors/stage1/obj/integer_underflow_error.zig b/test/cases/compile_errors/integer_underflow_error.zig similarity index 62% rename from test/cases/compile_errors/stage1/obj/integer_underflow_error.zig rename to test/cases/compile_errors/integer_underflow_error.zig index 15bd4c472b..120edd0838 100644 --- a/test/cases/compile_errors/stage1/obj/integer_underflow_error.zig +++ b/test/cases/compile_errors/integer_underflow_error.zig @@ -3,7 +3,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// :2:78: error: operation caused overflow +// :2:78: error: overflow of integer type 'usize' with value '-1' diff --git a/test/cases/llvm/invalid_address_space_coercion.zig b/test/cases/compile_errors/invalid_address_space_coercion.zig similarity index 73% rename from test/cases/llvm/invalid_address_space_coercion.zig rename to test/cases/compile_errors/invalid_address_space_coercion.zig index 6b72f1d5a8..fd49aecb32 100644 --- a/test/cases/llvm/invalid_address_space_coercion.zig +++ b/test/cases/compile_errors/invalid_address_space_coercion.zig @@ -10,4 +10,4 @@ pub fn main() void { // backend=stage2,llvm // target=x86_64-linux,x86_64-macos // -// :2:12: error: expected *i32, found *addrspace(.gs) i32 +// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/invalid_array_elem_ty.zig b/test/cases/compile_errors/invalid_array_elem_ty.zig index c7c2597246..d1d7e4a070 100644 --- a/test/cases/compile_errors/invalid_array_elem_ty.zig +++ b/test/cases/compile_errors/invalid_array_elem_ty.zig @@ -9,4 +9,4 @@ pub export fn entry() void { // target=native // backend=stage2 // -// :4:1: error: expected type, found fn() type +// :4:1: error: expected type 'type', found 'fn() type' diff --git a/test/cases/compile_errors/stage1/test/invalid_assignments.zig b/test/cases/compile_errors/invalid_assignments.zig similarity index 50% rename from test/cases/compile_errors/stage1/test/invalid_assignments.zig rename to test/cases/compile_errors/invalid_assignments.zig index 75f45a8bcb..d68fbda395 100644 --- a/test/cases/compile_errors/stage1/test/invalid_assignments.zig +++ b/test/cases/compile_errors/invalid_assignments.zig @@ -11,10 +11,9 @@ export fn entry4() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:6: error: invalid left-hand side to assignment -// tmp.zig:7:7: error: invalid left-hand side to assignment -// tmp.zig:10:7: error: invalid left-hand side to assignment +// :3:6: error: invalid left-hand side to assignment +// :7:7: error: invalid left-hand side to assignment +// :10:7: error: invalid left-hand side to assignment diff --git a/test/cases/compile_errors/invalid_break_expression.zig b/test/cases/compile_errors/invalid_break_expression.zig new file mode 100644 index 0000000000..2e7d37e60b --- /dev/null +++ b/test/cases/compile_errors/invalid_break_expression.zig @@ -0,0 +1,9 @@ +export fn f() void { + break; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: break expression outside loop diff --git a/test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig b/test/cases/compile_errors/invalid_builtin_fn.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig rename to test/cases/compile_errors/invalid_builtin_fn.zig index 8f0e3633bb..5b7b832177 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_builtin_fn.zig +++ b/test/cases/compile_errors/invalid_builtin_fn.zig @@ -3,7 +3,7 @@ fn f() @bogus(foo) { export fn entry() void { _ = f(); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:8: error: invalid builtin function: '@bogus' +// :1:8: error: invalid builtin function: '@bogus' diff --git a/test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig b/test/cases/compile_errors/invalid_comparison_for_function_pointers.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig rename to test/cases/compile_errors/invalid_comparison_for_function_pointers.zig index 6d64b6cdaf..cd63c70259 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_comparison_for_function_pointers.zig +++ b/test/cases/compile_errors/invalid_comparison_for_function_pointers.zig @@ -4,7 +4,7 @@ const invalid = foo > foo; export fn entry() usize { return @sizeOf(@TypeOf(invalid)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:21: error: operator not allowed for type 'fn() void' +// :2:21: error: operator > not allowed for type 'fn() void' diff --git a/test/cases/compile_errors/invalid_continue_expression.zig b/test/cases/compile_errors/invalid_continue_expression.zig new file mode 100644 index 0000000000..8f368d1b6a --- /dev/null +++ b/test/cases/compile_errors/invalid_continue_expression.zig @@ -0,0 +1,9 @@ +export fn f() void { + continue; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: continue expression outside loop diff --git a/test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig b/test/cases/compile_errors/invalid_empty_unicode_escape.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig rename to test/cases/compile_errors/invalid_empty_unicode_escape.zig index 57dd16a63d..5088bca6e7 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_empty_unicode_escape.zig +++ b/test/cases/compile_errors/invalid_empty_unicode_escape.zig @@ -3,7 +3,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:19: error: empty unicode escape sequence +// :2:19: error: empty unicode escape sequence diff --git a/test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig b/test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig new file mode 100644 index 0000000000..27d302b2ee --- /dev/null +++ b/test/cases/compile_errors/invalid_exponent_in_float_literal-1.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0x1.0p1ab1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:28: note: invalid byte: 'a' diff --git a/test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig b/test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig new file mode 100644 index 0000000000..a3aa8037e1 --- /dev/null +++ b/test/cases/compile_errors/invalid_exponent_in_float_literal-2.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0x1.0p50F; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:29: note: invalid byte: 'F' diff --git a/test/cases/compile_errors/invalid_field_access_in_comptime.zig b/test/cases/compile_errors/invalid_field_access_in_comptime.zig new file mode 100644 index 0000000000..672c2b74c9 --- /dev/null +++ b/test/cases/compile_errors/invalid_field_access_in_comptime.zig @@ -0,0 +1,7 @@ +comptime { var x = doesnt_exist.whatever; _ = x; } + +// error +// backend=stage2 +// target=native +// +// :1:20: error: use of undeclared identifier 'doesnt_exist' diff --git a/test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig rename to test/cases/compile_errors/invalid_field_in_struct_value_expression.zig index fae0a90b51..fc9667910b 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_field_in_struct_value_expression.zig +++ b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig @@ -13,7 +13,8 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:10:9: error: no member named 'foo' in struct 'A' +// :10:10: error: no field named 'foo' in struct 'tmp.A' +// :1:11: note: struct declared here diff --git a/test/cases/compile_errors/stage1/test/invalid_float_casts.zig b/test/cases/compile_errors/invalid_float_casts.zig similarity index 55% rename from test/cases/compile_errors/stage1/test/invalid_float_casts.zig rename to test/cases/compile_errors/invalid_float_casts.zig index 2fe8003728..152c98182b 100644 --- a/test/cases/compile_errors/stage1/test/invalid_float_casts.zig +++ b/test/cases/compile_errors/invalid_float_casts.zig @@ -16,11 +16,10 @@ export fn qux() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:36: error: unable to evaluate constant expression -// tmp.zig:7:21: error: expected integer type, found 'f32' -// tmp.zig:11:26: error: expected int type, found 'f32' -// tmp.zig:15:25: error: expected float type, found 'u32' +// :3:36: error: unable to cast runtime value to 'comptime_float' +// :7:21: error: expected integer type, found 'f32' +// :11:26: error: expected integer type, found 'f32' +// :15:25: error: expected float type, found 'u32' diff --git a/test/cases/compile_errors/stage1/obj/invalid_float_literal.zig b/test/cases/compile_errors/invalid_float_literal.zig similarity index 71% rename from test/cases/compile_errors/stage1/obj/invalid_float_literal.zig rename to test/cases/compile_errors/invalid_float_literal.zig index 709609a027..076e36ade1 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_float_literal.zig +++ b/test/cases/compile_errors/invalid_float_literal.zig @@ -7,7 +7,7 @@ pub fn main() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:29: error: expected expression, found '.' +// :5:29: error: expected expression, found '.' diff --git a/test/cases/compile_errors/stage1/test/invalid_int_casts.zig b/test/cases/compile_errors/invalid_int_casts.zig similarity index 55% rename from test/cases/compile_errors/stage1/test/invalid_int_casts.zig rename to test/cases/compile_errors/invalid_int_casts.zig index 9945751ef5..d220869201 100644 --- a/test/cases/compile_errors/stage1/test/invalid_int_casts.zig +++ b/test/cases/compile_errors/invalid_int_casts.zig @@ -16,11 +16,10 @@ export fn qux() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:32: error: unable to evaluate constant expression -// tmp.zig:7:21: error: expected float type, found 'u32' -// tmp.zig:11:26: error: expected float type, found 'u32' -// tmp.zig:15:23: error: expected integer type, found 'f32' +// :3:32: error: unable to cast runtime value to 'comptime_int' +// :7:21: error: expected float type, found 'u32' +// :11:26: error: expected float type, found 'u32' +// :15:23: error: expected integer or vector, found 'f32' diff --git a/test/cases/compile_errors/invalid_legacy_unicode_escape.zig b/test/cases/compile_errors/invalid_legacy_unicode_escape.zig new file mode 100644 index 0000000000..cc4e78f6e4 --- /dev/null +++ b/test/cases/compile_errors/invalid_legacy_unicode_escape.zig @@ -0,0 +1,10 @@ +export fn entry() void { + const a = '\U1234'; +} + +// error +// backend=stage2 +// target=native +// +// :2:15: error: expected expression, found 'invalid bytes' +// :2:18: note: invalid byte: '1' diff --git a/test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig b/test/cases/compile_errors/invalid_member_of_builtin_enum.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig rename to test/cases/compile_errors/invalid_member_of_builtin_enum.zig index 166ebfc782..3edb17ffbf 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_member_of_builtin_enum.zig +++ b/test/cases/compile_errors/invalid_member_of_builtin_enum.zig @@ -5,7 +5,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:29: error: container 'std.builtin.Mode' has no member called 'x86' +// :3:30: error: enum 'builtin.Mode' has no member named 'x86' +// :?:18: note: enum declared here diff --git a/test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig b/test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig similarity index 55% rename from test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig rename to test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig index 804e83a66a..c7fc39f769 100644 --- a/test/cases/compile_errors/stage1/test/invalid_non-exhaustive_enum_to_union.zig +++ b/test/cases/compile_errors/invalid_non-exhaustive_enum_to_union.zig @@ -19,9 +19,10 @@ export fn bar() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:12:16: error: runtime cast to union 'U' from non-exhaustive enum -// tmp.zig:17:16: error: no tag by value 15 +// :12:16: error: runtime coercion to union 'tmp.U' from non-exhaustive enum +// :1:11: note: enum declared here +// :17:16: error: union 'tmp.U' has no tag with value '15' +// :6:11: note: union declared here diff --git a/test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig b/test/cases/compile_errors/invalid_pointer_for_var_type.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig rename to test/cases/compile_errors/invalid_pointer_for_var_type.zig index caf8c70797..ee193bab15 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_pointer_for_var_type.zig +++ b/test/cases/compile_errors/invalid_pointer_for_var_type.zig @@ -7,7 +7,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:13: error: unable to evaluate constant expression +// :2:16: error: comptime call of extern function diff --git a/test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig b/test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig similarity index 73% rename from test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig rename to test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig index 26f68ce789..1560dcc46a 100644 --- a/test/cases/llvm/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig +++ b/test/cases/compile_errors/invalid_pointer_keeps_address_space_when_taking_address_of_dereference.zig @@ -10,4 +10,4 @@ pub fn main() void { // backend=stage2,llvm // target=x86_64-linux,x86_64-macos // -// :2:12: error: expected *i32, found *addrspace(.gs) i32 +// :2:12: error: expected type '*i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig b/test/cases/compile_errors/invalid_pointer_syntax.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig rename to test/cases/compile_errors/invalid_pointer_syntax.zig index a4c823bde1..a8dbf438cb 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_pointer_syntax.zig +++ b/test/cases/compile_errors/invalid_pointer_syntax.zig @@ -3,7 +3,7 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:16: error: expected type expression, found ':' +// :2:16: error: expected type expression, found ':' diff --git a/test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig b/test/cases/compile_errors/invalid_pointer_with_reify_type.zig similarity index 72% rename from test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig rename to test/cases/compile_errors/invalid_pointer_with_reify_type.zig index bf1cf6bd6f..cac9e32894 100644 --- a/test/cases/compile_errors/stage1/test/invalid_pointer_with_reify_type.zig +++ b/test/cases/compile_errors/invalid_pointer_with_reify_type.zig @@ -12,8 +12,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:2:16: error: sentinels are only allowed on slices and unknown-length pointers +// :2:9: error: sentinels are only allowed on slices and unknown-length pointers diff --git a/test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig b/test/cases/compile_errors/invalid_shift_amount_error.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig rename to test/cases/compile_errors/invalid_shift_amount_error.zig index 7c84f2db38..49852b5b7d 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_shift_amount_error.zig +++ b/test/cases/compile_errors/invalid_shift_amount_error.zig @@ -5,7 +5,7 @@ fn f() u16 { export fn entry() u16 { return f(); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:17: error: integer value 8 cannot be coerced to type 'u3' +// :3:17: error: type 'u3' cannot represent integer value '8' diff --git a/test/cases/compile_errors/stage1/obj/invalid_struct_field.zig b/test/cases/compile_errors/invalid_struct_field.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/invalid_struct_field.zig rename to test/cases/compile_errors/invalid_struct_field.zig index 6264125bca..0a704e0270 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_struct_field.zig +++ b/test/cases/compile_errors/invalid_struct_field.zig @@ -12,8 +12,10 @@ export fn g() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:6: error: no member named 'foo' in struct 'A' -// tmp.zig:10:16: error: no member named 'bar' in struct 'A' +// :4:7: error: no field named 'foo' in struct 'tmp.A' +// :1:11: note: struct declared here +// :10:17: error: no field named 'bar' in struct 'tmp.A' +// :1:11: note: struct declared here diff --git a/test/cases/compile_errors/stage1/obj/invalid_type.zig b/test/cases/compile_errors/invalid_type.zig similarity index 51% rename from test/cases/compile_errors/stage1/obj/invalid_type.zig rename to test/cases/compile_errors/invalid_type.zig index 8a2952e5f2..902d3652e7 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_type.zig +++ b/test/cases/compile_errors/invalid_type.zig @@ -2,7 +2,7 @@ fn a() bogus {} export fn entry() void { _ = a(); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:8: error: use of undeclared identifier 'bogus' +// :1:8: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig b/test/cases/compile_errors/invalid_type_used_in_array_type.zig similarity index 66% rename from test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig rename to test/cases/compile_errors/invalid_type_used_in_array_type.zig index 3a7bc4272c..88da04bcc0 100644 --- a/test/cases/compile_errors/stage1/obj/invalid_type_used_in_array_type.zig +++ b/test/cases/compile_errors/invalid_type_used_in_array_type.zig @@ -8,7 +8,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:12: error: use of undeclared identifier 'SomeNonexistentType' +// :2:12: error: use of undeclared identifier 'SomeNonexistentType' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig new file mode 100644 index 0000000000..f4be35883f --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-1.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0._0; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:23: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig new file mode 100644 index 0000000000..43090c28ba --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-10.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1.0__0e-1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:25: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig new file mode 100644 index 0000000000..9910cc51d1 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-11.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1.0e-1__0; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:28: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig new file mode 100644 index 0000000000..6dd7566b6a --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-12.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0_x0.0; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:23: note: invalid byte: 'x' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig new file mode 100644 index 0000000000..eebba19f96 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-13.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0x_0.0; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:23: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig new file mode 100644 index 0000000000..221b43cee5 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-14.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0x0.0_p1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:27: note: invalid byte: 'p' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig new file mode 100644 index 0000000000..402d4e92e8 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-2.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0_.0; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:23: note: invalid byte: '.' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig new file mode 100644 index 0000000000..d6615e8e36 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-3.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 0.0_; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:25: note: invalid byte: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig new file mode 100644 index 0000000000..2b431a3cd2 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-4.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1.0e_1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:25: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig new file mode 100644 index 0000000000..b61585a28a --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-5.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1.0e+_1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:26: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig new file mode 100644 index 0000000000..cb2aeffd38 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-6.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1.0e-_1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:26: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig new file mode 100644 index 0000000000..c22b00ff0c --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-7.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1.0e-1_; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig new file mode 100644 index 0000000000..db60f04bc1 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_float_literal-9.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: f128 = 1__0.0e-1; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:23: note: invalid byte: '_' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig new file mode 100644 index 0000000000..de519f2ddb --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-1.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: u128 = 0010_; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:26: note: invalid byte: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig new file mode 100644 index 0000000000..80cb2981ce --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-2.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: u128 = 0b0010_; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig new file mode 100644 index 0000000000..c82aba5065 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-3.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: u128 = 0o0010_; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig new file mode 100644 index 0000000000..145b009494 --- /dev/null +++ b/test/cases/compile_errors/invalid_underscore_placement_in_int_literal-4.zig @@ -0,0 +1,11 @@ +fn main() void { + var bad: u128 = 0x0010_; + _ = bad; +} + +// error +// backend=stage2 +// target=native +// +// :2:21: error: expected expression, found 'invalid bytes' +// :2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig b/test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig new file mode 100644 index 0000000000..86d21d4309 --- /dev/null +++ b/test/cases/compile_errors/issue_9346_return_outside_of_function_scope.zig @@ -0,0 +1,7 @@ +pub const empty = return 1; + +// error +// backend=stage2 +// target=native +// +// :1:19: error: 'return' outside function scope diff --git a/test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig b/test/cases/compile_errors/labeled_break_not_found.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig rename to test/cases/compile_errors/labeled_break_not_found.zig index 754e1864b0..20185d0e04 100644 --- a/test/cases/compile_errors/stage1/obj/labeled_break_not_found.zig +++ b/test/cases/compile_errors/labeled_break_not_found.zig @@ -7,7 +7,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:20: error: label not found: 'outer' +// :4:20: error: label not found: 'outer' diff --git a/test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig b/test/cases/compile_errors/labeled_continue_not_found.zig similarity index 73% rename from test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig rename to test/cases/compile_errors/labeled_continue_not_found.zig index b112e9b355..6cef0866a8 100644 --- a/test/cases/compile_errors/stage1/obj/labeled_continue_not_found.zig +++ b/test/cases/compile_errors/labeled_continue_not_found.zig @@ -8,7 +8,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:23: error: label not found: 'outer' +// :5:23: error: label not found: 'outer' diff --git a/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig b/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig new file mode 100644 index 0000000000..1d88ac2c88 --- /dev/null +++ b/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig @@ -0,0 +1,12 @@ +pub fn main() void { + var foo = true; + _ = foo; +} +fn foo() void {} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: local shadows declaration of 'foo' +// :5:1: note: declared here diff --git a/test/cases/compile_errors/local_variable_redeclaration.zig b/test/cases/compile_errors/local_variable_redeclaration.zig new file mode 100644 index 0000000000..a0861ada49 --- /dev/null +++ b/test/cases/compile_errors/local_variable_redeclaration.zig @@ -0,0 +1,11 @@ +export fn f() void { + const a : i32 = 0; + var a = 0; +} + +// error +// backend=stage2 +// target=native +// +// :3:9: error: redeclaration of local constant 'a' +// :2:11: note: previous declaration here diff --git a/test/cases/compile_errors/local_variable_redeclares_parameter.zig b/test/cases/compile_errors/local_variable_redeclares_parameter.zig new file mode 100644 index 0000000000..f5693ca9b6 --- /dev/null +++ b/test/cases/compile_errors/local_variable_redeclares_parameter.zig @@ -0,0 +1,11 @@ +fn f(a : i32) void { + const a = 0; +} +export fn entry() void { f(1); } + +// error +// backend=stage2 +// target=native +// +// :2:11: error: redeclaration of function parameter 'a' +// :1:6: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig b/test/cases/compile_errors/local_variable_shadowing_global.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig rename to test/cases/compile_errors/local_variable_shadowing_global.zig index 3f1af3a4cb..1320bfcb41 100644 --- a/test/cases/compile_errors/stage1/obj/local_variable_shadowing_global.zig +++ b/test/cases/compile_errors/local_variable_shadowing_global.zig @@ -7,8 +7,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:9: error: local shadows declaration of 'Bar' -// tmp.zig:2:1: note: declared here +// :5:9: error: local shadows declaration of 'Bar' +// :2:1: note: declared here diff --git a/test/cases/compile_errors/locally_shadowing_a_primitive_type.zig b/test/cases/compile_errors/locally_shadowing_a_primitive_type.zig new file mode 100644 index 0000000000..7e7e994321 --- /dev/null +++ b/test/cases/compile_errors/locally_shadowing_a_primitive_type.zig @@ -0,0 +1,12 @@ +export fn foo() void { + const u8 = u16; + const a: u8 = 300; + _ = a; +} + +// error +// backend=stage2 +// target=native +// +// :2:11: error: name shadows primitive 'u8' +// :2:11: note: consider using @"u8" to disambiguate diff --git a/test/cases/compile_errors/main_function_with_bogus_args_type.zig b/test/cases/compile_errors/main_function_with_bogus_args_type.zig new file mode 100644 index 0000000000..dd02e1af34 --- /dev/null +++ b/test/cases/compile_errors/main_function_with_bogus_args_type.zig @@ -0,0 +1,7 @@ +pub fn main(args: [][]bogus) !void {_ = args;} + +// error +// backend=stage2 +// target=native +// +// :1:23: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/stage1/exe/main_missing_name.zig b/test/cases/compile_errors/main_missing_name.zig similarity index 52% rename from test/cases/compile_errors/stage1/exe/main_missing_name.zig rename to test/cases/compile_errors/main_missing_name.zig index 1a53e43cfb..8115eb2ae1 100644 --- a/test/cases/compile_errors/stage1/exe/main_missing_name.zig +++ b/test/cases/compile_errors/main_missing_name.zig @@ -1,8 +1,8 @@ pub fn (main) void {} // error -// backend=stage1 +// backend=stage2 // target=native // output_mode=Exe // -// tmp.zig:1:5: error: missing function name +// :1:5: error: missing function name diff --git a/test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig b/test/cases/compile_errors/missing_boolean_switch_value.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig rename to test/cases/compile_errors/missing_boolean_switch_value.zig index 2e9d4b48ce..a811efee8a 100644 --- a/test/cases/compile_errors/stage1/obj/missing_boolean_switch_value.zig +++ b/test/cases/compile_errors/missing_boolean_switch_value.zig @@ -12,8 +12,8 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: switch must handle all possibilities -// tmp.zig:8:15: error: switch must handle all possibilities +// :2:15: error: switch must handle all possibilities +// :8:15: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/stage1/obj/missing_else_clause.zig b/test/cases/compile_errors/missing_else_clause.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/missing_else_clause.zig rename to test/cases/compile_errors/missing_else_clause.zig index f331933437..716721bdea 100644 --- a/test/cases/compile_errors/stage1/obj/missing_else_clause.zig +++ b/test/cases/compile_errors/missing_else_clause.zig @@ -9,8 +9,8 @@ fn g(b: bool) void { export fn entry() void { f(true); g(true); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:21: error: expected type 'i32', found 'void' -// tmp.zig:6:15: error: incompatible types: 'i32' and 'void' +// :2:21: error: incompatible types: 'i32' and 'void' +// :6:15: error: incompatible types: 'i32' and 'void' diff --git a/test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig b/test/cases/compile_errors/missing_field_in_struct_value_expression.zig similarity index 73% rename from test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig rename to test/cases/compile_errors/missing_field_in_struct_value_expression.zig index 9eb4246c8f..600540d1e0 100644 --- a/test/cases/compile_errors/stage1/obj/missing_field_in_struct_value_expression.zig +++ b/test/cases/compile_errors/missing_field_in_struct_value_expression.zig @@ -14,7 +14,8 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:9:17: error: missing field: 'x' +// :9:17: error: missing struct field: x +// :1:11: note: struct 'tmp.A' declared here diff --git a/test/cases/compile_errors/missing_function_name.zig b/test/cases/compile_errors/missing_function_name.zig new file mode 100644 index 0000000000..e0cce9d86b --- /dev/null +++ b/test/cases/compile_errors/missing_function_name.zig @@ -0,0 +1,7 @@ +fn () void {} + +// error +// backend=stage2 +// target=native +// +// :1:1: error: missing function name diff --git a/test/cases/compile_errors/stage1/obj/missing_param_name.zig b/test/cases/compile_errors/missing_param_name.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/missing_param_name.zig rename to test/cases/compile_errors/missing_param_name.zig index febb16d2ca..88da902ea2 100644 --- a/test/cases/compile_errors/stage1/obj/missing_param_name.zig +++ b/test/cases/compile_errors/missing_param_name.zig @@ -2,7 +2,7 @@ fn f(i32) void {} export fn entry() usize { return @sizeOf(@TypeOf(f)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:6: error: missing parameter name +// :1:6: error: missing parameter name diff --git a/test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig b/test/cases/compile_errors/missing_parameter_name_of_generic_function.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig rename to test/cases/compile_errors/missing_parameter_name_of_generic_function.zig index 041c0c4a47..edd19bd7de 100644 --- a/test/cases/compile_errors/stage1/obj/missing_parameter_name_of_generic_function.zig +++ b/test/cases/compile_errors/missing_parameter_name_of_generic_function.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:9: error: missing parameter name +// :1:9: error: missing parameter name diff --git a/test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig b/test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig similarity index 88% rename from test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig rename to test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig index 8e2055a829..ef8fce6c80 100644 --- a/test/cases/compile_errors/stage1/obj/misspelled_type_with_pointer_only_reference.zig +++ b/test/cases/compile_errors/misspelled_type_with_pointer_only_reference.zig @@ -31,7 +31,7 @@ fn foo() void { export fn entry() usize { return @sizeOf(@TypeOf(foo)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:16: error: use of undeclared identifier 'JsonList' +// :5:16: error: use of undeclared identifier 'JsonList' diff --git a/test/cases/compile_errors/multiple_function_definitions.zig b/test/cases/compile_errors/multiple_function_definitions.zig new file mode 100644 index 0000000000..d07eaee257 --- /dev/null +++ b/test/cases/compile_errors/multiple_function_definitions.zig @@ -0,0 +1,10 @@ +fn a() void {} +fn a() void {} +export fn entry() void { a(); } + +// error +// backend=stage2 +// target=native +// +// :2:1: error: redeclaration of 'a' +// :1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/test/nested_vectors.zig b/test/cases/compile_errors/nested_vectors.zig similarity index 59% rename from test/cases/compile_errors/stage1/test/nested_vectors.zig rename to test/cases/compile_errors/nested_vectors.zig index 9e87ac814b..9482c23005 100644 --- a/test/cases/compile_errors/stage1/test/nested_vectors.zig +++ b/test/cases/compile_errors/nested_vectors.zig @@ -6,8 +6,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:23: error: vector element type must be integer, float, bool, or pointer; '@Vector(4, u8)' is invalid +// :3:16: error: expected integer, float, bool, or pointer for the vector element type; found '@Vector(4, u8)' + diff --git a/test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig b/test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig similarity index 71% rename from test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig rename to test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig index 25e33d1435..fc33fa531e 100644 --- a/test/cases/compile_errors/stage1/obj/non-const_expression_function_call_with_struct_return_value_outside_function.zig +++ b/test/cases/compile_errors/non-const_expression_function_call_with_struct_return_value_outside_function.zig @@ -11,7 +11,8 @@ var global_side_effect = false; export fn entry() usize { return @sizeOf(@TypeOf(a)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:26: error: unable to evaluate constant expression +// :6:26: error: unable to resolve comptime value +// :4:17: note: called from here diff --git a/test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig b/test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig similarity index 68% rename from test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig rename to test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig index 46b94f1f96..2e0043c5ec 100644 --- a/test/cases/compile_errors/stage1/obj/non-const_expression_in_struct_literal_outside_function.zig +++ b/test/cases/compile_errors/non-const_expression_in_struct_literal_outside_function.zig @@ -7,7 +7,7 @@ extern fn get_it() i32; export fn entry() usize { return @sizeOf(@TypeOf(a)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:21: error: unable to evaluate constant expression +// :4:27: error: comptime call of extern function diff --git a/test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig b/test/cases/compile_errors/non-const_switch_number_literal.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig rename to test/cases/compile_errors/non-const_switch_number_literal.zig index 005db548ed..01e31bb92c 100644 --- a/test/cases/compile_errors/stage1/obj/non-const_switch_number_literal.zig +++ b/test/cases/compile_errors/non-const_switch_number_literal.zig @@ -11,7 +11,8 @@ fn bar() i32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:17: error: cannot store runtime value in type 'comptime_int' +// :2:15: error: value with comptime only type 'comptime_int' depends on runtime control flow +// :2:26: note: runtime control flow here diff --git a/test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig b/test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig new file mode 100644 index 0000000000..cd5375464f --- /dev/null +++ b/test/cases/compile_errors/non-exhaustive_enum_field_non_final.zig @@ -0,0 +1,11 @@ +const B = enum(u1) { + a, + _, + b, +}; + +// error +// backend=stage2 +// target=native +// +// :3:5: error: '_' field of non-exhaustive enum must be last diff --git a/test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig b/test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig new file mode 100644 index 0000000000..c9ebb6af71 --- /dev/null +++ b/test/cases/compile_errors/non-exhaustive_enum_marker_assigned_a_value.zig @@ -0,0 +1,19 @@ +const A = enum { + a, + b, + _ = 1, +}; +const B = enum { + a, + b, + _, +}; +comptime { _ = A; _ = B; } + +// error +// backend=stage2 +// target=native +// +// :4:9: error: '_' is used to mark an enum as non-exhaustive and cannot be assigned a value +// :6:11: error: non-exhaustive enum missing integer tag type +// :9:5: note: marked non-exhaustive here diff --git a/test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig b/test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig new file mode 100644 index 0000000000..99d3711e1d --- /dev/null +++ b/test/cases/compile_errors/non-exhaustive_enum_specifies_every_value.zig @@ -0,0 +1,14 @@ +const C = enum(u1) { + a, + b, + _, +}; +pub export fn entry() void { + _ = C; +} + +// error +// backend=stage2 +// target=native +// +// :1:11: error: non-exhaustive enum specifies every value diff --git a/test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig b/test/cases/compile_errors/non-extern_function_with_var_args.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig rename to test/cases/compile_errors/non-extern_function_with_var_args.zig index 9e5463d451..bb9d13a230 100644 --- a/test/cases/compile_errors/stage1/obj/non-extern_function_with_var_args.zig +++ b/test/cases/compile_errors/non-extern_function_with_var_args.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:14: error: expected type expression, found '...' +// :1:14: error: expected type expression, found '...' diff --git a/test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig b/test/cases/compile_errors/non-pure_function_returns_type.zig similarity index 80% rename from test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig rename to test/cases/compile_errors/non-pure_function_returns_type.zig index 9d1c642273..ceb3e0507f 100644 --- a/test/cases/compile_errors/stage1/obj/non-pure_function_returns_type.zig +++ b/test/cases/compile_errors/non-pure_function_returns_type.zig @@ -18,7 +18,8 @@ export fn function_with_return_type_type() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:7: error: unable to evaluate constant expression +// :3:7: error: unable to resolve comptime value +// :16:19: note: called from here diff --git a/test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig b/test/cases/compile_errors/non_float_passed_to_floatToInt.zig similarity index 60% rename from test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig rename to test/cases/compile_errors/non_float_passed_to_floatToInt.zig index c91025906a..2d4e0315be 100644 --- a/test/cases/compile_errors/stage1/obj/non_float_passed_to_floatToInt.zig +++ b/test/cases/compile_errors/non_float_passed_to_floatToInt.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:32: error: expected float type, found 'i32' +// :2:32: error: expected float type, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig b/test/cases/compile_errors/non_int_passed_to_intToFloat.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig rename to test/cases/compile_errors/non_int_passed_to_intToFloat.zig index 8f6acca51e..f40fa93df0 100644 --- a/test/cases/compile_errors/stage1/obj/non_int_passed_to_intToFloat.zig +++ b/test/cases/compile_errors/non_int_passed_to_intToFloat.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:32: error: expected int type, found 'comptime_float' +// :2:32: error: expected integer type, found 'comptime_float' diff --git a/test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig b/test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig rename to test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig index 7824c0f796..27b5d6d1f7 100644 --- a/test/cases/compile_errors/stage1/obj/non_pointer_given_to_ptrToInt.zig +++ b/test/cases/compile_errors/non_pointer_given_to_ptrToInt.zig @@ -3,7 +3,7 @@ export fn entry(x: i32) usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:22: error: expected pointer, found 'i32' +// :2:22: error: expected pointer, found 'i32' diff --git a/test/cases/compile_errors/normal_string_with_newline.zig b/test/cases/compile_errors/normal_string_with_newline.zig new file mode 100644 index 0000000000..19e15133ee --- /dev/null +++ b/test/cases/compile_errors/normal_string_with_newline.zig @@ -0,0 +1,9 @@ +const foo = "a +b"; + +// error +// backend=stage2 +// target=native +// +// :1:13: error: expected expression, found 'invalid bytes' +// :1:15: note: invalid byte: '\n' diff --git a/test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig b/test/cases/compile_errors/offsetOf-bad_field_name.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig rename to test/cases/compile_errors/offsetOf-bad_field_name.zig index de5b82c22c..5beee8fe2e 100644 --- a/test/cases/compile_errors/stage1/obj/offsetOf-bad_field_name.zig +++ b/test/cases/compile_errors/offsetOf-bad_field_name.zig @@ -6,7 +6,8 @@ export fn foo() usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:27: error: struct 'Foo' has no field 'a' +// :5:27: error: struct 'tmp.Foo' has no field 'a' +// :1:13: note: struct declared here diff --git a/test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig b/test/cases/compile_errors/offsetOf-non_struct.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig rename to test/cases/compile_errors/offsetOf-non_struct.zig index 15275b827b..45e9cf9518 100644 --- a/test/cases/compile_errors/stage1/obj/offsetOf-non_struct.zig +++ b/test/cases/compile_errors/offsetOf-non_struct.zig @@ -4,7 +4,7 @@ export fn foo() usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:22: error: expected struct type, found 'i32' +// :3:22: error: expected struct type, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig b/test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig rename to test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig index ff9c4d18a2..28c4f339c4 100644 --- a/test/cases/compile_errors/stage1/obj/only_equality_binary_operator_allowed_for_error_sets.zig +++ b/test/cases/compile_errors/only_equality_binary_operator_allowed_for_error_sets.zig @@ -4,7 +4,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:23: error: operator not allowed for errors +// :2:23: error: operator > not allowed for type 'error{A,B}' diff --git a/test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig b/test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig rename to test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig index 1a1dd541c9..426e0c95cb 100644 --- a/test/cases/compile_errors/stage1/obj/out_of_range_comptime_int_passed_to_floatToInt.zig +++ b/test/cases/compile_errors/out_of_range_comptime_int_passed_to_floatToInt.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:31: error: integer value 200 cannot be coerced to type 'i8' +// :2:31: error: float value '200' cannot be stored in integer type 'i8' diff --git a/test/cases/compile_errors/parameter_redeclaration.zig b/test/cases/compile_errors/parameter_redeclaration.zig new file mode 100644 index 0000000000..89c7c4bd2a --- /dev/null +++ b/test/cases/compile_errors/parameter_redeclaration.zig @@ -0,0 +1,10 @@ +fn f(a : i32, a : i32) void { +} +export fn entry() void { f(1, 2); } + +// error +// backend=stage2 +// target=native +// +// :1:15: error: redeclaration of function parameter 'a' +// :1:6: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig b/test/cases/compile_errors/parameter_shadowing_global.zig similarity index 50% rename from test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig rename to test/cases/compile_errors/parameter_shadowing_global.zig index ce417d7188..47d112807b 100644 --- a/test/cases/compile_errors/stage1/obj/parameter_shadowing_global.zig +++ b/test/cases/compile_errors/parameter_shadowing_global.zig @@ -5,8 +5,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:6: error: local shadows declaration of 'Foo' -// tmp.zig:1:1: note: declared here +// :2:6: error: local shadows declaration of 'Foo' +// :1:1: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig b/test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig similarity index 74% rename from test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig rename to test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig index c1725f1ee8..3ddd24f7a9 100644 --- a/test/cases/compile_errors/stage1/obj/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig +++ b/test/cases/compile_errors/passing_a_not-aligned-enough_pointer_to_cmpxchg.zig @@ -6,7 +6,7 @@ export fn entry() bool { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:32: error: expected type '*i32', found '*align(1) i32' +// :4:31: error: expected type '*i32', found '*align(1) i32' diff --git a/test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig b/test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig new file mode 100644 index 0000000000..e97a098f40 --- /dev/null +++ b/test/cases/compile_errors/pointer_arithmetic_on_pointer-to-array.zig @@ -0,0 +1,14 @@ +export fn foo() void { + var x: [10]u8 = undefined; + var y = &x; + var z = y + 1; + _ = z; +} + +// error +// backend=stage2 +// target=native +// +// :4:15: error: incompatible types: '*[10]u8' and 'comptime_int' +// :4:13: note: type '*[10]u8' here +// :4:17: note: type 'comptime_int' here diff --git a/test/cases/llvm/pointer_with_different_address_spaces.zig b/test/cases/compile_errors/pointer_with_different_address_spaces.zig similarity index 71% rename from test/cases/llvm/pointer_with_different_address_spaces.zig rename to test/cases/compile_errors/pointer_with_different_address_spaces.zig index 26540862ff..b16c4a4e64 100644 --- a/test/cases/llvm/pointer_with_different_address_spaces.zig +++ b/test/cases/compile_errors/pointer_with_different_address_spaces.zig @@ -10,4 +10,4 @@ export fn entry2() void { // backend=stage2,llvm // target=x86_64-linux,x86_64-macos // -// :2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32 +// :2:12: error: expected type '*addrspace(.fs) i32', found '*addrspace(.gs) i32' diff --git a/test/cases/llvm/pointers_with_different_address_spaces.zig b/test/cases/compile_errors/pointers_with_different_address_spaces.zig similarity index 73% rename from test/cases/llvm/pointers_with_different_address_spaces.zig rename to test/cases/compile_errors/pointers_with_different_address_spaces.zig index 39e5e6a6d1..210c252893 100644 --- a/test/cases/llvm/pointers_with_different_address_spaces.zig +++ b/test/cases/compile_errors/pointers_with_different_address_spaces.zig @@ -10,4 +10,4 @@ pub fn main() void { // backend=stage2,llvm // target=x86_64-linux,x86_64-macos // -// :2:13: error: expected *i32, found *addrspace(.gs) i32 +// :2:13: error: expected type '*i32', found '*addrspace(.gs) i32' diff --git a/test/cases/compile_errors/stage1/obj/popCount-non-integer.zig b/test/cases/compile_errors/popCount-non-integer.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/popCount-non-integer.zig rename to test/cases/compile_errors/popCount-non-integer.zig index a58a98faa3..af1c79f5f4 100644 --- a/test/cases/compile_errors/stage1/obj/popCount-non-integer.zig +++ b/test/cases/compile_errors/popCount-non-integer.zig @@ -3,7 +3,7 @@ export fn entry(x: f32) u32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:22: error: expected integer type, found 'f32' +// :2:27: error: expected integer or vector, found 'f32' diff --git a/test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig b/test/cases/compile_errors/primitives_take_precedence_over_declarations.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig rename to test/cases/compile_errors/primitives_take_precedence_over_declarations.zig index 6f6107e88c..d924c81387 100644 --- a/test/cases/compile_errors/stage1/obj/primitives_take_precedence_over_declarations.zig +++ b/test/cases/compile_errors/primitives_take_precedence_over_declarations.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:19: error: integer value 300 cannot be coerced to type 'u8' +// :3:19: error: type 'u8' cannot represent integer value '300' diff --git a/test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig b/test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig rename to test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig index b8a5d1b0aa..86a5dd6dca 100644 --- a/test/cases/compile_errors/stage1/obj/ptrToInt_0_to_non_optional_pointer.zig +++ b/test/cases/compile_errors/ptrToInt_0_to_non_optional_pointer.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:13: error: pointer type '*i32' does not allow address zero +// :2:29: error: pointer type '*i32' does not allow address zero diff --git a/test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig b/test/cases/compile_errors/ptrcast_to_non-pointer.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig rename to test/cases/compile_errors/ptrcast_to_non-pointer.zig index 7e9e9a99b7..2fe599a2e8 100644 --- a/test/cases/compile_errors/stage1/obj/ptrcast_to_non-pointer.zig +++ b/test/cases/compile_errors/ptrcast_to_non-pointer.zig @@ -3,7 +3,7 @@ export fn entry(a: *i32) usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:21: error: expected pointer, found 'usize' +// :2:21: error: expected pointer type, found 'usize' diff --git a/test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig b/test/cases/compile_errors/reassign_to_slice_parameter.zig similarity index 62% rename from test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig rename to test/cases/compile_errors/reassign_to_slice_parameter.zig index 34bd5541a1..ccf79f4574 100644 --- a/test/cases/compile_errors/stage1/test/reassign_to_slice_parameter.zig +++ b/test/cases/compile_errors/reassign_to_slice_parameter.zig @@ -6,8 +6,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:2:10: error: cannot assign to constant +// :2:10: error: cannot assign to constant diff --git a/test/cases/compile_errors/redefinition_of_enums.zig b/test/cases/compile_errors/redefinition_of_enums.zig new file mode 100644 index 0000000000..641211872e --- /dev/null +++ b/test/cases/compile_errors/redefinition_of_enums.zig @@ -0,0 +1,9 @@ +const A = enum {x}; +const A = enum {x}; + +// error +// backend=stage2 +// target=native +// +// :2:1: error: redeclaration of 'A' +// :1:1: note: other declaration here diff --git a/test/cases/compile_errors/redefinition_of_global_variables.zig b/test/cases/compile_errors/redefinition_of_global_variables.zig new file mode 100644 index 0000000000..ed0d6f3ed9 --- /dev/null +++ b/test/cases/compile_errors/redefinition_of_global_variables.zig @@ -0,0 +1,9 @@ +var a : i32 = 1; +var a : i32 = 2; + +// error +// backend=stage2 +// target=native +// +// :2:1: error: redeclaration of 'a' +// :1:1: note: other declaration here diff --git a/test/cases/compile_errors/redefinition_of_struct.zig b/test/cases/compile_errors/redefinition_of_struct.zig new file mode 100644 index 0000000000..dc6d4abeeb --- /dev/null +++ b/test/cases/compile_errors/redefinition_of_struct.zig @@ -0,0 +1,9 @@ +const A = struct { x : i32, }; +const A = struct { y : i32, }; + +// error +// backend=stage2 +// target=native +// +// :2:1: error: redeclaration of 'A' +// :1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig b/test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig rename to test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig index 99ab1da8a3..3bbc75ce83 100644 --- a/test/cases/compile_errors/stage1/obj/refer_to_the_type_of_a_generic_function.zig +++ b/test/cases/compile_errors/refer_to_the_type_of_a_generic_function.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:5: error: use of undefined value here causes undefined behavior +// :4:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/test/reference_to_const_data.zig b/test/cases/compile_errors/reference_to_const_data.zig similarity index 61% rename from test/cases/compile_errors/stage1/test/reference_to_const_data.zig rename to test/cases/compile_errors/reference_to_const_data.zig index 6c98aefd7a..6bd9d0eb1e 100644 --- a/test/cases/compile_errors/stage1/test/reference_to_const_data.zig +++ b/test/cases/compile_errors/reference_to_const_data.zig @@ -20,11 +20,10 @@ export fn qux() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:3:14: error: cannot assign to constant -// tmp.zig:7:13: error: cannot assign to constant -// tmp.zig:11:13: error: cannot assign to constant -// tmp.zig:19:13: error: cannot assign to constant +// :3:14: error: cannot assign to constant +// :7:13: error: cannot assign to constant +// :11:13: error: cannot assign to constant +// :19:13: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig b/test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig similarity index 69% rename from test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig rename to test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig index 433650cddb..946ead9954 100644 --- a/test/cases/compile_errors/stage1/obj/referring_to_a_struct_that_is_invalid.zig +++ b/test/cases/compile_errors/referring_to_a_struct_that_is_invalid.zig @@ -11,7 +11,8 @@ fn assert(ok: bool) void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:10:14: error: reached unreachable code +// :10:14: error: reached unreachable code +// :6:20: note: called from here diff --git a/test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig b/test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig similarity index 53% rename from test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig rename to test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig index 2013a07e53..ee688c362b 100644 --- a/test/cases/compile_errors/stage1/test/reify_typeOf_with_incompatible_arguments.zig +++ b/test/cases/compile_errors/reify_typeOf_with_incompatible_arguments.zig @@ -5,8 +5,9 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:4:9: error: incompatible types: 'f32' and 'u32' +// :4:9: error: incompatible types: 'f32' and 'u32' +// :4:17: note: type 'f32' here +// :4:24: note: type 'u32' here diff --git a/test/cases/compile_errors/reify_typeOf_with_no_arguments.zig b/test/cases/compile_errors/reify_typeOf_with_no_arguments.zig new file mode 100644 index 0000000000..3e4cb183cd --- /dev/null +++ b/test/cases/compile_errors/reify_typeOf_with_no_arguments.zig @@ -0,0 +1,9 @@ +export fn entry() void { + _ = @TypeOf(); +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: expected at least 1 argument, found 0 diff --git a/test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig b/test/cases/compile_errors/reject_extern_function_definitions_with_body.zig similarity index 55% rename from test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig rename to test/cases/compile_errors/reject_extern_function_definitions_with_body.zig index a7b92e8399..4247ddd463 100644 --- a/test/cases/compile_errors/stage1/test/reject_extern_function_definitions_with_body.zig +++ b/test/cases/compile_errors/reject_extern_function_definitions_with_body.zig @@ -3,8 +3,7 @@ extern "c" fn definitelyNotInLibC(a: i32, b: i32) i32 { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:1:1: error: extern functions have no body +// :1:1: error: extern functions have no body diff --git a/test/cases/compile_errors/reject_extern_variables_with_initializers.zig b/test/cases/compile_errors/reject_extern_variables_with_initializers.zig new file mode 100644 index 0000000000..a52987f185 --- /dev/null +++ b/test/cases/compile_errors/reject_extern_variables_with_initializers.zig @@ -0,0 +1,7 @@ +extern var foo: int = 2; + +// error +// backend=stage2 +// target=native +// +// :1:23: error: extern variables have no initializers diff --git a/test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig b/test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig similarity index 61% rename from test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig rename to test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig index 7499939b4a..201c8c870b 100644 --- a/test/cases/compile_errors/stage1/test/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig +++ b/test/cases/compile_errors/repeated_invalid_field_access_to_generic_function_returning_type_crashes_compiler_2655.zig @@ -7,8 +7,8 @@ test "1" { } // error -// backend=stage1 +// backend=stage2 // target=native // is_test=1 // -// tmp.zig:2:12: error: use of undeclared identifier 'Q' +// :2:12: error: use of undeclared identifier 'Q' diff --git a/test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig b/test/cases/compile_errors/return_from_defer_expression.zig similarity index 78% rename from test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig rename to test/cases/compile_errors/return_from_defer_expression.zig index cbe9542176..e60b8ae848 100644 --- a/test/cases/compile_errors/stage1/obj/return_from_defer_expression.zig +++ b/test/cases/compile_errors/return_from_defer_expression.zig @@ -15,7 +15,7 @@ pub fn maybeInt() ?i32 { export fn entry() usize { return @sizeOf(@TypeOf(testTrickyDefer)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:11: error: 'try' not allowed inside defer expression +// :4:11: error: 'try' not allowed inside defer expression diff --git a/test/cases/compile_errors/return_invalid_type_from_test.zig b/test/cases/compile_errors/return_invalid_type_from_test.zig new file mode 100644 index 0000000000..6cad6af85f --- /dev/null +++ b/test/cases/compile_errors/return_invalid_type_from_test.zig @@ -0,0 +1,8 @@ +test "example" { return 1; } + +// error +// backend=stage2 +// target=native +// is_test=1 +// +// :1:25: error: expected type 'void', found 'comptime_int' diff --git a/test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig b/test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig new file mode 100644 index 0000000000..c312d6db40 --- /dev/null +++ b/test/cases/compile_errors/runtime_cast_to_union_which_has_non-void_fields.zig @@ -0,0 +1,23 @@ +const Letter = enum { A, B, C }; +const Value = union(Letter) { + A: i32, + B, + C, +}; +export fn entry() void { + foo(Letter.A); +} +fn foo(l: Letter) void { + var x: Value = l; + _ = x; +} + +// error +// backend=stage2 +// target=native +// +// :11:20: error: runtime coercion from enum 'tmp.Letter' to union 'tmp.Value' which has non-void fields +// :3:5: note: field 'A' has type 'i32' +// :4:5: note: field 'B' has type 'void' +// :5:5: note: field 'C' has type 'void' +// :2:15: note: union declared here diff --git a/test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig b/test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig new file mode 100644 index 0000000000..3689fa5ec5 --- /dev/null +++ b/test/cases/compile_errors/saturating_arithmetic_does_not_allow_floats.zig @@ -0,0 +1,9 @@ +export fn a() void { + _ = @as(f32, 1.0) +| @as(f32, 1.0); +} + +// error +// backend=stage2 +// target=native +// +// :2:23: error: invalid operands to binary expression: 'Float' and 'Float' diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig b/test/cases/compile_errors/setAlignStack_in_naked_function.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig rename to test/cases/compile_errors/setAlignStack_in_naked_function.zig index b9adc84ed5..79c4ba6f5b 100644 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_in_naked_function.zig +++ b/test/cases/compile_errors/setAlignStack_in_naked_function.zig @@ -3,7 +3,7 @@ export fn entry() callconv(.Naked) void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: @setAlignStack in naked function +// :2:5: error: @setAlignStack in naked function diff --git a/test/cases/compile_errors/setAlignStack_outside_function.zig b/test/cases/compile_errors/setAlignStack_outside_function.zig new file mode 100644 index 0000000000..0c06f867de --- /dev/null +++ b/test/cases/compile_errors/setAlignStack_outside_function.zig @@ -0,0 +1,9 @@ +comptime { + @setAlignStack(16); +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: @setAlignStack outside function body diff --git a/test/cases/compile_errors/setAlignStack_set_twice.zig b/test/cases/compile_errors/setAlignStack_set_twice.zig new file mode 100644 index 0000000000..3c61b26bec --- /dev/null +++ b/test/cases/compile_errors/setAlignStack_set_twice.zig @@ -0,0 +1,11 @@ +export fn entry() void { + @setAlignStack(16); + @setAlignStack(16); +} + +// error +// backend=stage2 +// target=native +// +// :3:5: error: multiple @setAlignStack in the same function body +// :2:5: note: other instance here diff --git a/test/cases/compile_errors/setAlignStack_too_big.zig b/test/cases/compile_errors/setAlignStack_too_big.zig new file mode 100644 index 0000000000..5ee96041e0 --- /dev/null +++ b/test/cases/compile_errors/setAlignStack_too_big.zig @@ -0,0 +1,9 @@ +export fn entry() void { + @setAlignStack(511 + 1); +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: attempt to @setAlignStack(512); maximum is 256 diff --git a/test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig b/test/cases/compile_errors/setting_a_section_on_a_local_variable.zig similarity index 58% rename from test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig rename to test/cases/compile_errors/setting_a_section_on_a_local_variable.zig index 90d605dc40..2d31ef1750 100644 --- a/test/cases/compile_errors/stage1/obj/setting_a_section_on_a_local_variable.zig +++ b/test/cases/compile_errors/setting_a_section_on_a_local_variable.zig @@ -4,7 +4,7 @@ export fn entry() i32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:30: error: cannot set section of local variable 'foo' +// :2:30: error: cannot set section of local variable 'foo' diff --git a/test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig b/test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig similarity index 54% rename from test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig rename to test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig index d9b9bbfce3..a2104d1aa6 100644 --- a/test/cases/compile_errors/stage1/obj/shifting_RHS_is_log2_of_LHS_int_bit_width.zig +++ b/test/cases/compile_errors/shifting_RHS_is_log2_of_LHS_int_bit_width.zig @@ -3,7 +3,7 @@ export fn entry(x: u8, y: u8) u8 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:17: error: expected type 'u3', found 'u8' +// :2:17: error: expected type 'u3', found 'u8' diff --git a/test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig b/test/cases/compile_errors/slicing_single-item_pointer.zig similarity index 60% rename from test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig rename to test/cases/compile_errors/slicing_single-item_pointer.zig index d8c82fa3af..6b3021e5e0 100644 --- a/test/cases/compile_errors/stage1/obj/slicing_single-item_pointer.zig +++ b/test/cases/compile_errors/slicing_single-item_pointer.zig @@ -4,7 +4,7 @@ export fn entry(ptr: *i32) void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:22: error: slice of single-item pointer +// :2:22: error: slice of single-item pointer diff --git a/test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig b/test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig deleted file mode 100644 index caddf36a84..0000000000 --- a/test/cases/compile_errors/stage1/obj/access_non-existent_member_of_error_set.zig +++ /dev/null @@ -1,11 +0,0 @@ -const Foo = error{A}; -comptime { - const z = Foo.Bar; - _ = z; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:18: error: no error named 'Bar' in 'Foo' diff --git a/test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig deleted file mode 100644 index 38e4fef81b..0000000000 --- a/test/cases/compile_errors/stage1/obj/add_assign_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - a += a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig b/test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig deleted file mode 100644 index 4a66f9c102..0000000000 --- a/test/cases/compile_errors/stage1/obj/add_on_undefined_value.zig +++ /dev/null @@ -1,10 +0,0 @@ -comptime { - var a: i64 = undefined; - _ = a + a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/address_of_number_literal.zig b/test/cases/compile_errors/stage1/obj/address_of_number_literal.zig deleted file mode 100644 index 76d321929d..0000000000 --- a/test/cases/compile_errors/stage1/obj/address_of_number_literal.zig +++ /dev/null @@ -1,10 +0,0 @@ -const x = 3; -const y = &x; -fn foo() *const i32 { return y; } -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:30: error: expected type '*const i32', found '*const comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig deleted file mode 100644 index 7d16a0d60e..0000000000 --- a/test/cases/compile_errors/stage1/obj/array_access_of_undeclared_identifier.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - i[i] = i[i]; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: use of undeclared identifier 'i' diff --git a/test/cases/compile_errors/stage1/obj/assign_unreachable.zig b/test/cases/compile_errors/stage1/obj/assign_unreachable.zig deleted file mode 100644 index f87adcd994..0000000000 --- a/test/cases/compile_errors/stage1/obj/assign_unreachable.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() void { - const a = return; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: unreachable code -// tmp.zig:2:15: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig b/test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig deleted file mode 100644 index 8a01871a80..0000000000 --- a/test/cases/compile_errors/stage1/obj/atomic_orderings_of_fence_Acquire_or_stricter.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - @fence(.Monotonic); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:12: error: atomic ordering must be Acquire or stricter diff --git a/test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig b/test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig deleted file mode 100644 index 58eb9d19d2..0000000000 --- a/test/cases/compile_errors/stage1/obj/attempt_to_close_over_comptime_variable_from_outer_scope.zig +++ /dev/null @@ -1,14 +0,0 @@ -fn SimpleList(comptime L: usize) type { - var T = u8; - return struct { - array: [L]T, - }; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:19: error: mutable 'T' not accessible from here -// tmp.zig:2:9: note: declared mutable here -// tmp.zig:3:12: note: crosses namespace boundary here diff --git a/test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig b/test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig deleted file mode 100644 index c749b172c6..0000000000 --- a/test/cases/compile_errors/stage1/obj/attempted_double_ampersand.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry(a: bool, b: bool) i32 { - if (a && b) { - return 1234; - } - return 5678; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: ambiguous use of '&&'; use 'and' for logical AND, or change whitespace to ' & &' for bitwise AND diff --git a/test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig b/test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig deleted file mode 100644 index b991b1b61b..0000000000 --- a/test/cases/compile_errors/stage1/obj/attempted_double_pipe_on_boolean_values.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn entry(a: bool, b: bool) i32 { - if (a || b) { - return 1234; - } - return 5678; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: expected error set type, found 'bool' -// tmp.zig:2:11: note: `||` merges error sets; `or` performs boolean OR diff --git a/test/cases/compile_errors/stage1/obj/bad_import.zig b/test/cases/compile_errors/stage1/obj/bad_import.zig deleted file mode 100644 index 1a7ab5f00b..0000000000 --- a/test/cases/compile_errors/stage1/obj/bad_import.zig +++ /dev/null @@ -1,7 +0,0 @@ -const bogus = @import("bogus-does-not-exist.zig",); - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:23: error: unable to load '${DIR}bogus-does-not-exist.zig': FileNotFound diff --git a/test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig b/test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig deleted file mode 100644 index 9150dc3285..0000000000 --- a/test/cases/compile_errors/stage1/obj/bitCast_same_size_but_bit_count_mismatch.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry(byte: u8) void { - var oops = @bitCast(u7, byte); - _ = oops; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:25: error: destination type 'u7' has 7 bits but source type 'u8' has 8 bits diff --git a/test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig b/test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig deleted file mode 100644 index 64caef7cd0..0000000000 --- a/test/cases/compile_errors/stage1/obj/bitCast_with_different_sizes_inside_an_expression.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - var foo = (@bitCast(u8, @as(f32, 1.0)) == 0xf); - _ = foo; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:25: error: destination type 'u8' has size 1 but source type 'f32' has size 4 diff --git a/test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig b/test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig deleted file mode 100644 index 7d1c5873a1..0000000000 --- a/test/cases/compile_errors/stage1/obj/bit_shifting_only_works_on_integer_types.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x = &@as(u8, 1) << 10; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:16: error: bit shifting operation expected integer type, found '*const u8' diff --git a/test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig b/test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig deleted file mode 100644 index 3ede578b34..0000000000 --- a/test/cases/compile_errors/stage1/obj/bogus_method_call_on_slice.zig +++ /dev/null @@ -1,11 +0,0 @@ -var self = "aoeu"; -fn f(m: []const u8) void { - m.copy(u8, self[0..], m); -} -export fn entry() usize { return @sizeOf(@TypeOf(f)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:6: error: no member named 'copy' in '[]const u8' diff --git a/test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig b/test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig deleted file mode 100644 index 763e0c8a23..0000000000 --- a/test/cases/compile_errors/stage1/obj/cast_negative_integer_literal_to_usize.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const x = @as(usize, -10); - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:26: error: cannot cast negative value -10 to unsigned integer type 'usize' diff --git a/test/cases/compile_errors/stage1/obj/cast_unreachable.zig b/test/cases/compile_errors/stage1/obj/cast_unreachable.zig deleted file mode 100644 index b043108737..0000000000 --- a/test/cases/compile_errors/stage1/obj/cast_unreachable.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn f() i32 { - return @as(i32, return 1); -} -export fn entry() void { _ = f(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:12: error: unreachable code -// tmp.zig:2:21: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig b/test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig deleted file mode 100644 index 344edbaa9f..0000000000 --- a/test/cases/compile_errors/stage1/obj/colliding_invalid_top_level_functions.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn func() bogus {} -fn func() bogus {} -export fn entry() usize { return @sizeOf(@TypeOf(func)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:1: error: redeclaration of 'func' -// tmp.zig:1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig b/test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig deleted file mode 100644 index c3cf9e76e5..0000000000 --- a/test/cases/compile_errors/stage1/obj/comptime_cast_enum_to_union_but_field_has_payload.zig +++ /dev/null @@ -1,17 +0,0 @@ -const Letter = enum { A, B, C }; -const Value = union(Letter) { - A: i32, - B, - C, -}; -export fn entry() void { - var x: Value = Letter.A; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:8:26: error: cast to union 'Value' must initialize 'i32' field 'A' -// tmp.zig:3:5: note: field 'A' declared here diff --git a/test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig b/test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig deleted file mode 100644 index b90878abeb..0000000000 --- a/test/cases/compile_errors/stage1/obj/const_is_a_statement_not_an_expression.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - (const a = 0); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:6: error: expected expression, found 'const' diff --git a/test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig b/test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig deleted file mode 100644 index cb2c3e9f6e..0000000000 --- a/test/cases/compile_errors/stage1/obj/control_flow_uses_comptime_var_at_runtime.zig +++ /dev/null @@ -1,15 +0,0 @@ -export fn foo() void { - comptime var i = 0; - while (i < 5) : (i += 1) { - bar(); - } -} - -fn bar() void { } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: control flow attempts to use compile-time variable at runtime -// tmp.zig:3:24: note: compile-time variable assigned here diff --git a/test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig b/test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig deleted file mode 100644 index 46b0257ed5..0000000000 --- a/test/cases/compile_errors/stage1/obj/declaration_with_same_name_as_primitive_must_use_special_syntax.zig +++ /dev/null @@ -1,12 +0,0 @@ -const u8 = u16; -export fn entry() void { - const a: u8 = 300; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:7: error: name shadows primitive 'u8' -// tmp.zig:1:7: note: consider using @"u8" to disambiguate diff --git a/test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig deleted file mode 100644 index 1e3b3bf6db..0000000000 --- a/test/cases/compile_errors/stage1/obj/deduplicate_undeclared_identifier.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn a() void { - x += 1; -} -export fn b() void { - x += 1; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: use of undeclared identifier 'x' diff --git a/test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig b/test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig deleted file mode 100644 index b824c93131..0000000000 --- a/test/cases/compile_errors/stage1/obj/empty_for_loop_body.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a() void { - for(undefined) |x|; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:23: error: expected block or assignment, found ';' diff --git a/test/cases/compile_errors/stage1/obj/empty_if_body.zig b/test/cases/compile_errors/stage1/obj/empty_if_body.zig deleted file mode 100644 index 0a7b5b1b8b..0000000000 --- a/test/cases/compile_errors/stage1/obj/empty_if_body.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a() void { - if(true); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:13: error: expected block or assignment, found ';' diff --git a/test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig b/test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig deleted file mode 100644 index 01b2132518..0000000000 --- a/test/cases/compile_errors/stage1/obj/empty_while_loop_body.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a() void { - while(true); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:16: error: expected block or assignment, found ';' diff --git a/test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig b/test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig deleted file mode 100644 index 9ee18f51ca..0000000000 --- a/test/cases/compile_errors/stage1/obj/enum_with_0_fields.zig +++ /dev/null @@ -1,7 +0,0 @@ -const Foo = enum {}; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:13: error: enum declarations must have at least one tag diff --git a/test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig b/test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig deleted file mode 100644 index 2a3c795f81..0000000000 --- a/test/cases/compile_errors/stage1/obj/exceeded_maximum_bit_width_of_integer.zig +++ /dev/null @@ -1,15 +0,0 @@ -export fn entry1() void { - const T = u65536; - _ = T; -} -export fn entry2() void { - var x: i65536 = 1; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: primitive integer type 'u65536' exceeds maximum bit width of 65535 -// tmp.zig:6:12: error: primitive integer type 'i65536' exceeds maximum bit width of 65535 diff --git a/test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig b/test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig deleted file mode 100644 index 696fef57fa..0000000000 --- a/test/cases/compile_errors/stage1/obj/explicit_cast_float_literal_to_integer_when_there_is_a_fraction_component.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() i32 { - return @as(i32, 12.34); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: fractional component prevents float value 12.340000 from being casted to type 'i32' diff --git a/test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig b/test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig deleted file mode 100644 index d6ba214c0c..0000000000 --- a/test/cases/compile_errors/stage1/obj/field_type_supplied_in_an_enum.zig +++ /dev/null @@ -1,12 +0,0 @@ -const Letter = enum { - A: void, - B, - C, -}; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:8: error: enum fields do not have types -// tmp.zig:1:16: note: consider 'union(enum)' here to make it a tagged union diff --git a/test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig b/test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig deleted file mode 100644 index 897b298a3d..0000000000 --- a/test/cases/compile_errors/stage1/obj/function_with_invalid_return_type.zig +++ /dev/null @@ -1,7 +0,0 @@ -export fn foo() boid {} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:17: error: use of undeclared identifier 'boid' diff --git a/test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig b/test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig deleted file mode 100644 index e9aeacdd4e..0000000000 --- a/test/cases/compile_errors/stage1/obj/hasDecl_with_non-container.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - _ = @hasDecl(i32, "hi"); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:18: error: expected struct, enum, or union; found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig b/test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig deleted file mode 100644 index 53afb2792a..0000000000 --- a/test/cases/compile_errors/stage1/obj/if_condition_is_bool_not_int.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - if (0) {} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: expected type 'bool', found 'comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/ignored_statement_value.zig b/test/cases/compile_errors/stage1/obj/ignored_statement_value.zig deleted file mode 100644 index a0e540a92b..0000000000 --- a/test/cases/compile_errors/stage1/obj/ignored_statement_value.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn foo() void { - 1; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/import_outside_package_path.zig b/test/cases/compile_errors/stage1/obj/import_outside_package_path.zig deleted file mode 100644 index 5a712c2e01..0000000000 --- a/test/cases/compile_errors/stage1/obj/import_outside_package_path.zig +++ /dev/null @@ -1,9 +0,0 @@ -comptime{ - _ = @import("../a.zig"); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: import of file outside package path: '../a.zig' diff --git a/test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig b/test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig deleted file mode 100644 index b91242322d..0000000000 --- a/test/cases/compile_errors/stage1/obj/inferring_error_set_of_function_pointer.zig +++ /dev/null @@ -1,9 +0,0 @@ -comptime { - const z: ?fn()!void = null; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:19: error: function prototype may not have inferred error set diff --git a/test/cases/compile_errors/stage1/obj/invalid_break_expression.zig b/test/cases/compile_errors/stage1/obj/invalid_break_expression.zig deleted file mode 100644 index efb76a34f7..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_break_expression.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - break; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: break expression outside loop diff --git a/test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig b/test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig deleted file mode 100644 index 00f3c5a3d5..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_continue_expression.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - continue; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: continue expression outside loop diff --git a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig b/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig deleted file mode 100644 index 431401c534..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-1.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0x1.0p1ab1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:28: note: invalid byte: 'a' diff --git a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig b/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig deleted file mode 100644 index 088b43546c..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_exponent_in_float_literal-2.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0x1.0p50F; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:29: note: invalid byte: 'F' diff --git a/test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig b/test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig deleted file mode 100644 index 2630a704ed..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_field_access_in_comptime.zig +++ /dev/null @@ -1,7 +0,0 @@ -comptime { var x = doesnt_exist.whatever; _ = x; } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:20: error: use of undeclared identifier 'doesnt_exist' diff --git a/test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig b/test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig deleted file mode 100644 index b81a814a60..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_legacy_unicode_escape.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - const a = '\U1234'; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:15: error: expected expression, found 'invalid bytes' -// tmp.zig:2:18: note: invalid byte: '1' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig deleted file mode 100644 index a3e2827f31..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-1.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0._0; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:23: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig deleted file mode 100644 index 7d33244483..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-10.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1.0__0e-1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:25: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig deleted file mode 100644 index fa4f5b8975..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-11.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1.0e-1__0; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:28: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig deleted file mode 100644 index 2d36187711..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-12.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0_x0.0; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:23: note: invalid byte: 'x' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig deleted file mode 100644 index 21b044121c..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-13.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0x_0.0; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:23: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig deleted file mode 100644 index adb0727eba..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-14.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0x0.0_p1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:27: note: invalid byte: 'p' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig deleted file mode 100644 index 16618c6a18..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-2.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0_.0; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:23: note: invalid byte: '.' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig deleted file mode 100644 index 09e9e20b4b..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-3.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 0.0_; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:25: note: invalid byte: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig deleted file mode 100644 index 278ee35f5f..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-4.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1.0e_1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:25: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig deleted file mode 100644 index 4912c15e50..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-5.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1.0e+_1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:26: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig deleted file mode 100644 index 3386c860b9..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-6.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1.0e-_1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:26: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig deleted file mode 100644 index c0e57424a9..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-7.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1.0e-1_; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig deleted file mode 100644 index f7475332c1..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_float_literal-9.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: f128 = 1__0.0e-1; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:23: note: invalid byte: '_' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig deleted file mode 100644 index 9cea337db4..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-1.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: u128 = 0010_; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:26: note: invalid byte: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig deleted file mode 100644 index 5f02479f2e..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-2.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: u128 = 0b0010_; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig deleted file mode 100644 index aed4cb9068..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-3.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: u128 = 0o0010_; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig b/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig deleted file mode 100644 index dce2771048..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_underscore_placement_in_int_literal-4.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn main() void { - var bad: u128 = 0x0010_; - _ = bad; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:21: error: expected expression, found 'invalid bytes' -// tmp.zig:2:28: note: invalid byte: ';' diff --git a/test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig b/test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig deleted file mode 100644 index 6d55f3b04f..0000000000 --- a/test/cases/compile_errors/stage1/obj/invalid_union_field_access_in_comptime.zig +++ /dev/null @@ -1,15 +0,0 @@ -const Foo = union { - Bar: u8, - Baz: void, -}; -comptime { - var foo = Foo {.Baz = {}}; - const bar_val = foo.Bar; - _ = bar_val; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:7:24: error: accessing union field 'Bar' while field 'Baz' is set diff --git a/test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig b/test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig deleted file mode 100644 index d12bff2b49..0000000000 --- a/test/cases/compile_errors/stage1/obj/issue_9346_return_outside_of_function_scope.zig +++ /dev/null @@ -1,7 +0,0 @@ -pub const empty = return 1; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:19: error: 'return' outside function scope diff --git a/test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig b/test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig deleted file mode 100644 index 4b9b58871f..0000000000 --- a/test/cases/compile_errors/stage1/obj/local_shadows_global_that_occurs_later.zig +++ /dev/null @@ -1,12 +0,0 @@ -pub fn main() void { - var foo = true; - _ = foo; -} -fn foo() void {} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: local shadows declaration of 'foo' -// tmp.zig:5:1: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig b/test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig deleted file mode 100644 index 79eba0d428..0000000000 --- a/test/cases/compile_errors/stage1/obj/local_variable_redeclaration.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn f() void { - const a : i32 = 0; - var a = 0; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:9: error: redeclaration of local constant 'a' -// tmp.zig:2:11: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig b/test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig deleted file mode 100644 index 854ef080c5..0000000000 --- a/test/cases/compile_errors/stage1/obj/local_variable_redeclares_parameter.zig +++ /dev/null @@ -1,11 +0,0 @@ -fn f(a : i32) void { - const a = 0; -} -export fn entry() void { f(1); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: redeclaration of function parameter 'a' -// tmp.zig:1:6: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig b/test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig deleted file mode 100644 index e66a2082ea..0000000000 --- a/test/cases/compile_errors/stage1/obj/locally_shadowing_a_primitive_type.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn foo() void { - const u8 = u16; - const a: u8 = 300; - _ = a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:11: error: name shadows primitive 'u8' -// tmp.zig:2:11: note: consider using @"u8" to disambiguate diff --git a/test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig b/test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig deleted file mode 100644 index 5808ab90ec..0000000000 --- a/test/cases/compile_errors/stage1/obj/main_function_with_bogus_args_type.zig +++ /dev/null @@ -1,7 +0,0 @@ -pub fn main(args: [][]bogus) !void {_ = args;} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:23: error: use of undeclared identifier 'bogus' diff --git a/test/cases/compile_errors/stage1/obj/missing_function_name.zig b/test/cases/compile_errors/stage1/obj/missing_function_name.zig deleted file mode 100644 index cd9a3ca7ee..0000000000 --- a/test/cases/compile_errors/stage1/obj/missing_function_name.zig +++ /dev/null @@ -1,8 +0,0 @@ -fn () void {} -export fn entry() usize { return @sizeOf(@TypeOf(f)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:1: error: missing function name diff --git a/test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig b/test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig deleted file mode 100644 index baa4a43048..0000000000 --- a/test/cases/compile_errors/stage1/obj/multiple_function_definitions.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn a() void {} -fn a() void {} -export fn entry() void { a(); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:1: error: redeclaration of 'a' -// tmp.zig:1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig b/test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig deleted file mode 100644 index f6c1d1b1b9..0000000000 --- a/test/cases/compile_errors/stage1/obj/normal_string_with_newline.zig +++ /dev/null @@ -1,9 +0,0 @@ -const foo = "a -b"; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:13: error: expected expression, found 'invalid bytes' -// tmp.zig:1:15: note: invalid byte: '\n' diff --git a/test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig b/test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig deleted file mode 100644 index 528eee8374..0000000000 --- a/test/cases/compile_errors/stage1/obj/parameter_redeclaration.zig +++ /dev/null @@ -1,10 +0,0 @@ -fn f(a : i32, a : i32) void { -} -export fn entry() void { f(1, 2); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:15: error: redeclaration of function parameter 'a' -// tmp.zig:1:6: note: previous declaration here diff --git a/test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig b/test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig deleted file mode 100644 index 6542aa6968..0000000000 --- a/test/cases/compile_errors/stage1/obj/pointer_arithmetic_on_pointer-to-array.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn foo() void { - var x: [10]u8 = undefined; - var y = &x; - var z = y + 1; - _ = z; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:4:17: error: integer value 1 cannot be coerced to type '*[10]u8' diff --git a/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig b/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig index 2e21d45c12..066bf1c107 100644 --- a/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig +++ b/test/cases/compile_errors/stage1/obj/prevent_bad_implicit_casting_of_anyframe_types.zig @@ -19,6 +19,6 @@ fn func() void {} // backend=stage1 // target=native // -// tmp.zig:3:28: error: expected type 'anyframe->i32', found 'anyframe' -// tmp.zig:8:28: error: expected type 'anyframe->i32', found 'i32' -// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)' +// :3:28: error: expected type 'anyframe->i32', found 'anyframe' +// :8:28: error: expected type 'anyframe->i32', found 'i32' +// tmp.zig:13:29: error: expected type 'anyframe->i32', found '*@Frame(func)' \ No newline at end of file diff --git a/test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig b/test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig deleted file mode 100644 index a95eb88935..0000000000 --- a/test/cases/compile_errors/stage1/obj/redefinition_of_enums.zig +++ /dev/null @@ -1,9 +0,0 @@ -const A = enum {x}; -const A = enum {x}; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:1: error: redeclaration of 'A' -// tmp.zig:1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig b/test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig deleted file mode 100644 index 3651946ffe..0000000000 --- a/test/cases/compile_errors/stage1/obj/redefinition_of_global_variables.zig +++ /dev/null @@ -1,9 +0,0 @@ -var a : i32 = 1; -var a : i32 = 2; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:1: error: redeclaration of 'a' -// tmp.zig:1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig b/test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig deleted file mode 100644 index 8367a05e43..0000000000 --- a/test/cases/compile_errors/stage1/obj/redefinition_of_struct.zig +++ /dev/null @@ -1,9 +0,0 @@ -const A = struct { x : i32, }; -const A = struct { y : i32, }; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:1: error: redeclaration of 'A' -// tmp.zig:1:1: note: other declaration here diff --git a/test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig b/test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig deleted file mode 100644 index d25c815c7e..0000000000 --- a/test/cases/compile_errors/stage1/obj/runtime_cast_to_union_which_has_non-void_fields.zig +++ /dev/null @@ -1,20 +0,0 @@ -const Letter = enum { A, B, C }; -const Value = union(Letter) { - A: i32, - B, - C, -}; -export fn entry() void { - foo(Letter.A); -} -fn foo(l: Letter) void { - var x: Value = l; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:11:20: error: runtime cast to union 'Value' which has non-void fields -// tmp.zig:3:5: note: field 'A' has type 'i32' diff --git a/test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig b/test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig deleted file mode 100644 index 7bda134af6..0000000000 --- a/test/cases/compile_errors/stage1/obj/saturating_arithmetic_does_not_allow_floats.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a() void { - _ = @as(f32, 1.0) +| @as(f32, 1.0); -} - -// error -// backend=stage1 -// target=native -// -// error: invalid operands to binary expression: 'f32' and 'f32' diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig deleted file mode 100644 index 754756012b..0000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_outside_function.zig +++ /dev/null @@ -1,9 +0,0 @@ -comptime { - @setAlignStack(16); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: @setAlignStack outside function diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig deleted file mode 100644 index 244db9d962..0000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_set_twice.zig +++ /dev/null @@ -1,11 +0,0 @@ -export fn entry() void { - @setAlignStack(16); - @setAlignStack(16); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:5: error: alignstack set twice -// tmp.zig:2:5: note: first set here diff --git a/test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig b/test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig deleted file mode 100644 index 601631e158..0000000000 --- a/test/cases/compile_errors/stage1/obj/setAlignStack_too_big.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn entry() void { - @setAlignStack(511 + 1); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: attempt to @setAlignStack(512); maximum is 256 diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig b/test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig deleted file mode 100644 index 940338edb9..0000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-non_exhaustive_integer_prongs.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn foo(x: u8) void { - switch (x) { - 0 => {}, - } -} -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig b/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig deleted file mode 100644 index 90abf5074b..0000000000 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u1.zig +++ /dev/null @@ -1,14 +0,0 @@ -fn foo(x: u1) void { - switch (x) { - 0 => {}, - 1 => {}, - else => {}, - } -} -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:9: error: unreachable else prong, all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig b/test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig deleted file mode 100644 index 97f7de121d..0000000000 --- a/test/cases/compile_errors/stage1/obj/switch_on_enum_with_1_field_with_no_prongs.zig +++ /dev/null @@ -1,12 +0,0 @@ -const Foo = enum { M }; - -export fn entry() void { - var f = Foo.M; - switch (f) {} -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:5: error: enumeration value 'Foo.M' not handled in switch diff --git a/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig b/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig index f8cadf8520..8273e24b99 100644 --- a/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig +++ b/test/cases/compile_errors/stage1/obj/type_variables_must_be_constant.zig @@ -7,4 +7,4 @@ export fn entry() foo { // backend=stage1 // target=native // -// tmp.zig:1:1: error: variable of type 'type' must be constant +// :1:1: error: variable of type 'type' must be constant diff --git a/test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig b/test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig deleted file mode 100644 index b6eb059661..0000000000 --- a/test/cases/compile_errors/stage1/obj/undefined_as_field_type_is_rejected.zig +++ /dev/null @@ -1,13 +0,0 @@ -const Foo = struct { - a: undefined, -}; -export fn entry1() void { - const foo: Foo = undefined; - _ = foo; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:8: error: use of undefined value here causes undefined behavior diff --git a/test/cases/compile_errors/stage1/obj/undefined_function_call.zig b/test/cases/compile_errors/stage1/obj/undefined_function_call.zig deleted file mode 100644 index a9627961fe..0000000000 --- a/test/cases/compile_errors/stage1/obj/undefined_function_call.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn a() void { - b(); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig b/test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig deleted file mode 100644 index 94568d55c3..0000000000 --- a/test/cases/compile_errors/stage1/obj/union_fields_with_value_assignments.zig +++ /dev/null @@ -1,14 +0,0 @@ -const MultipleChoice = union { - A: i32 = 20, -}; -export fn entry() void { - var x: MultipleChoice = undefined; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:24: error: explicitly valued tagged union missing integer tag type -// tmp.zig:2:14: note: tag value specified here diff --git a/test/cases/compile_errors/stage1/obj/union_with_0_fields.zig b/test/cases/compile_errors/stage1/obj/union_with_0_fields.zig deleted file mode 100644 index a6f3d69faa..0000000000 --- a/test/cases/compile_errors/stage1/obj/union_with_0_fields.zig +++ /dev/null @@ -1,7 +0,0 @@ -const Foo = union {}; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:13: error: union declarations must have at least one tag diff --git a/test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig b/test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig deleted file mode 100644 index 8a80fcd161..0000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_code-nested_returns.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn a() i32 { - return return 1; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: unreachable code -// tmp.zig:2:12: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/unreachable_code.zig b/test/cases/compile_errors/stage1/obj/unreachable_code.zig deleted file mode 100644 index 30a92d06bf..0000000000 --- a/test/cases/compile_errors/stage1/obj/unreachable_code.zig +++ /dev/null @@ -1,13 +0,0 @@ -export fn a() void { - return; - b(); -} - -fn b() void {} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:6: error: unreachable code -// tmp.zig:2:5: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig b/test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig deleted file mode 100644 index c1297731a3..0000000000 --- a/test/cases/compile_errors/stage1/obj/use_of_undeclared_identifier.zig +++ /dev/null @@ -1,9 +0,0 @@ -export fn f() void { - b = 3; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig b/test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig deleted file mode 100644 index 86b5f0dcfb..0000000000 --- a/test/cases/compile_errors/stage1/obj/usingnamespace_with_wrong_type.zig +++ /dev/null @@ -1,7 +0,0 @@ -usingnamespace void; - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:1: error: expected struct, enum, or union; found 'void' diff --git a/test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig b/test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig deleted file mode 100644 index 52dcf150de..0000000000 --- a/test/cases/compile_errors/stage1/obj/variable_has_wrong_type.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn f() i32 { - const a = "a"; - return a; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:3:12: error: expected type 'i32', found '*const [1:0]u8' diff --git a/test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig b/test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig deleted file mode 100644 index e2ba9183be..0000000000 --- a/test/cases/compile_errors/stage1/obj/variable_with_type_noreturn.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry9() void { - var z: noreturn = return; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:5: error: unreachable code -// tmp.zig:2:23: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig b/test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig deleted file mode 100644 index 2157fe6a71..0000000000 --- a/test/cases/compile_errors/stage1/obj/volatile_on_global_assembly.zig +++ /dev/null @@ -1,9 +0,0 @@ -comptime { - asm volatile (""); -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:2:9: error: volatile is meaningless on global assembly diff --git a/test/cases/compile_errors/stage1/test/bad_splat_type.zig b/test/cases/compile_errors/stage1/test/bad_splat_type.zig deleted file mode 100644 index 94e3d052a6..0000000000 --- a/test/cases/compile_errors/stage1/test/bad_splat_type.zig +++ /dev/null @@ -1,12 +0,0 @@ -export fn entry() void { - const c = 4; - var v = @splat(4, c); - _ = v; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:23: error: vector element type must be integer, float, bool, or pointer; 'comptime_int' is invalid diff --git a/test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig b/test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig deleted file mode 100644 index 609af248df..0000000000 --- a/test/cases/compile_errors/stage1/test/non-exhaustive_enum_marker_assigned_a_value.zig +++ /dev/null @@ -1,20 +0,0 @@ -const A = enum { - a, - b, - _ = 1, -}; -const B = enum { - a, - b, - _, -}; -comptime { _ = A; _ = B; } - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:4:9: error: '_' is used to mark an enum as non-exhaustive and cannot be assigned a value -// tmp.zig:6:11: error: non-exhaustive enum missing integer tag type -// tmp.zig:9:5: note: marked non-exhaustive here diff --git a/test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig b/test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig deleted file mode 100644 index 3b5f8af7cb..0000000000 --- a/test/cases/compile_errors/stage1/test/non-exhaustive_enums.zig +++ /dev/null @@ -1,22 +0,0 @@ -const B = enum(u1) { - a, - _, - b, -}; -const C = enum(u1) { - a, - b, - _, -}; -pub export fn entry() void { - _ = B; - _ = C; -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:3:5: error: '_' field of non-exhaustive enum must be last -// tmp.zig:6:11: error: non-exhaustive enum specifies every value diff --git a/test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig b/test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig deleted file mode 100644 index 0626d45393..0000000000 --- a/test/cases/compile_errors/stage1/test/reify_typeOf_with_no_arguments.zig +++ /dev/null @@ -1,10 +0,0 @@ -export fn entry() void { - _ = @TypeOf(); -} - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:2:9: error: expected at least 1 argument, found 0 diff --git a/test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig b/test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig deleted file mode 100644 index 54239e0948..0000000000 --- a/test/cases/compile_errors/stage1/test/reject_extern_variables_with_initializers.zig +++ /dev/null @@ -1,8 +0,0 @@ -extern var foo: int = 2; - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:1:23: error: extern variables have no initializers diff --git a/test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig b/test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig deleted file mode 100644 index 590ac30918..0000000000 --- a/test/cases/compile_errors/stage1/test/return_invalid_type_from_test.zig +++ /dev/null @@ -1,8 +0,0 @@ -test "example" { return 1; } - -// error -// backend=stage1 -// target=native -// is_test=1 -// -// tmp.zig:1:25: error: expected type 'void', found 'comptime_int' diff --git a/test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig b/test/cases/compile_errors/struct_field_missing_type.zig similarity index 66% rename from test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig rename to test/cases/compile_errors/struct_field_missing_type.zig index 175f1c7df7..0e9151a5eb 100644 --- a/test/cases/compile_errors/stage1/obj/struct_field_missing_type.zig +++ b/test/cases/compile_errors/struct_field_missing_type.zig @@ -7,7 +7,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: struct field missing type +// :2:5: error: struct field missing type diff --git a/test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig b/test/cases/compile_errors/struct_init_syntax_for_array.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig rename to test/cases/compile_errors/struct_init_syntax_for_array.zig index 6362e05114..025d0057fe 100644 --- a/test/cases/compile_errors/stage1/obj/struct_init_syntax_for_array.zig +++ b/test/cases/compile_errors/struct_init_syntax_for_array.zig @@ -4,7 +4,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:13: error: initializing array with struct syntax +// :1:13: error: initializing array with struct syntax diff --git a/test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig b/test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig rename to test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig index 409020ca25..81864160dc 100644 --- a/test/cases/compile_errors/stage1/obj/struct_with_declarations_unavailable_for_reify_type.zig +++ b/test/cases/compile_errors/struct_with_declarations_unavailable_for_reify_type.zig @@ -3,7 +3,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: Type.Struct.decls must be empty for @Type +// :2:9: error: reified structs must have no decls diff --git a/test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig b/test/cases/compile_errors/struct_with_invalid_field.zig similarity index 85% rename from test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig rename to test/cases/compile_errors/struct_with_invalid_field.zig index dcc9d26f65..aa24b029bb 100644 --- a/test/cases/compile_errors/stage1/obj/struct_with_invalid_field.zig +++ b/test/cases/compile_errors/struct_with_invalid_field.zig @@ -24,7 +24,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:14:17: error: use of undeclared identifier 'HeaderValue' +// :14:17: error: use of undeclared identifier 'HeaderValue' diff --git a/test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig b/test/cases/compile_errors/suspend_inside_suspend_block.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig rename to test/cases/compile_errors/suspend_inside_suspend_block.zig index 4adffd2f25..482515f905 100644 --- a/test/cases/compile_errors/stage1/obj/suspend_inside_suspend_block.zig +++ b/test/cases/compile_errors/suspend_inside_suspend_block.zig @@ -9,8 +9,8 @@ fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:9: error: cannot suspend inside suspend block -// tmp.zig:5:5: note: other suspend block here +// :6:9: error: cannot suspend inside suspend block +// :5:5: note: other suspend block here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig rename to test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig index 056aebe3dd..7011f0a2d5 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong.zig +++ b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong.zig @@ -14,11 +14,11 @@ fn f(n: Number) i32 { } } -export fn entry() usize { return @sizeOf(@TypeOf(f)); } +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:13:15: error: duplicate switch value -// tmp.zig:10:15: note: other value here +// :13:15: error: duplicate switch value +// :10:15: note: previous value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig rename to test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig index 4d891c3917..89f1959375 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_enumeration_prong_when_else_present.zig +++ b/test/cases/compile_errors/switch_expression-duplicate_enumeration_prong_when_else_present.zig @@ -15,11 +15,11 @@ fn f(n: Number) i32 { } } -export fn entry() usize { return @sizeOf(@TypeOf(f)); } +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:13:15: error: duplicate switch value -// tmp.zig:10:15: note: other value here +// :13:15: error: duplicate switch value +// :10:15: note: previous value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig b/test/cases/compile_errors/switch_expression-duplicate_type.zig similarity index 70% rename from test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig rename to test/cases/compile_errors/switch_expression-duplicate_type.zig index b84c4622a2..59c9b0657a 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type.zig +++ b/test/cases/compile_errors/switch_expression-duplicate_type.zig @@ -10,8 +10,8 @@ fn foo(comptime T: type, x: T) u8 { export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:9: error: duplicate switch value -// tmp.zig:4:9: note: previous value here +// :6:9: error: duplicate switch value +// :4:9: note: previous value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig b/test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig similarity index 74% rename from test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig rename to test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig index 057e674e5a..797d2bd50d 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-duplicate_type_struct_alias.zig +++ b/test/cases/compile_errors/switch_expression-duplicate_type_struct_alias.zig @@ -14,8 +14,8 @@ fn foo(comptime T: type, x: T) u8 { export fn entry() usize { return @sizeOf(@TypeOf(foo(u32, 0))); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:10:9: error: duplicate switch value -// tmp.zig:8:9: note: previous value here +// :10:9: error: duplicate switch value +// :8:9: note: previous value here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig b/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig similarity index 50% rename from test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig rename to test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig index 1a13730223..20b373f6b7 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-missing_enumeration_prong.zig +++ b/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig @@ -12,10 +12,12 @@ fn f(n: Number) i32 { } } -export fn entry() usize { return @sizeOf(@TypeOf(f)); } +export fn entry() usize { return @sizeOf(@TypeOf(&f)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:8:5: error: enumeration value 'Number.Four' not handled in switch +// :8:5: error: switch must handle all possibilities +// :8:5: note: unhandled enumeration value: 'Four' +// :1:16: note: enum 'tmp.Number' declared here diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig b/test/cases/compile_errors/switch_expression-multiple_else_prongs.zig similarity index 63% rename from test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig rename to test/cases/compile_errors/switch_expression-multiple_else_prongs.zig index 8267222092..f4cdb3b125 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-multiple_else_prongs.zig +++ b/test/cases/compile_errors/switch_expression-multiple_else_prongs.zig @@ -10,7 +10,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:9: error: multiple else prongs in switch expression +// :5:9: error: multiple else prongs in switch expression +// :4:9: note: previous else prong here diff --git a/test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig b/test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig new file mode 100644 index 0000000000..6770b5a055 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-non_exhaustive_integer_prongs.zig @@ -0,0 +1,12 @@ +fn foo(x: u8) void { + switch (x) { + 0 => {}, + } +} +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :2:5: error: switch must handle all possibilities diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig similarity index 67% rename from test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig rename to test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig index bcf840ab97..21440a63a1 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_enum.zig +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_enum.zig @@ -15,10 +15,10 @@ fn foo(x: u8) void { } } -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:14:9: error: unreachable else prong, all cases already handled +// :14:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig rename to test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig index f0c9d7a08a..bcb84eed12 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_i8.zig +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_i8.zig @@ -8,10 +8,10 @@ fn foo(x: i8) void { else => {}, } } -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:8:9: error: unreachable else prong, all cases already handled +// :8:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig rename to test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig index 9342ce8c32..2230434ea0 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_range_u8.zig +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_range_u8.zig @@ -8,10 +8,10 @@ fn foo(x: u8) void { else => {}, } } -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:8:9: error: unreachable else prong, all cases already handled +// :8:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig new file mode 100644 index 0000000000..58458474a4 --- /dev/null +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u1.zig @@ -0,0 +1,14 @@ +fn foo(x: u1) void { + switch (x) { + 0 => {}, + 1 => {}, + else => {}, + } +} +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } + +// error +// backend=stage2 +// target=native +// +// :5:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig rename to test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig index a523046e16..9e337cb200 100644 --- a/test/cases/compile_errors/stage1/obj/switch_expression-unreachable_else_prong_u2.zig +++ b/test/cases/compile_errors/switch_expression-unreachable_else_prong_u2.zig @@ -7,10 +7,10 @@ fn foo(x: u2) void { else => {}, } } -export fn entry() usize { return @sizeOf(@TypeOf(foo)); } +export fn entry() usize { return @sizeOf(@TypeOf(&foo)); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:7:9: error: unreachable else prong, all cases already handled +// :7:14: error: unreachable else prong; all cases already handled diff --git a/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig b/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig new file mode 100644 index 0000000000..dbf1cd948f --- /dev/null +++ b/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig @@ -0,0 +1,14 @@ +const Foo = enum { M }; + +export fn entry() void { + var f = Foo.M; + switch (f) {} +} + +// error +// backend=stage2 +// target=native +// +// :5:5: error: switch must handle all possibilities +// :5:5: note: unhandled enumeration value: 'M' +// :1:13: note: enum 'tmp.Foo' declared here diff --git a/test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig b/test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig similarity index 59% rename from test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig rename to test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig index 0ca489bdb8..3dad0be9df 100644 --- a/test/cases/compile_errors/stage1/test/switching_with_exhaustive_enum_has___prong_.zig +++ b/test/cases/compile_errors/switching_with_exhaustive_enum_has___prong_.zig @@ -12,8 +12,8 @@ pub export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:7:5: error: switch on exhaustive enum has `_` prong +// :7:5: error: '_' prong only allowed when switching on non-exhaustive enums +// :10:11: note: '_' prong here diff --git a/test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig b/test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig similarity index 54% rename from test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig rename to test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig index a98470b681..e9e63f0d7a 100644 --- a/test/cases/compile_errors/stage1/test/tagName_on_invalid_value_of_non-exhaustive_enum.zig +++ b/test/cases/compile_errors/tagName_on_invalid_value_of_non-exhaustive_enum.zig @@ -4,8 +4,9 @@ test "enum" { } // error -// backend=stage1 +// backend=stage2 // target=native // is_test=1 // -// tmp.zig:3:18: error: no tag by value 5 +// :3:9: error: no field with value '5' in enum 'test.enum.E' +// :1:1: note: declared here diff --git a/test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig b/test/cases/compile_errors/threadlocal_qualifier_on_const.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig rename to test/cases/compile_errors/threadlocal_qualifier_on_const.zig index d34ba06879..21371785f3 100644 --- a/test/cases/compile_errors/stage1/obj/threadlocal_qualifier_on_const.zig +++ b/test/cases/compile_errors/threadlocal_qualifier_on_const.zig @@ -4,7 +4,7 @@ export fn entry() i32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:1: error: threadlocal variable cannot be constant +// :1:1: error: threadlocal variable cannot be constant diff --git a/test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig b/test/cases/compile_errors/truncate_sign_mismatch.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig rename to test/cases/compile_errors/truncate_sign_mismatch.zig index 8434d9ed16..a05660e28c 100644 --- a/test/cases/compile_errors/stage1/obj/truncate_sign_mismatch.zig +++ b/test/cases/compile_errors/truncate_sign_mismatch.zig @@ -16,10 +16,10 @@ export fn entry4() u8 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:26: error: expected signed integer type, found 'u32' -// tmp.zig:7:26: error: expected unsigned integer type, found 'i32' -// tmp.zig:11:26: error: expected signed integer type, found 'u32' -// tmp.zig:15:26: error: expected unsigned integer type, found 'i32' +// :3:26: error: expected signed integer type, found 'u32' +// :7:26: error: expected unsigned integer type, found 'i32' +// :11:26: error: expected signed integer type, found 'u32' +// :15:26: error: expected unsigned integer type, found 'i32' diff --git a/test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig b/test/cases/compile_errors/try_in_function_with_non_error_return_type.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig rename to test/cases/compile_errors/try_in_function_with_non_error_return_type.zig index c00fa2709f..2107c2a397 100644 --- a/test/cases/compile_errors/stage1/obj/try_in_function_with_non_error_return_type.zig +++ b/test/cases/compile_errors/try_in_function_with_non_error_return_type.zig @@ -4,7 +4,7 @@ export fn f() void { fn something() anyerror!void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:5: error: expected type 'void', found 'anyerror' +// :2:5: error: expected type 'void', found 'anyerror' diff --git a/test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig b/test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig similarity index 56% rename from test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig rename to test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig index 1f78ef3999..125ded95d6 100644 --- a/test/cases/compile_errors/stage1/test/type_mismatch_in_C_prototype_with_varargs.zig +++ b/test/cases/compile_errors/type_mismatch_in_C_prototype_with_varargs.zig @@ -7,8 +7,7 @@ export fn main() void { } // error -// backend=stage1 +// backend=stage2 // target=native -// is_test=1 // -// tmp.zig:5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void' +// :5:22: error: expected type 'fn([*c]u8, ...) callconv(.C) void', found 'fn([*:0]u8, ...) callconv(.C) void' diff --git a/test/cases/compile_errors/stage1/obj/undeclared_identifier.zig b/test/cases/compile_errors/undeclared_identifier.zig similarity index 51% rename from test/cases/compile_errors/stage1/obj/undeclared_identifier.zig rename to test/cases/compile_errors/undeclared_identifier.zig index 297a618eb8..7edc0d2896 100644 --- a/test/cases/compile_errors/stage1/obj/undeclared_identifier.zig +++ b/test/cases/compile_errors/undeclared_identifier.zig @@ -5,7 +5,7 @@ export fn a() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:5: error: use of undeclared identifier 'b' +// :3:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig b/test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig similarity index 59% rename from test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig rename to test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig index 697b7ccb55..f234bde8b8 100644 --- a/test/cases/compile_errors/stage1/obj/undeclared_identifier_error_should_mark_fn_as_impure.zig +++ b/test/cases/compile_errors/undeclared_identifier_error_should_mark_fn_as_impure.zig @@ -6,7 +6,7 @@ fn test_a_thing() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:5:5: error: use of undeclared identifier 'bad_fn_call' +// :5:5: error: use of undeclared identifier 'bad_fn_call' diff --git a/test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig b/test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig rename to test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig index 2efa8ca115..edbe156e6b 100644 --- a/test/cases/compile_errors/stage1/obj/undeclared_identifier_in_unanalyzed_branch.zig +++ b/test/cases/compile_errors/undeclared_identifier_in_unanalyzed_branch.zig @@ -5,7 +5,7 @@ export fn a() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:9: error: use of undeclared identifier 'lol_this_doesnt_exist' +// :3:9: error: use of undeclared identifier 'lol_this_doesnt_exist' diff --git a/test/cases/compile_errors/undefined_as_field_type_is_rejected.zig b/test/cases/compile_errors/undefined_as_field_type_is_rejected.zig new file mode 100644 index 0000000000..e78cadc878 --- /dev/null +++ b/test/cases/compile_errors/undefined_as_field_type_is_rejected.zig @@ -0,0 +1,9 @@ +export fn a() void { + b(); +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/undefined_function_call.zig b/test/cases/compile_errors/undefined_function_call.zig new file mode 100644 index 0000000000..e78cadc878 --- /dev/null +++ b/test/cases/compile_errors/undefined_function_call.zig @@ -0,0 +1,9 @@ +export fn a() void { + b(); +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig b/test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig similarity index 51% rename from test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig rename to test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig index f4318af8fd..04cc996d05 100644 --- a/test/cases/compile_errors/stage1/obj/underscore_is_not_a_declarable_symbol.zig +++ b/test/cases/compile_errors/underscore_is_not_a_declarable_symbol.zig @@ -4,7 +4,7 @@ export fn f1() usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:9: error: '_' used as an identifier without @"_" syntax +// :2:9: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig similarity index 64% rename from test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig rename to test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig index fe89c8372d..1fb79e11bd 100644 --- a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_for.zig +++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_for.zig @@ -7,7 +7,7 @@ export fn returns() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax +// :4:20: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig similarity index 70% rename from test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig rename to test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig index 7f694e0603..07d72393c7 100644 --- a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while.zig +++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while.zig @@ -10,7 +10,7 @@ fn optionalReturn() ?u32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:20: error: '_' used as an identifier without @"_" syntax +// :4:20: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig similarity index 78% rename from test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig rename to test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig index 87a705ee69..74d5a86a24 100644 --- a/test/cases/compile_errors/stage1/obj/underscore_should_not_be_usable_inside_while_else.zig +++ b/test/cases/compile_errors/underscore_should_not_be_usable_inside_while_else.zig @@ -12,7 +12,7 @@ fn optionalReturnError() !?u32 { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:17: error: '_' used as an identifier without @"_" syntax +// :6:17: error: '_' used as an identifier without @"_" syntax diff --git a/test/cases/compile_errors/union_fields_with_value_assignments.zig b/test/cases/compile_errors/union_fields_with_value_assignments.zig new file mode 100644 index 0000000000..2121568dd2 --- /dev/null +++ b/test/cases/compile_errors/union_fields_with_value_assignments.zig @@ -0,0 +1,7 @@ +const Foo = union {}; + +// error +// backend=stage2 +// target=native +// +// :1:13: error: union declarations must have at least one tag diff --git a/test/cases/compile_errors/union_with_0_fields.zig b/test/cases/compile_errors/union_with_0_fields.zig new file mode 100644 index 0000000000..2121568dd2 --- /dev/null +++ b/test/cases/compile_errors/union_with_0_fields.zig @@ -0,0 +1,7 @@ +const Foo = union {}; + +// error +// backend=stage2 +// target=native +// +// :1:13: error: union declarations must have at least one tag diff --git a/test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig b/test/cases/compile_errors/union_with_specified_enum_omits_field.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig rename to test/cases/compile_errors/union_with_specified_enum_omits_field.zig index 0bb677a18c..3033feb376 100644 --- a/test/cases/compile_errors/stage1/obj/union_with_specified_enum_omits_field.zig +++ b/test/cases/compile_errors/union_with_specified_enum_omits_field.zig @@ -12,8 +12,9 @@ export fn entry() usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:17: error: enum field missing: 'C' -// tmp.zig:4:5: note: declared here +// :6:1: error: enum field(s) missing in union +// :4:5: note: field 'C' missing, declared here +// :1:16: note: enum declared here diff --git a/test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig b/test/cases/compile_errors/unreachable_code-double_break.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig rename to test/cases/compile_errors/unreachable_code-double_break.zig index 0a19337af8..f8e4b86a90 100644 --- a/test/cases/compile_errors/stage1/obj/unreachable_code-double_break.zig +++ b/test/cases/compile_errors/unreachable_code-double_break.zig @@ -2,11 +2,12 @@ export fn a() void { const b = blk: { break :blk break :blk @as(u32, 1); }; + _ = b; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:9: error: unreachable code -// tmp.zig:3:20: note: control flow is diverted here +// :3:9: error: unreachable code +// :3:20: note: control flow is diverted here diff --git a/test/cases/compile_errors/unreachable_code-nested_returns.zig b/test/cases/compile_errors/unreachable_code-nested_returns.zig new file mode 100644 index 0000000000..4f71ab2cec --- /dev/null +++ b/test/cases/compile_errors/unreachable_code-nested_returns.zig @@ -0,0 +1,10 @@ +export fn a() i32 { + return return 1; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: unreachable code +// :2:12: note: control flow is diverted here diff --git a/test/cases/compile_errors/unreachable_code.zig b/test/cases/compile_errors/unreachable_code.zig new file mode 100644 index 0000000000..25c412d254 --- /dev/null +++ b/test/cases/compile_errors/unreachable_code.zig @@ -0,0 +1,13 @@ +export fn a() void { + return; + b(); +} + +fn b() void {} + +// error +// backend=stage2 +// target=native +// +// :3:6: error: unreachable code +// :2:5: note: control flow is diverted here diff --git a/test/cases/compile_errors/stage1/obj/unreachable_variable.zig b/test/cases/compile_errors/unreachable_variable.zig similarity index 53% rename from test/cases/compile_errors/stage1/obj/unreachable_variable.zig rename to test/cases/compile_errors/unreachable_variable.zig index 7f822a8bce..fac4b72196 100644 --- a/test/cases/compile_errors/stage1/obj/unreachable_variable.zig +++ b/test/cases/compile_errors/unreachable_variable.zig @@ -4,7 +4,7 @@ export fn f() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:25: error: expected type 'noreturn', found 'void' +// :2:25: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/stage1/obj/unreachable_with_return.zig b/test/cases/compile_errors/unreachable_with_return.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/unreachable_with_return.zig rename to test/cases/compile_errors/unreachable_with_return.zig index 6410d24913..cc6439ca0f 100644 --- a/test/cases/compile_errors/stage1/obj/unreachable_with_return.zig +++ b/test/cases/compile_errors/unreachable_with_return.zig @@ -2,7 +2,7 @@ fn a() noreturn {return;} export fn entry() void { a(); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:18: error: expected type 'noreturn', found 'void' +// :1:18: error: expected type 'noreturn', found 'void' diff --git a/test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig b/test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig rename to test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig index b1d0aaa6f4..6fab70abf8 100644 --- a/test/cases/compile_errors/stage1/obj/use_invalid_number_literal_as_array_index.zig +++ b/test/cases/compile_errors/use_invalid_number_literal_as_array_index.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:1: error: unable to infer variable type +// :1:1: error: variable of type 'comptime_int' must be const or comptime diff --git a/test/cases/compile_errors/use_of_undeclared_identifier.zig b/test/cases/compile_errors/use_of_undeclared_identifier.zig new file mode 100644 index 0000000000..2c90a7c718 --- /dev/null +++ b/test/cases/compile_errors/use_of_undeclared_identifier.zig @@ -0,0 +1,9 @@ +export fn f() void { + b = 3; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: use of undeclared identifier 'b' diff --git a/test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig b/test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig similarity index 66% rename from test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig rename to test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig index f1fda15ea7..ee6d1b8b7c 100644 --- a/test/cases/compile_errors/stage1/obj/using_invalid_types_in_function_call_raises_an_error.zig +++ b/test/cases/compile_errors/using_invalid_types_in_function_call_raises_an_error.zig @@ -5,7 +5,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:20: error: enum declarations must have at least one tag +// :1:20: error: enum declarations must have at least one tag diff --git a/test/cases/compile_errors/usingnamespace_with_wrong_type.zig b/test/cases/compile_errors/usingnamespace_with_wrong_type.zig new file mode 100644 index 0000000000..4ec4bf4838 --- /dev/null +++ b/test/cases/compile_errors/usingnamespace_with_wrong_type.zig @@ -0,0 +1,7 @@ +usingnamespace void; + +// error +// backend=stage2 +// target=native +// +// :1:1: error: type void has no namespace diff --git a/test/cases/compile_errors/variable_has_wrong_type.zig b/test/cases/compile_errors/variable_has_wrong_type.zig new file mode 100644 index 0000000000..ec21c610e0 --- /dev/null +++ b/test/cases/compile_errors/variable_has_wrong_type.zig @@ -0,0 +1,10 @@ +export fn f() i32 { + const a = "a"; + return a; +} + +// error +// backend=stage2 +// target=native +// +// :3:12: error: expected type 'i32', found '*const [1:0]u8' diff --git a/test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig b/test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig similarity index 74% rename from test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig rename to test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig index 91b70481a1..774cd165d6 100644 --- a/test/cases/compile_errors/stage1/obj/variable_initialization_compile_error_then_referenced.zig +++ b/test/cases/compile_errors/variable_initialization_compile_error_then_referenced.zig @@ -13,7 +13,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:12: error: use of undeclared identifier 'T' +// :2:12: error: use of undeclared identifier 'T' diff --git a/test/cases/compile_errors/variable_with_type_noreturn.zig b/test/cases/compile_errors/variable_with_type_noreturn.zig new file mode 100644 index 0000000000..837a6e6965 --- /dev/null +++ b/test/cases/compile_errors/variable_with_type_noreturn.zig @@ -0,0 +1,11 @@ +export fn entry9() void { + var z: noreturn = return; + _ = z; +} + +// error +// backend=stage2 +// target=native +// +// :2:5: error: unreachable code +// :2:23: note: control flow is diverted here diff --git a/test/cases/compile_errors/volatile_on_global_assembly.zig b/test/cases/compile_errors/volatile_on_global_assembly.zig new file mode 100644 index 0000000000..84cde00113 --- /dev/null +++ b/test/cases/compile_errors/volatile_on_global_assembly.zig @@ -0,0 +1,9 @@ +comptime { + asm volatile (""); +} + +// error +// backend=stage2 +// target=native +// +// :2:9: error: volatile is meaningless on global assembly diff --git a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig b/test/cases/compile_errors/while_expected_bool_got_error_union.zig similarity index 56% rename from test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig rename to test/cases/compile_errors/while_expected_bool_got_error_union.zig index 9fc327e6c9..ecf3dd0736 100644 --- a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_error_union.zig +++ b/test/cases/compile_errors/while_expected_bool_got_error_union.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() anyerror!i32 { return 1; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected type 'bool', found 'anyerror!i32' +// :2:15: error: expected type 'bool', found 'anyerror!i32' diff --git a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig b/test/cases/compile_errors/while_expected_bool_got_optional.zig similarity index 57% rename from test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig rename to test/cases/compile_errors/while_expected_bool_got_optional.zig index 5948d62786..3db4b7ae74 100644 --- a/test/cases/compile_errors/stage1/obj/while_expected_bool_got_optional.zig +++ b/test/cases/compile_errors/while_expected_bool_got_optional.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() ?i32 { return 1; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected type 'bool', found '?i32' +// :2:15: error: expected type 'bool', found '?i32' diff --git a/test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig b/test/cases/compile_errors/write_to_const_global_variable.zig similarity index 61% rename from test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig rename to test/cases/compile_errors/write_to_const_global_variable.zig index 4ce93e6b51..eaa9353f00 100644 --- a/test/cases/compile_errors/stage1/obj/write_to_const_global_variable.zig +++ b/test/cases/compile_errors/write_to_const_global_variable.zig @@ -5,7 +5,7 @@ fn f() void { export fn entry() void { f(); } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:9: error: cannot assign to constant +// :3:9: error: cannot assign to constant diff --git a/test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig b/test/cases/compile_errors/wrong_size_to_an_array_literal.zig similarity index 55% rename from test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig rename to test/cases/compile_errors/wrong_size_to_an_array_literal.zig index 909d894587..bb8b3c215c 100644 --- a/test/cases/compile_errors/stage1/obj/wrong_size_to_an_array_literal.zig +++ b/test/cases/compile_errors/wrong_size_to_an_array_literal.zig @@ -4,7 +4,7 @@ comptime { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:31: error: index 2 outside array of size 2 +// :2:31: error: index 2 outside array of length 2 diff --git a/test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig b/test/cases/compile_errors/wrong_type_passed_to_panic.zig similarity index 51% rename from test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig rename to test/cases/compile_errors/wrong_type_passed_to_panic.zig index ed237f81df..d6f142f24a 100644 --- a/test/cases/compile_errors/stage1/obj/wrong_type_passed_to_panic.zig +++ b/test/cases/compile_errors/wrong_type_passed_to_panic.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:3:12: error: expected type '[]const u8', found 'error{Foo}' +// :3:12: error: expected type '[]const u8', found 'error{Foo}' diff --git a/test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig b/test/cases/compile_errors/wrong_type_to_hasField.zig similarity index 52% rename from test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig rename to test/cases/compile_errors/wrong_type_to_hasField.zig index 680c19a6fb..5c05689413 100644 --- a/test/cases/compile_errors/stage1/obj/wrong_type_to_hasField.zig +++ b/test/cases/compile_errors/wrong_type_to_hasField.zig @@ -3,7 +3,7 @@ export fn entry() bool { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:22: error: type 'i32' does not support @hasField +// :2:22: error: type 'i32' does not support '@hasField' diff --git a/test/cases/compile_log.0.zig b/test/cases/compile_log.0.zig index c213ebb930..161a6f37ca 100644 --- a/test/cases/compile_log.0.zig +++ b/test/cases/compile_log.0.zig @@ -14,4 +14,4 @@ fn x() void {} // error // -// :6:23: error: expected usize, found bool +// :6:23: error: expected type 'usize', found 'bool' diff --git a/test/cases/x86_64-linux/hello_world_with_updates.1.zig b/test/cases/x86_64-linux/hello_world_with_updates.1.zig index 0f347b7f50..9be388ab63 100644 --- a/test/cases/x86_64-linux/hello_world_with_updates.1.zig +++ b/test/cases/x86_64-linux/hello_world_with_updates.1.zig @@ -2,4 +2,4 @@ pub export fn _start() noreturn {} // error // -// :1:34: error: expected noreturn, found void +// :1:34: error: expected type 'noreturn', found 'void' diff --git a/test/cases/x86_64-linux/inline_assembly.0.zig b/test/cases/x86_64-linux/inline_assembly.0.zig index e3c0f3badb..8356e05d80 100644 --- a/test/cases/x86_64-linux/inline_assembly.0.zig +++ b/test/cases/x86_64-linux/inline_assembly.0.zig @@ -13,4 +13,4 @@ pub fn main() void { // output_mode=Exe // target=x86_64-linux // -// :4:27: error: expected type, found comptime_int +// :4:27: error: expected type 'type', found 'comptime_int' diff --git a/test/cases/x86_64-macos/hello_world_with_updates.1.zig b/test/cases/x86_64-macos/hello_world_with_updates.1.zig index 909fc9ccfb..435747c2ee 100644 --- a/test/cases/x86_64-macos/hello_world_with_updates.1.zig +++ b/test/cases/x86_64-macos/hello_world_with_updates.1.zig @@ -2,4 +2,4 @@ pub export fn main() noreturn {} // error // -// :1:32: error: expected noreturn, found void +// :1:32: error: expected type 'noreturn', found 'void' diff --git a/test/stage2/cbe.zig b/test/stage2/cbe.zig index 47ed7a53be..f602c49885 100644 --- a/test/stage2/cbe.zig +++ b/test/stage2/cbe.zig @@ -96,13 +96,13 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = @intToError(0); \\ return 0; \\} - , &.{":2:21: error: integer value 0 represents no error"}); + , &.{":2:21: error: integer value '0' represents no error"}); case.addError( \\pub export fn main() c_int { \\ _ = @intToError(3); \\ return 0; \\} - , &.{":2:21: error: integer value 3 represents no error"}); + , &.{":2:21: error: integer value '3' represents no error"}); } { @@ -739,7 +739,7 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = @enumToInt(a); \\} , &.{ - ":3:20: error: expected enum or tagged union, found bool", + ":3:20: error: expected enum or tagged union, found 'bool'", }); case.addError( @@ -748,7 +748,7 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = @intToEnum(bool, a); \\} , &.{ - ":3:20: error: expected enum, found bool", + ":3:20: error: expected enum, found 'bool'", }); case.addError( @@ -757,7 +757,7 @@ pub fn addCases(ctx: *TestContext) !void { \\ _ = @intToEnum(E, 3); \\} , &.{ - ":3:9: error: enum 'tmp.E' has no tag with value 3", + ":3:9: error: enum 'tmp.E' has no tag with value '3'", ":1:11: note: enum declared here", });