#![allow(clippy::unwrap_used, clippy::expect_used)]
use std::fs;
use crate::framework::default_test_settings;
mod framework;
macro_rules! test_case {
($test_name:ident, $settings:expr) => {
#[test]
fn $test_name() {
let content = include_str!(concat!("cases/", stringify!($test_name), ".php"));
$crate::framework::TestCase::new(stringify!($test_name), content).settings($settings).run();
}
};
($test_name:ident) => {
#[test]
fn $test_name() {
let content = include_str!(concat!("cases/", stringify!($test_name), ".php"));
$crate::framework::TestCase::new(stringify!($test_name), content).run();
}
};
}
test_case!(accessing_undefined_class_constant);
test_case!(argument_count);
test_case!(array_append_no_overflow_when_max_below_php_int_max);
test_case!(array_append_overflow_after_explicit_assign_php_int_max);
test_case!(array_append_overflow_conditionally_assigned_max_key);
test_case!(array_append_overflow_explicit_max_key);
test_case!(array_append_overflow_optional_max_key);
test_case!(array_list_reconciliation);
test_case!(boundary_widen_generic_never_to_int);
test_case!(boundary_widen_generic_property_assignment);
test_case!(boundary_widen_generic_static_property);
test_case!(boundary_widen_generic_string_param);
test_case!(boundary_widen_scalar_int_property);
test_case!(boundary_widen_scalar_static_property);
test_case!(boundary_widen_scalar_string_property);
test_case!(list_destructure_clean_list);
test_case!(list_destructure_clean_shape);
test_case!(list_destructure_generic_int_array_no_warn);
test_case!(list_destructure_keyed_pattern_string_source);
test_case!(list_destructure_mixed_range_no_warn);
test_case!(list_destructure_negative_int_param);
test_case!(list_destructure_negative_key_in_known_items);
test_case!(list_destructure_negative_literal_only);
test_case!(list_destructure_negative_min_to_minus1);
test_case!(list_destructure_string_and_negative);
test_case!(list_destructure_string_key_in_known_items);
test_case!(list_destructure_string_key_in_union);
test_case!(list_destructure_string_key_simple);
test_case!(list_destructure_with_holes_no_warn);
test_case!(array_map_non_empty_array);
test_case!(array_map_non_empty_list);
test_case!(array_shape_fields);
test_case!(array_type_combination_threshold);
test_case!(array_unique_non_empty);
test_case!(arrays_simple_list_literal);
test_case!(arrays_array_chunk);
test_case!(arrays_array_chunk_zero_size);
test_case!(arrays_array_column);
test_case!(arrays_array_combine);
test_case!(arrays_array_count_values);
test_case!(arrays_array_diff);
test_case!(arrays_array_fill);
test_case!(arrays_array_fill_negative_count);
test_case!(arrays_array_fill_keys);
test_case!(arrays_array_filter_callback);
test_case!(arrays_array_filter_no_callback);
test_case!(arrays_array_flip);
test_case!(arrays_array_intersect);
test_case!(arrays_array_keys);
test_case!(arrays_array_map_keyed);
test_case!(arrays_array_map_list);
test_case!(arrays_array_map_multi);
test_case!(arrays_array_merge_two_lists);
test_case!(arrays_max_on_possibly_empty);
test_case!(arrays_min_on_possibly_empty);
test_case!(arrays_array_pop);
test_case!(arrays_array_pop_empty);
test_case!(arrays_array_product);
test_case!(arrays_array_push);
test_case!(arrays_array_reduce);
test_case!(arrays_array_reverse_list);
test_case!(arrays_array_search);
test_case!(arrays_array_shift);
test_case!(arrays_array_slice_list);
test_case!(arrays_array_sum);
test_case!(arrays_array_unique);
test_case!(arrays_array_unshift);
test_case!(arrays_array_values);
test_case!(arrays_array_walk_by_ref);
test_case!(arrays_assign_index);
test_case!(arrays_compact_basic);
test_case!(arrays_count_min_one);
test_case!(arrays_count_returns_int);
test_case!(arrays_foreach_keyed);
test_case!(arrays_foreach_list);
test_case!(arrays_foreach_shape);
test_case!(arrays_in_array);
test_case!(arrays_index_into_int);
test_case!(arrays_index_with_wrong_key_type);
test_case!(arrays_isset_narrows_optional);
test_case!(arrays_keyed_array_literal);
test_case!(arrays_keyed_destructuring);
test_case!(arrays_list_append);
test_case!(arrays_list_destructuring);
test_case!(arrays_list_function_destructuring);
test_case!(arrays_list_index_in_range);
test_case!(arrays_max_non_empty_list);
test_case!(arrays_min_non_empty_list);
test_case!(arrays_numeric_string_key_coerces_to_int);
test_case!(arrays_optional_key_access_unguarded);
test_case!(arrays_range_int);
test_case!(arrays_shape_extra_key_sealed);
test_case!(arrays_shape_missing_required_key);
test_case!(arrays_shape_optional_key);
test_case!(arrays_shape_wrong_value_type);
test_case!(arrays_sizeof_alias);
test_case!(arrays_spread_in_literal);
test_case!(arrays_spread_with_prefix);
test_case!(arrays_typed_unsealed_extension);
test_case!(arrays_undefined_key_sealed);
test_case!(arrays_unsealed_shape_extra_key);
test_case!(arrays_unset_key);
test_case!(arrays_variadic_spread);
test_case!(arrays_count_int_zero_check);
test_case!(arrays_too_few_args_count);
test_case!(arrays_count_invalid_arg);
test_case!(arrays_array_keys_int);
test_case!(arrays_nested_shape);
test_case!(arrays_nested_shape_access);
test_case!(arrays_list_of_shapes);
test_case!(arrays_array_keys_filter);
test_case!(arrays_sort_in_place);
test_case!(arrays_usort);
test_case!(arrays_ksort);
test_case!(arrays_asort);
test_case!(arrays_int_keys_in_literal);
test_case!(arrays_non_empty_after_assign);
test_case!(arrays_empty_array_literal);
test_case!(arrays_empty_list_to_non_empty);
test_case!(arrays_list_to_array);
test_case!(arrays_array_to_list_invalid);
test_case!(arrays_shape_to_array);
test_case!(arrays_array_diff_key);
test_case!(arrays_array_intersect_key);
test_case!(arrays_array_replace);
test_case!(arrays_array_replace_recursive);
test_case!(arrays_array_key_first);
test_case!(arrays_array_key_last);
test_case!(arrays_implode_explode_round_trip);
test_case!(arrays_explode_returns_list);
test_case!(arrays_array_chunk_preserve_keys);
test_case!(arrays_partial_list_destructuring);
test_case!(arrays_foreach_with_key_dest);
test_case!(arrays_iterator_to_array);
test_case!(arrays_string_index_in_string);
test_case!(arrays_string_index_on_list);
test_case!(arrays_unset_undefined);
test_case!(arrays_unset_optional_shape);
test_case!(arrays_array_chunk_two_dims);
test_case!(arrays_array_combine_lists);
test_case!(arrays_array_combine_mismatched_lengths);
test_case!(arrays_array_filter_callable);
test_case!(arrays_array_filter_keys_preserved);
test_case!(arrays_array_key_exists_then_access);
test_case!(arrays_array_keys_of_shape);
test_case!(arrays_array_keys_with_int_filter);
test_case!(arrays_array_map_string_function);
test_case!(arrays_array_merge_lists_diff_types);
test_case!(arrays_array_search_strict_returns_false);
test_case!(arrays_array_unique_string);
test_case!(arrays_array_values_after_filter);
test_case!(arrays_array_values_of_shape);
test_case!(arrays_array_walk_signature);
test_case!(arrays_assert_is_array);
test_case!(arrays_coalesce_assign_array);
test_case!(arrays_count_recursive);
test_case!(arrays_count_via_intval);
test_case!(arrays_first_after_count);
test_case!(arrays_in_array_loose);
test_case!(arrays_isset_then_array_access);
test_case!(arrays_isset_two_keys);
test_case!(arrays_keyed_array_string_int_keys);
test_case!(arrays_null_coalesce_array);
test_case!(arrays_shape_extra_field_typed_unsealed);
test_case!(arrays_shape_with_nullable_value);
test_case!(arrays_unset_required_key);
test_case!(arrays_err_array_combine_invalid);
test_case!(arrays_err_array_diff_invalid);
test_case!(arrays_err_array_flip_invalid);
test_case!(arrays_err_array_intersect_invalid);
test_case!(arrays_err_array_key_first_empty);
test_case!(arrays_err_array_key_last_empty);
test_case!(arrays_err_array_key_type_mismatch);
test_case!(arrays_err_array_keys_invalid_arg);
test_case!(arrays_err_array_map_invalid_callback);
test_case!(arrays_err_array_merge_int_arg);
test_case!(arrays_err_array_pop_too_few_args);
test_case!(arrays_err_array_search_invalid);
test_case!(arrays_err_array_shift_empty);
test_case!(arrays_err_array_sum_string);
test_case!(arrays_err_array_value_type_mismatch);
test_case!(arrays_err_array_values_invalid_arg);
test_case!(arrays_err_array_walk_invalid_callback);
test_case!(arrays_err_count_keyed_undefined);
test_case!(arrays_err_count_string);
test_case!(arrays_err_explode_invalid_separator);
test_case!(arrays_err_implode_int_array);
test_case!(arrays_err_in_array_invalid_haystack);
test_case!(arrays_err_index_into_bool);
test_case!(arrays_err_index_into_float);
test_case!(arrays_err_index_into_null);
test_case!(arrays_err_iterator_to_array_invalid);
test_case!(arrays_err_list_with_string_keys);
test_case!(arrays_err_non_empty_from_empty);
test_case!(arrays_err_pass_int_to_array_param);
test_case!(arrays_err_pass_keyed_to_list);
test_case!(arrays_err_shape_extra_key_param);
test_case!(arrays_err_shape_missing_required_param);
test_case!(arrays_err_shape_value_wrong_type_param);
test_case!(arrays_err_sort_int);
test_case!(arrays_err_widen_array_to_list);
test_case!(assert_concrete_to_template_type);
test_case!(assert_generic_array_key_is_array_key);
test_case!(bare_identifier_in_array_access);
test_case!(bin2hex);
test_case!(break_narrowing);
test_case!(by_reference_invalidation);
test_case!(callable_template_inference);
test_case!(class_like_constant_access);
test_case!(collection_types);
test_case!(condition_is_too_complex);
test_case!(conditional_if_else);
test_case!(conditional_return_resolved_to_left);
test_case!(conditional_return_resolved_to_right);
test_case!(conditional_return_with_assignment_in_condition);
test_case!(const_array_key);
test_case!(docblock_type_alias_basic);
test_case!(docblock_phpstan_type_alias);
test_case!(docblock_psalm_type_alias);
test_case!(docblock_type_alias_with_generics);
test_case!(docblock_import_type);
test_case!(docblock_psalm_import_type);
test_case!(docblock_import_type_rename);
test_case!(docblock_var_widening_object_generic);
test_case!(docblock_var_strict_subtype_check);
test_case!(docblock_param_basic);
test_case!(docblock_return_basic);
test_case!(docblock_throws_exception);
test_case!(docblock_throws_unhandled);
test_case!(docblock_param_out);
test_case!(docblock_assert_method);
test_case!(docblock_assert_if_true);
test_case!(docblock_assert_if_false);
test_case!(docblock_conditional_return_left);
test_case!(docblock_conditional_return_right);
test_case!(docblock_conditional_return_negated);
test_case!(docblock_key_of_shape);
test_case!(docblock_value_of_shape);
test_case!(docblock_value_of_backed_enum);
test_case!(docblock_int_mask_basic);
test_case!(docblock_int_mask_invalid);
test_case!(docblock_int_mask_of_constants);
test_case!(docblock_class_string_basic);
test_case!(docblock_class_string_violation);
test_case!(docblock_interface_string);
test_case!(docblock_enum_string);
test_case!(docblock_trait_string);
test_case!(docblock_intersection_basic);
test_case!(docblock_union_basic);
test_case!(docblock_nullable_shorthand);
test_case!(docblock_nullable_equivalent);
test_case!(docblock_literal_string);
test_case!(docblock_literal_string_invalid);
test_case!(docblock_literal_int);
test_case!(docblock_literal_int_invalid);
test_case!(docblock_literal_true_false);
test_case!(docblock_literal_true_invalid);
test_case!(docblock_literal_null);
test_case!(docblock_int_range_zero_max);
test_case!(docblock_int_range_zero_max_invalid);
test_case!(docblock_int_range_min_100);
test_case!(docblock_int_range_min_100_invalid);
test_case!(docblock_non_empty_string);
test_case!(docblock_non_empty_string_invalid);
test_case!(docblock_non_empty_array);
test_case!(docblock_non_empty_array_invalid);
test_case!(docblock_non_empty_list);
test_case!(docblock_numeric_string);
test_case!(docblock_numeric_string_invalid);
test_case!(docblock_lowercase_string);
test_case!(docblock_array_key_type);
test_case!(docblock_scalar_type);
test_case!(docblock_mixed_type);
test_case!(docblock_void_return);
test_case!(docblock_never_return);
test_case!(docblock_no_return_alias);
test_case!(docblock_closure_type);
test_case!(docblock_callable_type);
test_case!(docblock_callable_optional_param);
test_case!(docblock_callable_variadic);
test_case!(docblock_deprecated_function);
test_case!(docblock_deprecated_method);
test_case!(docblock_template_constraint_array_key);
test_case!(docblock_template_constraint_object);
test_case!(template_default_class_no_args);
test_case!(template_default_class_constraint_with_default);
test_case!(template_default_extends_partial);
test_case!(template_default_method);
test_case!(template_default_as_modifier);
test_case!(template_default_array_shape);
test_case!(template_default_argument_mismatch);
test_case!(template_default_explicit_arg_violates_constraint);
test_case!(docblock_truthy_string);
test_case!(docblock_non_falsy_string);
test_case!(docblock_non_falsy_string_invalid);
test_case!(docblock_param_variadic_no_type);
test_case!(docblock_param_variadic_typed);
test_case!(docblock_inheritdoc_resolution);
test_case!(docblock_self_referential_type_alias);
test_case!(docblock_intersection_method_access);
test_case!(docblock_intersection_with_union);
test_case!(docblock_param_mismatch_with_native);
test_case!(docblock_return_mismatch_with_native);
test_case!(docblock_throws_runtime_exception);
test_case!(docblock_throws_propagation);
test_case!(docblock_param_out_then_use);
test_case!(docblock_assert_class);
test_case!(docblock_psalm_assert_if_true_template);
test_case!(docblock_conditional_return_literal_arg);
test_case!(docblock_class_string_subtype);
test_case!(docblock_negated_conditional_resolved);
test_case!(docblock_int_mask_zero_allowed);
test_case!(docblock_int_mask_negative_invalid);
test_case!(docblock_key_of_literal_union);
test_case!(docblock_array_shape_required_key);
test_case!(docblock_array_shape_optional_key);
test_case!(docblock_array_list_param);
test_case!(docblock_template_in_method);
test_case!(docblock_param_class_string_template);
test_case!(docblock_double_intersection_chain);
test_case!(docblock_iterable_typed);
test_case!(docblock_param_default_typed);
test_case!(docblock_template_interface_implements);
test_case!(docblock_type_mismatch);
test_case!(docblock_type_narrowing);
test_case!(docblock_type_parsing_verification);
test_case!(docblock_var_on_non_assignment);
test_case!(empty_switch);
test_case!(empty_construct);
test_case!(generator_return_yield);
test_case!(generic_shape_coercion);
test_case!(int_or_float);
test_case!(literal_float);
test_case!(multiline_intersection_var);
test_case!(multiline_union_param);
test_case!(int_mask);
test_case!(integer_literal_overflow);
test_case!(integer_range_reconciliation);
test_case!(integer_reconciliation);
test_case!(isset_and_nullable_access_assertions);
test_case!(intersection_stringable);
test_case!(iterable_array_comparison);
test_case!(iterable_count);
test_case!(iterable_reconciliation);
test_case!(non_empty_string_magic_constant);
test_case!(numeric_reconciliation);
test_case!(priority_queue_implementation);
test_case!(psl_integration);
test_case!(psl_int_range);
test_case!(psr_container_get);
test_case!(flow_php_integration);
test_case!(reconcile_array_index_type);
test_case!(reconcile_empty_string);
test_case!(reconcile_non_empty_string);
test_case!(reconcile_properties);
test_case!(reconciling_generic_parameter);
test_case!(invariant_generic_unsound);
test_case!(recursive_templates);
test_case!(resource_reconciliation);
test_case!(scalar_types_reconciliation);
test_case!(string_reconciliation);
test_case!(switch_complex_logic);
test_case!(switch_default_only);
test_case!(switch_empty_case);
test_case!(switch_fall_through);
test_case!(switch_mixed_fall_through);
test_case!(switch_multiple_cases);
test_case!(switch_no_break);
test_case!(switch_simple_break);
test_case!(switch_statement);
test_case!(switch_string_subject);
test_case!(switch_with_return);
test_case!(type_guard_followed_by_redundant_check);
test_case!(type_narrowing_and_assertions);
test_case!(unspecified_callable_or_closure);
test_case!(untemplated_generic_parameters);
test_case!(untyped_callable_parameter);
test_case!(yield_array_value);
test_case!(iterables_foreach_list_key_is_int);
test_case!(iterables_foreach_list_key_passed_to_string);
test_case!(iterables_foreach_keyed_array_key_string);
test_case!(iterables_foreach_keyed_array_value_mismatch);
test_case!(iterables_foreach_iterator_string_int);
test_case!(iterables_foreach_iterator_key_mismatch);
test_case!(iterables_foreach_generator_keys_values);
test_case!(iterables_foreach_iterator_aggregate_keys);
test_case!(iterables_foreach_traversable_keys);
test_case!(iterables_foreach_iterable_param);
test_case!(iterables_foreach_iterable_kv);
test_case!(iterables_foreach_nullable_iterable_unchecked);
test_case!(iterables_foreach_nullable_iterable_narrowed);
test_case!(iterables_foreach_int_invalid);
test_case!(iterables_yield_basic_value);
test_case!(iterables_yield_key_value_pair);
test_case!(iterables_yield_key_mismatch_string_to_int);
test_case!(iterables_yield_value_mismatch_int_to_string);
test_case!(iterables_yield_from_array);
test_case!(iterables_yield_from_keyed_array);
test_case!(iterables_yield_from_generator);
test_case!(iterables_yield_from_iterator_aggregate);
test_case!(iterables_yield_from_int_non_iterable);
test_case!(iterables_yield_from_string_non_iterable);
test_case!(iterables_yield_from_invalid_value_type);
test_case!(iterables_yield_from_invalid_key_type);
test_case!(iterables_yield_outside_function_scope);
test_case!(iterables_iterator_to_array_no_preserve);
test_case!(iterables_count_on_iterator_invalid);
test_case!(iterables_count_on_array);
test_case!(iterables_count_on_iterable_invalid);
test_case!(iterables_count_countable_ok);
test_case!(iterables_array_keys_after_iterator_to_array);
test_case!(iterables_array_keys_on_iterator_invalid);
test_case!(iterables_foreach_by_ref);
test_case!(iterables_generator_with_non_iterable_return_type);
test_case!(iterables_generator_send_match);
test_case!(iterables_generator_send_mismatch);
test_case!(iterables_generator_get_return);
test_case!(iterables_generator_get_return_mismatch);
test_case!(iterables_generator_return_type_mismatch);
test_case!(iterables_generator_value_yields_int_not_string);
test_case!(iterables_generator_current_method);
test_case!(iterables_generator_key_method);
test_case!(iterables_generator_valid_returns_bool);
test_case!(iterables_foreach_method_call_on_int_value);
test_case!(iterables_iterable_returning_array);
test_case!(iterables_iterable_returning_generator);
test_case!(iterables_array_iterator_use);
test_case!(iterables_iterator_iterator_wraps_aggregate);
test_case!(iterables_iterator_apply_basic);
test_case!(iterables_foreach_string_invalid);
test_case!(iterables_foreach_float_invalid);
test_case!(iterables_foreach_bool_invalid);
test_case!(iterables_foreach_object_invalid);
test_case!(iterables_foreach_iterator_aggregate_value_mismatch);
test_case!(iterables_yield_from_generator_value_mismatch);
test_case!(iterables_yield_from_generator_key_mismatch);
test_case!(iterables_generator_only_yields_no_return);
test_case!(iterables_iterator_subtype_of_iterable);
test_case!(iterables_generator_subtype_of_iterator);
test_case!(iterables_generator_subtype_of_iterable);
test_case!(iterables_array_not_subtype_of_iterator);
test_case!(iterables_array_subtype_of_iterable);
test_case!(iterables_generator_throw_method);
test_case!(iterables_generator_rewind_next);
test_case!(iterables_generator_value_union);
test_case!(iterables_foreach_union_iterables);
test_case!(iterables_foreach_keyed_value_passed_to_int);
test_case!(iterables_foreach_traversable_value_mismatch);
test_case!(iterables_foreach_generator_value_mismatch);
test_case!(iterables_yield_from_list_to_int_keyed);
test_case!(iterables_foreach_string_iterable_invalid);
test_case!(iterables_yield_value_int_to_string_gen);
test_case!(iterables_yield_value_object_to_string_gen);
test_case!(iterables_yield_key_object_invalid);
test_case!(iterables_yield_key_float_invalid);
test_case!(iterables_foreach_iterator_value_to_int_invalid);
test_case!(iterables_foreach_traversable_key_to_string_invalid);
test_case!(iterables_foreach_iterable_key_to_string_invalid);
test_case!(iterables_yield_from_iterable_value_mismatch);
test_case!(iterables_yield_from_iterable_key_mismatch);
test_case!(iterables_yield_from_null_invalid);
test_case!(iterables_yield_from_bool_invalid);
test_case!(iterables_yield_from_object_invalid);
test_case!(iterables_count_on_generator_invalid);
test_case!(iterables_count_on_iterator_aggregate_invalid);
test_case!(iterables_count_on_traversable_invalid);
test_case!(iterables_foreach_iterable_value_to_int_invalid);
test_case!(iterables_foreach_int_array_key_to_string_invalid);
test_case!(iterables_foreach_iterator_aggregate_key_mismatch);
test_case!(iterables_yield_to_string_string_int_value);
test_case!(iterables_yield_to_int_string_string_key);
test_case!(iterables_generator_return_int_to_string);
test_case!(iterables_generator_send_array_to_int);
test_case!(iterables_generator_send_string_to_int);
test_case!(iterables_generator_throw_non_throwable);
test_case!(iterables_yield_from_yields_invalid_value_inside);
test_case!(iterables_yield_value_string_to_int);
test_case!(iterables_foreach_keyed_array_int_to_string_value);
test_case!(iterables_yield_value_array_to_string);
test_case!(iterables_yield_key_array_invalid);
test_case!(iterables_yield_value_null_to_string);
test_case!(iterables_foreach_iterable_value_passed_to_string);
test_case!(yield_from_generator);
test_case!(yield_from_invalid_key);
test_case!(yield_from_invalid_type);
test_case!(yield_from_non_iterable);
test_case!(yield_global_scope);
test_case!(yield_invalid_key);
test_case!(yield_invalid_value);
test_case!(yield_merge_iterables);
test_case!(switch_always_matching_case);
test_case!(switch_case_after_default_is_unreachable);
test_case!(switch_logically_unreachable_case);
test_case!(switch_on_literal);
test_case!(switch_redundant_condition);
test_case!(conditional_always_truthy);
test_case!(conditional_always_falsy);
test_case!(conditional_mixed_types);
test_case!(conditional_with_assignment);
test_case!(conditional_nested);
test_case!(elvis_operator_with_null);
test_case!(elvis_operator_with_falsy_string);
test_case!(short_ternary_with_truthy);
test_case!(short_ternary_with_falsy);
test_case!(conditional_type_narrowing);
test_case!(conditional_initialization);
test_case!(type_is_not_narrowed_by_nested_conditional_exit);
test_case!(dynamic_array_key_in_string_interpolation);
test_case!(big_numbers);
test_case!(numeric_non_lowercase_string);
test_case!(not_equal_negation);
test_case!(overload_resolution_for_callable);
test_case!(fully_qualified_use_prefix);
test_case!(extends_inheritance_happy_path);
test_case!(extends_inheritance_error_path);
test_case!(implements_inheritance_happy_path);
test_case!(implements_inheritance_error_path);
test_case!(use_inheritance_happy_path);
test_case!(use_inheritance_error_path);
test_case!(templated_trait_use);
test_case!(template_parameter_sanity_check);
test_case!(calling_trait_required_method);
test_case!(useless_statements);
test_case!(complex_template_constraint);
test_case!(docblock_var_override);
test_case!(isset_refinement_on_object_properties);
test_case!(array_shape_reconciliation);
test_case!(retain_possibly_undefined_in_array_access);
test_case!(static_return_generic_override);
test_case!(default_parameter_inference);
test_case!(infer_class_string_on_generic_object);
test_case!(redefined_loop_variables);
test_case!(keyed_array_list_inference);
test_case!(require_implements_inherited);
test_case!(readonly_proptected_set);
test_case!(value_of_enum_resolution);
test_case!(duplicate_enum_case_value);
test_case!(properties_of_enum);
test_case!(properties_of_class);
test_case!(properties_of_generic);
test_case!(properties_of_visibility);
test_case!(assert_or_type);
test_case!(impossible_assertion);
test_case!(negation_operand);
test_case!(mixed_operand_increment);
test_case!(infere_closure_parameter_type);
test_case!(negated_union_type);
test_case!(reference_constraint_violation);
test_case!(unreferencable_expression);
test_case!(pass_by_ref);
test_case!(return_by_ref);
test_case!(array_refs);
test_case!(ref_constraint_conflict);
test_case!(match_not_exhaustive);
test_case!(match_expression);
test_case!(match_arm_reaching);
test_case!(missing_constructor);
test_case!(property_initialization);
test_case!(parent_constructor_init);
test_case!(parent_static_return);
test_case!(property_hooks_initialization);
test_case!(trait_property_initialization);
test_case!(deep_inheritance_init);
test_case!(properties_added_to_context);
test_case!(throwing_exceptions);
test_case!(reference_reused_from_confusing_scope);
test_case!(reconcile_literl_class_string);
test_case!(class_string_is_never_equal_to_literal_string);
test_case!(narrow_class_string_match);
test_case!(narrow_non_final_class_string_match);
test_case!(expand_class_constant_type);
test_case!(iterator_to_array);
test_case!(arrow_function_inherits_method_templates);
test_case!(all_paths_return_value);
test_case!(reconcile_scalars);
test_case!(static_anonymous_class);
test_case!(private_static_method);
test_case!(method_docblock);
test_case!(property_docblock);
test_case!(untyped_property_docblock);
test_case!(count);
test_case!(array_key_exists);
test_case!(magic_methods);
test_case!(magic_properties);
test_case!(magic_property_overridden_by_parent);
test_case!(magic_methods_args);
test_case!(method_annotation_with_inheritance);
test_case!(array_shape_access);
test_case!(closure_wrap);
test_case!(arguments_unpacking);
test_case!(unknown_named_args);
test_case!(constant_type);
test_case!(match_true_and_false);
test_case!(array_reconcile);
test_case!(sealed_array_combine);
test_case!(object_shape);
test_case!(optional_object_with_properties);
test_case!(unsealed_array_overlap);
test_case!(echo_tag);
test_case!(var_docblock);
test_case!(redundant_var_docblock);
test_case!(magic_method_trait);
test_case!(real_pseudo_method);
test_case!(pseudo_method_override);
test_case!(parent_magic_method_call);
test_case!(chunk);
test_case!(chunk_with_keys);
test_case!(trait_alias_vis_self);
test_case!(trait_constant_override);
test_case!(trait_usage_errors);
test_case!(trait_method_closure_self);
test_case!(method_signature_parameter_count);
test_case!(method_signature_param_types);
test_case!(method_signature_return_types);
test_case!(return_type_override_native_vs_docblock);
test_case!(conditional_return_with_default_parameters);
test_case!(conditional_return_class_string_not_literal);
test_case!(conditional_return_class_string_selection);
test_case!(method_signature_visibility);
test_case!(method_signature_static);
test_case!(trait_method_conflicts);
test_case!(trait_property_visibility_conflicts);
test_case!(trait_property_default_value_conflicts);
test_case!(trait_class_property_conflicts);
test_case!(trait_property_static_modifiers);
test_case!(trait_property_type_conflicts);
test_case!(trait_property_hierarchy_conflicts);
test_case!(trait_property_readonly_conflicts);
test_case!(readonly_class_trait_non_readonly_property);
test_case!(test_visibility);
test_case!(test_minimal_static);
test_case!(interface_template_signatures);
test_case!(method_signature_complex);
test_case!(method_signature_edge_cases);
test_case!(method_signature_parameter_names);
test_case!(method_signature_template_substitution);
test_case!(multi_level_template_inheritance);
test_case!(true_ident);
test_case!(eliminate_true_and_false_from_scalar);
test_case!(subtract_objects);
test_case!(sealed_class_2_inheritors);
test_case!(sealed_class_5_inheritors);
test_case!(sealed_class_7_inheritors);
test_case!(sealed_class_10_inheritors);
test_case!(sealed_class_15_inheritors);
test_case!(sealed_class_performance);
test_case!(class_instance);
test_case!(conditional_return);
test_case!(literal_int);
test_case!(calling_interface_methods_from_trait);
test_case!(parent_class_constant_validation);
test_case!(interface_constant_validation);
test_case!(trait_constant_conflicts);
test_case!(trait_constant_direct_access);
test_case!(trait_constant_access);
test_case!(trait_override_final_methods);
test_case!(inheritdoc_basic_parent_class);
test_case!(inheritdoc_multiple_interfaces);
test_case!(inheritdoc_nested_generics);
test_case!(inheritdoc_priority);
test_case!(inheritdoc_contravariant_parameters);
test_case!(inherited_docblock_narrowing);
test_case!(type_alias_basic);
test_case!(type_alias_import);
test_case!(type_alias_import_rename);
test_case!(type_alias_complex_types);
test_case!(type_alias_phpstan);
test_case!(type_alias_syntax);
test_case!(type_alias_in_class_method_parameters);
test_case!(change_private_parent_prop);
test_case!(class_in_alias);
test_case!(index_access);
test_case!(merge_arrays_non_empty);
test_case!(expand_generic_params);
test_case!(nullsafe_operator_chain_shortcircuit);
test_case!(property_docblock_type_annotation);
test_case!(array_key_access_after_existence_check);
test_case!(mb_encoding);
test_case!(psl_awaitable_promise);
test_case!(partial_application_function);
test_case!(partial_application_method);
test_case!(partial_application_static_method);
test_case!(partial_application_templates);
test_case!(partial_application_type_inference);
test_case!(partial_application_simple);
test_case!(partial_application_named_argument_reordering);
test_case!(octal_zero_prefix);
test_case!(switch_semicolon);
test_case!(redundant_assert);
test_case!(union_template_constraint);
test_case!(class_string_union_constraint);
test_case!(float_string_concat);
test_case!(array_key_concat);
test_case!(string_concat_combination_threshold);
test_case!(template_concat_operand);
test_case!(iterator_type_inference);
test_case!(unused_template_parameter);
test_case!(unused_function_template_parameter);
test_case!(unused_method);
test_case!(unused_property);
test_case!(unused_edge_cases);
test_case!(uninitialized_property);
test_case!(property_hooks);
test_case!(interface_property_hook);
test_case!(trait_require_implements_self_return);
test_case!(trait_require_extends_self_return);
test_case!(trait_require_combined);
test_case!(interface_assertion);
test_case!(nullsafe_chain_bug);
test_case!(class_string_instantiation);
test_case!(class_string_comparison);
test_case!(static_var_lazy_init);
test_case!(static_var_coalesce);
test_case!(array_coalesce_assign_check);
test_case!(factory_null_params);
test_case!(clone_dynamic_class);
test_case!(nullable_method_coalesce);
test_case!(property_coalesce_init);
test_case!(ctype_digit_check);
test_case!(mutually_exclusive_null);
test_case!(null_array_key);
test_case!(nullable_getter_check);
test_case!(abstract_factory_pattern);
test_case!(array_key_coalesce);
test_case!(defensive_type_check);
test_case!(enum_empty_check);
test_case!(optional_chain_method);
test_case!(compound_condition);
test_case!(instanceof_assertion);
test_case!(instanceof_unresolved_class);
test_case!(type_narrowing_external);
test_case!(traversable_array_iterable_compare);
test_case!(pseudo_method_on_interface);
test_case!(dom_node_list_array_access);
test_case!(iterable_instanceof_traversable_narrow, crate::framework::infection_like_settings());
test_case!(generator_is_iterator_subtype, crate::framework::infection_like_settings());
test_case!(explode_then_assert_count, crate::framework::infection_like_settings());
test_case!(iterable_not_iterator_keeps_aggregate, crate::framework::infection_like_settings());
test_case!(finally_inherits_call_invalidations);
test_case!(post_narrowing_check);
test_case!(data_transformer_type);
test_case!(symbol_existence_assertions);
test_case!(symbol_existence_edge_cases);
test_case!(type_assert);
test_case!(string_callable_template_inference);
test_case!(clear_narrowed_prop_after_call);
test_case!(binary_throw_used);
test_case!(template_null_comparison);
test_case!(finally_after_return);
test_case!(property_magic_constant);
test_case!(variable_key_narrowing_not_null);
test_case!(bad_path_abstract_instantiation);
test_case!(bad_path_interface_instantiation);
test_case!(bad_path_enum_instantiation);
test_case!(bad_path_invalid_break);
test_case!(bad_path_invalid_continue);
test_case!(bad_path_null_operand);
test_case!(bad_path_null_iterator);
test_case!(bad_path_null_property_access);
test_case!(bad_path_method_access_on_null);
test_case!(bad_path_possibly_null_operand);
test_case!(bad_path_possibly_null_iterator);
test_case!(bad_path_possibly_null_property_access);
test_case!(bad_path_invalid_iterator);
test_case!(bad_path_invalid_clone);
test_case!(bad_path_invalid_throw);
test_case!(bad_path_redundant_null_coalesce);
test_case!(bad_path_redundant_nullsafe);
test_case!(bad_path_assignment_to_this);
test_case!(typed_property_null_coalesce);
test_case!(docblock_var_override_foreach);
test_case!(mixin);
test_case!(issue_contravariant_params_diamond);
test_case!(issue_contravariant_params_simple);
test_case!(anonymous_class_constructor_args);
test_case!(undefined_type_reference);
test_case!(duplicate_definition);
test_case!(method_call_assertions);
test_case!(invalid_default_values);
test_case!(class_must_be_final, {
let mut s = crate::framework::default_test_settings();
s.enforce_class_finality = true;
s
});
test_case!(missing_api_or_internal, {
let mut s = crate::framework::default_test_settings();
s.require_api_or_internal = true;
s
});
test_case!(pipe_callable_implicit_types_arrow, {
let mut s = crate::framework::default_test_settings();
s.check_missing_type_hints = true;
s.check_arrow_function_missing_type_hints = true;
s.allow_implicit_pipe_callable_types = true;
s
});
test_case!(pipe_callable_implicit_types_closure, {
let mut s = crate::framework::default_test_settings();
s.check_missing_type_hints = true;
s.check_closure_missing_type_hints = true;
s.allow_implicit_pipe_callable_types = true;
s
});
test_case!(pipe_callable_no_implicit_types_warns, {
let mut s = crate::framework::default_test_settings();
s.check_missing_type_hints = true;
s.check_arrow_function_missing_type_hints = true;
s.allow_implicit_pipe_callable_types = false;
s
});
test_case!(pipe_callable_implicit_types_outside_pipe_warns, {
let mut s = crate::framework::default_test_settings();
s.check_missing_type_hints = true;
s.check_arrow_function_missing_type_hints = true;
s.allow_implicit_pipe_callable_types = true;
s
});
test_case!(spread_list);
test_case!(or_never);
test_case!(abstract_method_inheritance);
test_case!(variadic_array_type);
test_case!(parse_str);
test_case!(assertion_after_side_effect);
test_case!(undefined_string_key_in_union);
test_case!(possibly_undefined_string_key_in_union, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = true;
s
});
test_case!(only_ascii_is_caseless);
test_case!(allow_unknown_array_key_in_assignment);
test_case!(psl_async_integration);
test_case!(parent_static_call_template_resolution);
test_case!(bitwise_shift_bounds);
test_case!(isset_after_loop_break);
test_case!(callable_string);
test_case!(session_set_save_handler);
test_case!(session_set_cookie_params);
test_case!(psl_math);
test_case!(psl_break_mixed);
test_case!(psl_max_return_type);
test_case!(psl_min_return_type);
test_case!(psl_total_length_range);
test_case!(psl_proc_open_pipes);
test_case!(psl_array_filter_nullable);
test_case!(psl_isset_optional_key);
test_case!(wildcard_type);
test_case!(psl_regressions);
test_case!(docblock_parameter_narrowing);
test_case!(new_and_template_type_utilities);
test_case!(overly_wide_return_type, {
let mut s = crate::framework::default_test_settings();
s.find_overly_wide_return_types = true;
s
});
test_case!(side_effects_in_condition, {
let mut s = crate::framework::default_test_settings();
s.allow_side_effects_in_conditions = false;
s
});
test_case!(relax_class_constant_reserved_name);
test_case!(relax_int_mask_of_global_wildcard);
test_case!(relax_int_mask_of_ulid_format_wildcard);
test_case!(relax_int_range_unbounded_keyword);
test_case!(relax_non_zero_int);
test_case!(relax_trailing_pipe_in_union);
test_case!(issue_combiner_empty_vec);
test_case!(scalars_int_literal_basic);
test_case!(scalars_int_literal_radix);
test_case!(scalars_int_literal_underscore);
test_case!(scalars_float_literal_basic);
test_case!(scalars_float_constants);
test_case!(scalars_int_constants);
test_case!(scalars_bool_literals);
test_case!(scalars_abs_int);
test_case!(scalars_addition_floats);
test_case!(scalars_addition_int_float_yields_float);
test_case!(scalars_addition_literals);
test_case!(scalars_arith_array_rejected);
test_case!(scalars_arith_null_rejected);
test_case!(scalars_arith_object_rejected);
test_case!(scalars_array_to_int_param);
test_case!(scalars_assert_int_widens);
test_case!(scalars_assign_zero_to_positive_int_invalid);
test_case!(scalars_bitwise_and);
test_case!(scalars_bitwise_not);
test_case!(scalars_bitwise_or);
test_case!(scalars_bitwise_shift_left);
test_case!(scalars_bitwise_shift_right);
test_case!(scalars_bitwise_xor);
test_case!(scalars_bool_concat);
test_case!(scalars_bool_in_match_subject);
test_case!(scalars_bool_to_int_param_strict);
test_case!(scalars_boolval);
test_case!(scalars_cast_bool_to_int);
test_case!(scalars_cast_float_to_int);
test_case!(scalars_cast_int_to_bool);
test_case!(scalars_cast_int_to_float);
test_case!(scalars_cast_int_to_string);
test_case!(scalars_cast_string_to_int);
test_case!(scalars_chained_arith);
test_case!(scalars_chained_comparison);
test_case!(scalars_class_int_constant);
test_case!(scalars_class_int_constant_arith);
test_case!(scalars_comparison_gt);
test_case!(scalars_comparison_le_ge);
test_case!(scalars_comparison_lt);
test_case!(scalars_compound_and_int);
test_case!(scalars_compound_div_zero);
test_case!(scalars_compound_minus_int);
test_case!(scalars_compound_or_int);
test_case!(scalars_compound_plus_int);
test_case!(scalars_compound_pow_int);
test_case!(scalars_compound_shift_int);
test_case!(scalars_compound_times_int);
test_case!(scalars_compound_xor_int);
test_case!(scalars_decrement_int);
test_case!(scalars_div_by_literal_zero);
test_case!(scalars_div_by_neg);
test_case!(scalars_div_by_nonzero_int_pass);
test_case!(scalars_div_by_zero_via_variable);
test_case!(scalars_div_int_int_could_be_float);
test_case!(scalars_enum_int_value);
test_case!(scalars_eq_loose_int_zero_string_abc);
test_case!(scalars_eq_loose_string_int);
test_case!(scalars_eq_zero_returns_zero);
test_case!(scalars_float_cast_int);
test_case!(scalars_float_default_for_int_param);
test_case!(scalars_float_max_compare);
test_case!(scalars_float_to_int_param_strict);
test_case!(scalars_float_with_string_concat);
test_case!(scalars_floatval);
test_case!(scalars_fmod_basic);
test_case!(scalars_for_loop_starting_at_zero);
test_case!(scalars_impossible_is_int_on_string);
test_case!(scalars_increment_int);
test_case!(scalars_inf_arithmetic);
test_case!(scalars_int_arg_to_int_pass);
test_case!(scalars_int_arg_to_negative_int_invalid);
test_case!(scalars_int_arg_to_positive_int_invalid);
test_case!(scalars_int_arg_via_intval);
test_case!(scalars_int_array_index);
test_case!(scalars_int_array_negative_index);
test_case!(scalars_int_cast_negative_float);
test_case!(scalars_int_const_arith_in_default);
test_case!(scalars_int_div_returns_float_when_inexact);
test_case!(scalars_int_div_yields_intfloat_widened);
test_case!(scalars_int_division_yields_int_or_float);
test_case!(scalars_int_in_array_shape);
test_case!(scalars_int_in_loop_condition);
test_case!(scalars_int_in_match_arm_value);
test_case!(scalars_int_keyed_array_index);
test_case!(scalars_int_max_compare);
test_case!(scalars_int_min_minus_one_overflow);
test_case!(scalars_int_minus_one_keeps_int);
test_case!(scalars_int_or_float_function_parameter);
test_case!(scalars_int_overflow_in_pow);
test_case!(scalars_int_overflow_phpintmax_plus_one);
test_case!(scalars_int_range_disjoint_rejected);
test_case!(scalars_int_range_inclusive);
test_case!(scalars_int_range_lower_bound_violation);
test_case!(scalars_int_range_subset_pass);
test_case!(scalars_int_range_unbounded_high);
test_case!(scalars_int_range_unbounded_low);
test_case!(scalars_int_range_upper_bound_violation);
test_case!(scalars_int_returned_within_range);
test_case!(scalars_int_returned_zero_for_zero);
test_case!(scalars_int_size_branch);
test_case!(scalars_int_to_float_in_division);
test_case!(scalars_int_to_float_param_strict);
test_case!(scalars_int_to_float_promotion_in_div);
test_case!(scalars_int_to_negative_int_invalid);
test_case!(scalars_int_typed_param_default);
test_case!(scalars_int_typedef_or_alias);
test_case!(scalars_int_unsigned_clamp_assign);
test_case!(scalars_int_with_string_concat);
test_case!(scalars_intdiv_basic);
test_case!(scalars_intdiv_by_zero);
test_case!(scalars_intdiv_negative_truncates);
test_case!(scalars_intval_negative_base_invalid);
test_case!(scalars_intval_radix);
test_case!(scalars_intval_string);
test_case!(scalars_invalid_return_int_for_positive);
test_case!(scalars_is_bool_narrows);
test_case!(scalars_is_float_narrows);
test_case!(scalars_is_int_narrows);
test_case!(scalars_is_numeric_narrows);
test_case!(scalars_literal_float_in_property_default);
test_case!(scalars_literal_int_in_property_default);
test_case!(scalars_literal_overflow_to_float);
test_case!(scalars_loop_index_passed_to_positive_int);
test_case!(scalars_match_int_value);
test_case!(scalars_min_max_int);
test_case!(scalars_modulo_basic);
test_case!(scalars_modulo_by_zero);
test_case!(scalars_compound_modulo_by_zero);
test_case!(scalars_modulo_negative_dividend);
test_case!(scalars_shift_left_by_negative);
test_case!(scalars_shift_right_by_negative);
test_case!(scalars_multiplication_literals);
test_case!(scalars_nan_comparison_always_false);
test_case!(scalars_negate_int_yields_int);
test_case!(scalars_negation_constant);
test_case!(scalars_negative_int_pass);
test_case!(scalars_negative_int_positive_rejected);
test_case!(scalars_negative_int_zero_rejected);
test_case!(scalars_negative_zero_float);
test_case!(scalars_non_negative_int_negative_rejected);
test_case!(scalars_non_negative_int_pass);
test_case!(scalars_non_positive_int_pass);
test_case!(scalars_non_positive_int_positive_rejected);
test_case!(scalars_non_zero_int_pass);
test_case!(scalars_non_zero_int_zero_rejected);
test_case!(scalars_null_to_int_param_strict);
test_case!(scalars_paren_arith);
test_case!(scalars_pi_circumference);
test_case!(scalars_pos_int_added_keeps_pos);
test_case!(scalars_pos_int_after_increment);
test_case!(scalars_positive_int_negative_rejected);
test_case!(scalars_positive_int_pass);
test_case!(scalars_positive_int_property_default_zero);
test_case!(scalars_positive_int_zero_rejected);
test_case!(scalars_pow_int_exponent_zero);
test_case!(scalars_pow_int_int);
test_case!(scalars_pow_negative_exponent);
test_case!(scalars_pow_overflow_to_float);
test_case!(scalars_pow_zero_zero);
test_case!(scalars_promoted_int_to_float_in_assign);
test_case!(scalars_range_narrowing_combined_guards);
test_case!(scalars_range_narrowing_eq_zero);
test_case!(scalars_range_narrowing_ge_guard);
test_case!(scalars_range_narrowing_gt_guard);
test_case!(scalars_range_narrowing_le_guard);
test_case!(scalars_range_narrowing_lt_guard);
test_case!(scalars_range_narrowing_neq_zero);
test_case!(scalars_redundant_compare_in_range);
test_case!(scalars_redundant_int_compare);
test_case!(scalars_redundant_is_float_on_float);
test_case!(scalars_redundant_is_int_on_int);
test_case!(scalars_round_returns_float);
test_case!(scalars_spaceship_int);
test_case!(scalars_static_int_property);
test_case!(scalars_strict_arith_string_in_var);
test_case!(scalars_strict_arith_string_rejected);
test_case!(scalars_strict_equality_int_string);
test_case!(scalars_strict_inequality_int_float);
test_case!(scalars_string_default_for_int_param);
test_case!(scalars_string_increment_ok);
test_case!(scalars_string_to_int_param_strict);
test_case!(scalars_subtraction_literals);
test_case!(scalars_sum_in_loop_keeps_int);
test_case!(scalars_ternary_int_literals);
test_case!(scalars_truthy_int_in_condition);
test_case!(scalars_unary_minus_int);
test_case!(scalars_unary_minus_phpintmin_overflow);
test_case!(scalars_unary_plus_int);
test_case!(scalars_unsigned_int_after_abs);
test_case!(scalars_xor_with_self);
test_case!(callables_basic_function_call);
test_case!(callables_named_arg_unknown_after_positional);
test_case!(callables_pass_string_to_closure_param);
test_case!(callables_param_default_int);
test_case!(callables_default_uses_class_constant);
test_case!(callables_optional_after_required);
test_case!(callables_too_few_arguments);
test_case!(callables_too_many_arguments);
test_case!(callables_wrong_argument_type);
test_case!(callables_null_argument_to_non_null);
test_case!(callables_false_argument_to_non_false);
test_case!(callables_named_argument_basic);
test_case!(callables_named_argument_unknown);
test_case!(callables_named_argument_overrides_positional);
test_case!(callables_variadic_int_basic);
test_case!(callables_variadic_wrong_type);
test_case!(callables_variadic_strict_default_is_not_a_list);
test_case!(callables_variadic_no_named_arguments_is_list);
test_case!(callables_spread_array_into_args);
test_case!(callables_spread_assoc_as_named);
test_case!(callables_spread_assoc_unknown_name);
test_case!(callables_by_reference_basic);
test_case!(callables_by_reference_literal);
test_case!(callables_by_reference_array_element);
test_case!(callables_closure_basic_call);
test_case!(callables_closure_use_by_value);
test_case!(callables_closure_use_by_reference);
test_case!(callables_arrow_function_inherits_scope);
test_case!(callables_static_closure);
test_case!(callables_static_arrow_function);
test_case!(callables_first_class_callable_function);
test_case!(callables_first_class_static_method);
test_case!(callables_first_class_instance_method);
test_case!(callables_closure_from_callable_string);
test_case!(callables_closure_from_callable_method);
test_case!(callables_closure_bind_to_class);
test_case!(callables_callable_param_called);
test_case!(callables_callable_typed_wrong_arity);
test_case!(strings_non_empty_via_inequality);
test_case!(strings_non_empty_via_truthy_guard);
test_case!(strings_empty_string_failure);
test_case!(strings_strtolower_returns_lowercase);
test_case!(strings_strtoupper_returns_uppercase);
test_case!(strings_strtolower_preserves_non_empty);
test_case!(strings_concat_literal_prefix_is_non_empty);
test_case!(strings_concat_two_unknown_strings);
test_case!(strings_concat_non_empty_with_string);
test_case!(strings_compound_assign_with_literal);
test_case!(strings_concat_with_array_fails);
test_case!(strings_concat_with_null_implicit);
test_case!(strings_concat_with_bool_invalid);
test_case!(strings_interpolation_of_non_stringable_object);
test_case!(strings_class_exists_narrows_to_class_string);
test_case!(strings_interface_exists_narrows);
test_case!(strings_enum_exists_narrows);
test_case!(strings_trait_exists_narrows);
test_case!(strings_function_exists_narrows);
test_case!(strings_class_string_constraint_violation);
test_case!(strings_class_string_throwable_ok);
test_case!(strings_strlen_returns_non_negative);
test_case!(strings_strlen_of_non_empty_is_positive);
test_case!(strings_explode_returns_list_with_separator);
test_case!(strings_implode_basic);
test_case!(strings_implode_single_empty_element);
test_case!(strings_str_contains_returns_bool);
test_case!(strings_numeric_string_intval);
test_case!(strings_is_string_narrows);
test_case!(strings_is_numeric_narrows_to_numeric_string);
test_case!(strings_heredoc_with_interpolation);
test_case!(strings_nowdoc_is_literal);
test_case!(strings_empty_heredoc_is_empty);
test_case!(strings_single_quote_no_interpolation);
test_case!(strings_ord_returns_int);
test_case!(strings_invalid_argument_to_strtolower);
test_case!(strings_invalid_argument_to_strlen);
test_case!(strings_preg_match_returns_int_or_false);
test_case!(strings_trim_returns_string);
test_case!(strings_trim_does_not_preserve_non_empty);
test_case!(strings_sprintf_returns_string);
test_case!(strings_number_format_returns_string);
test_case!(strings_urlencode_returns_string);
test_case!(strings_concat_assigning_compound_grows);
test_case!(strings_non_empty_literal_string_empty_fails);
test_case!(strings_non_empty_literal_string_basic);
test_case!(strings_strpos_returns_int_or_false);
test_case!(strings_strpos_arithmetic_with_false_warns);
test_case!(strings_preg_replace_returns_nullable);
test_case!(strings_preg_replace_with_null_check);
test_case!(strings_str_replace_with_array_returns_array);
test_case!(strings_lowercase_string_passed_to_string);
test_case!(strings_string_to_lowercase_fails);
test_case!(strings_string_to_uppercase_fails);
test_case!(strings_string_to_numeric_fails);
test_case!(strings_string_to_callable_string_fails);
test_case!(strings_eq_empty_narrows_to_empty);
test_case!(strings_concat_two_literals_is_literal);
test_case!(strings_concat_literal_with_variable_is_not_literal);
test_case!(strings_match_literal_string_exhaustive);
test_case!(strings_class_constant_string_value);
test_case!(strings_implode_with_non_string_array_fails);
test_case!(strings_strstr_returns_string_or_false);
test_case!(strings_mb_strlen_returns_int);
test_case!(strings_mb_substr_returns_string);
test_case!(strings_mb_strtolower_returns_string);
test_case!(strings_function_exists_else_branch_unrefined);
test_case!(strings_substr_with_array);
test_case!(strings_strtolower_with_bool);
test_case!(strings_strlen_with_null);
test_case!(strings_strlen_with_object);
test_case!(strings_implode_with_int_glue);
test_case!(strings_number_format_too_many_arguments);
test_case!(strings_str_split_with_int);
test_case!(strings_chr_with_string_argument);
test_case!(strings_ord_with_int_argument);
test_case!(strings_sprintf_with_non_string_format);
test_case!(strings_concat_string_with_array);
test_case!(strings_concat_compound_left_array);
test_case!(strings_array_to_string_in_double_quote);
test_case!(strings_concat_with_resource);
test_case!(strings_redundant_strlen_check);
test_case!(strings_match_string_redundant_arm);
test_case!(strings_redundant_string_eq_literal);
test_case!(strings_redundant_strlen_of_literal);
test_case!(strings_string_intersected_with_stringable);
test_case!(strings_stringable_to_string_implicit);
test_case!(strings_ucfirst_with_int);
test_case!(strings_ucwords_with_array);
test_case!(strings_bin2hex_with_array);
test_case!(strings_str_replace_with_int_search);
test_case!(strings_preg_match_with_int_pattern);
test_case!(strings_explode_with_bool_separator);
test_case!(strings_strrev_with_int);
test_case!(strings_htmlspecialchars_with_int);
test_case!(strings_urlencode_with_array);
test_case!(strings_invalid_property_default_string_to_int);
test_case!(strings_undefined_variable_in_interpolation);
test_case!(strings_preg_replace_with_int_subject);
test_case!(strings_mb_strlen_with_int);
test_case!(strings_mb_substr_with_int);
test_case!(strings_mb_strtolower_with_int);
test_case!(strings_sprintf_with_object_argument);
test_case!(strings_ltrim_with_int);
test_case!(strings_rtrim_with_int);
test_case!(strings_wordwrap_with_int);
test_case!(strings_str_pad_with_array);
test_case!(strings_str_starts_with_with_int);
test_case!(strings_strpos_with_int_needle);
test_case!(strings_printf_with_array_format);
test_case!(strings_concat_array_returned_from_method);
test_case!(strings_assign_string_to_int_property);
test_case!(strings_class_string_eq_other_class_string);
test_case!(generics_basic_box_clean);
test_case!(generics_identity_function_clean);
test_case!(generics_identity_inferred_string);
test_case!(generics_constrained_template_violated);
test_case!(generics_pair_two_params_clean);
test_case!(generics_pair_missing_template);
test_case!(generics_pair_excess_template);
test_case!(generics_unused_template_class);
test_case!(generics_unused_template_function);
test_case!(generics_constrained_class_string_violation);
test_case!(generics_constrained_class_string_clean);
test_case!(generics_template_extends_clean);
test_case!(generics_template_extends_specialized);
test_case!(generics_template_implements_clean);
test_case!(generics_template_use_clean);
test_case!(generics_deeply_nested_clean);
test_case!(generics_deeply_nested_inner_mismatch);
test_case!(generics_generic_method_on_generic_class);
test_case!(generics_template_inference_array_of_int);
test_case!(generics_template_inference_wrong_arg);
test_case!(generics_default_fill_constraint);
test_case!(generics_array_keyvalue_template);
test_case!(generics_class_string_new);
test_case!(generics_class_string_new_subclass);
test_case!(generics_template_extends_with_nullable);
test_case!(generics_recursive_tree);
test_case!(generics_recursive_self_returning_method);
test_case!(generics_iterator_template_use);
test_case!(generics_template_constraint_object);
test_case!(generics_template_constraint_violation_object);
test_case!(generics_template_inference_callable);
test_case!(generics_template_inference_callable_wrong_input);
test_case!(generics_template_in_method_return);
test_case!(generics_template_in_method_return_wrong);
test_case!(generics_template_three_params);
test_case!(generics_template_iterator_extends);
test_case!(generics_template_iterator_value_to_int);
test_case!(generics_template_extends_chain);
test_case!(generics_template_default_iterator);
test_case!(generics_template_extends_substituted);
test_case!(generics_method_template_distinct_from_class);
test_case!(generics_template_in_property_array);
test_case!(generics_template_in_property_array_wrong_add);
test_case!(generics_template_return_array_value);
test_case!(generics_template_default_iterator_kv);
test_case!(generics_template_in_constructor_only);
test_case!(generics_template_intersection_constraint);
test_case!(generics_template_union_constraint);
test_case!(generics_template_union_constraint_violation);
test_case!(generics_template_recursive_node);
test_case!(generics_template_in_static_method);
test_case!(generics_template_two_level_inference);
test_case!(generics_template_constrained_array_key);
test_case!(generics_template_returning_self);
test_case!(generics_template_returns_static);
test_case!(generics_iterator_aggregate_implements);
test_case!(generics_template_array_to_list_inference);
test_case!(generics_template_callable_passes_string_pred);
test_case!(generics_template_callable_returning_t);
test_case!(generics_template_callable_returning_t_wrong);
test_case!(generics_template_chained_call_wrong_consumer);
test_case!(generics_template_class_constant);
test_case!(generics_template_constrained_string);
test_case!(generics_template_constraint_callable);
test_case!(generics_template_constraint_class_only_subclass);
test_case!(generics_template_constraint_class_only_unrelated);
test_case!(generics_template_constraint_int_violated_explicit);
test_case!(generics_template_constraint_traversable);
test_case!(generics_template_contravariant_comparator);
test_case!(generics_template_covariant_class);
test_case!(generics_template_default_value_widening);
test_case!(generics_template_double_box);
test_case!(generics_template_function_construct_wrong_consumer);
test_case!(generics_template_function_with_return_construct);
test_case!(generics_template_in_array_keys);
test_case!(generics_template_in_array_values);
test_case!(generics_template_in_chained_call);
test_case!(generics_template_in_class_constants);
test_case!(generics_template_in_constructor_property);
test_case!(generics_template_in_interface_method);
test_case!(generics_template_in_method_param_constraint);
test_case!(generics_template_in_static_factory);
test_case!(generics_template_inference_in_array_call);
test_case!(generics_template_inferred_default_widens);
test_case!(generics_template_inferred_from_default_arg);
test_case!(generics_template_inferred_in_array_destruct);
test_case!(generics_template_inheritance_diamond);
test_case!(generics_template_inheritance_substitute);
test_case!(generics_template_invariant_rejects_subtype);
test_case!(generics_template_iterable_param);
test_case!(generics_template_no_widening_in_setter);
test_case!(generics_template_optional_param);
test_case!(generics_template_optional_with_value);
test_case!(generics_template_property_setter_invariant);
test_case!(generics_template_specialized_class_no_constraint);
test_case!(generics_template_static_with_t_in_method);
test_case!(generics_template_sub_extends_more_specific);
test_case!(generics_template_use_in_trait);
test_case!(generics_template_use_in_trait_wrong_record);
test_case!(generics_template_var_in_local);
test_case!(generics_template_with_param_out);
test_case!(generics_template_with_string_inference);
test_case!(generics_box_setter_wrong_type);
test_case!(generics_function_inferred_int_array_to_string);
test_case!(generics_int_template_string_arg);
test_case!(generics_invariant_widening_assign);
test_case!(generics_pair_first_wrong);
test_case!(generics_pair_second_wrong);
test_case!(generics_template_apply_wrong_callable);
test_case!(generics_template_callable_in_then_t);
test_case!(generics_template_callable_returning_t_param_wrong);
test_case!(generics_template_class_string_constraint_str);
test_case!(generics_template_constraint_iface_unrelated);
test_case!(generics_template_extends_too_few);
test_case!(generics_template_extends_too_many);
test_case!(generics_template_extends_violation);
test_case!(generics_template_implements_too_few);
test_case!(generics_template_implements_too_many);
test_case!(generics_template_implements_violation);
test_case!(generics_template_iter_value_consumer_wrong);
test_case!(generics_template_unused_in_method_only);
test_case!(generics_template_unused_method);
test_case!(generics_template_use_violation);
test_case!(generics_template_var_widening_wrong);
test_case!(generics_unused_in_typed_alias);
test_case!(flow_if_else_null_narrow);
test_case!(flow_early_return_narrow);
test_case!(flow_low_prec_and_narrows);
test_case!(flow_low_prec_or_narrows);
test_case!(flow_method_on_null_narrowed);
test_case!(flow_negated_is_int);
test_case!(flow_is_string_narrow);
test_case!(flow_is_array_narrow);
test_case!(flow_is_object_narrow);
test_case!(flow_is_bool_narrow);
test_case!(flow_is_float_narrow);
test_case!(flow_is_null_narrow);
test_case!(flow_instanceof_narrow);
test_case!(flow_instanceof_interface);
test_case!(flow_instanceof_abstract);
test_case!(flow_instanceof_enum);
test_case!(flow_ternary_narrow);
test_case!(flow_short_ternary);
test_case!(flow_null_coalesce);
test_case!(flow_null_coalesce_assign);
test_case!(flow_nullsafe_chain);
test_case!(flow_isset_simple);
test_case!(flow_isset_multi);
test_case!(flow_isset_property);
test_case!(flow_isset_variable);
test_case!(flow_empty_string);
test_case!(flow_match_exhaustive_enum);
test_case!(flow_match_non_exhaustive_enum);
test_case!(flow_match_bool_exhaustive);
test_case!(flow_match_multi_value_arm);
test_case!(flow_match_no_default_int);
test_case!(flow_match_no_match_throws);
test_case!(flow_switch_basic_narrow);
test_case!(flow_switch_default_narrow);
test_case!(flow_try_catch_throwable);
test_case!(flow_try_catch_specific);
test_case!(flow_try_multi_catch_pipe);
test_case!(flow_try_finally_no_catch);
test_case!(flow_throw_in_ternary);
test_case!(flow_throw_in_coalesce);
test_case!(flow_assert_narrow);
test_case!(flow_assert_false_unreachable);
test_case!(flow_eq_literal_string);
test_case!(flow_eq_literal_int);
test_case!(flow_eq_literal_true);
test_case!(flow_neq_literal_null);
test_case!(flow_and_short_circuit_narrow);
test_case!(flow_or_short_circuit_narrow);
test_case!(flow_for_loop_narrow);
test_case!(flow_foreach_loop_narrow);
test_case!(flow_while_loop_narrow);
test_case!(flow_do_while_loop);
test_case!(flow_break_exits_loop);
test_case!(flow_continue_skips);
test_case!(flow_continue_with_level);
test_case!(flow_loop_reassign_var);
test_case!(flow_elseif_chain);
test_case!(flow_negated_instanceof);
test_case!(flow_redundant_null_check);
test_case!(classes_basic_class_declaration);
test_case!(classes_final_class);
test_case!(classes_abstract_class);
test_case!(classes_abstract_instantiation);
test_case!(classes_readonly_class_declaration);
test_case!(classes_promoted_property_public);
test_case!(classes_promoted_property_private);
test_case!(classes_promoted_property_readonly);
test_case!(classes_promoted_property_with_default);
test_case!(classes_uninitialized_typed_property);
test_case!(classes_constructor_assigns_typed_property);
test_case!(classes_static_property_basic);
test_case!(classes_static_method_basic);
test_case!(classes_class_constant_basic);
test_case!(classes_typed_constant_mismatch);
test_case!(classes_class_keyword_constant);
test_case!(classes_class_keyword_on_object);
test_case!(classes_new_self_inside);
test_case!(classes_new_static_inside);
test_case!(classes_new_self_outside_scope);
test_case!(classes_new_static_outside_scope);
test_case!(classes_clone_basic);
test_case!(classes_clone_int);
test_case!(classes_clone_string);
test_case!(classes_clone_with_clone_magic);
test_case!(classes_property_assign_null_to_nonnullable);
test_case!(classes_anonymous_class_basic);
test_case!(classes_anonymous_class_constructor);
test_case!(classes_anonymous_class_capture_typed);
test_case!(classes_dynamic_new);
test_case!(classes_method_call_basic);
test_case!(classes_method_returns_self);
test_case!(classes_invoke_magic);
test_case!(classes_tostring_magic);
test_case!(classes_destructor);
test_case!(classes_call_magic);
test_case!(classes_call_static_magic);
test_case!(classes_get_set_magic);
test_case!(classes_serialize_magic);
test_case!(classes_debuginfo_magic);
test_case!(classes_enum_pure);
test_case!(classes_enum_string_backed);
test_case!(classes_enum_int_backed);
test_case!(classes_enum_cases);
test_case!(classes_enum_from_basic);
test_case!(classes_enum_tryfrom_basic);
test_case!(classes_enum_instantiation);
test_case!(classes_enum_duplicate_values);
test_case!(classes_readonly_write_outside);
test_case!(classes_readonly_write_in_method);
test_case!(classes_private_property_same_class_other_instance);
test_case!(classes_private_property_outside_access);
test_case!(classes_protected_property_outside_access);
test_case!(classes_nonexistent_property);
test_case!(classes_nonexistent_method);
test_case!(classes_invalid_argument_to_method);
test_case!(classes_too_few_arguments);
test_case!(classes_too_many_arguments);
test_case!(classes_invalid_property_assignment);
test_case!(classes_invalid_property_default);
test_case!(classes_method_chaining);
test_case!(classes_dynamic_property_access);
test_case!(classes_dynamic_method_call);
test_case!(classes_late_static_binding);
test_case!(classes_self_outside_class_const);
test_case!(classes_instanceof_self);
test_case!(classes_instanceof_static);
test_case!(classes_instanceof_dynamic);
test_case!(classes_class_const_expr_default);
test_case!(classes_constant_expr_in_param_default);
test_case!(classes_constructor_no_body_required);
test_case!(classes_property_hook_get_only);
test_case!(classes_property_hook_get_set);
test_case!(classes_property_hook_get_wrong_type);
test_case!(classes_property_hook_set_wrong_type);
test_case!(classes_property_hook_set_param_too_narrow);
test_case!(classes_asymmetric_visibility_private_set);
test_case!(classes_asymmetric_visibility_violation);
test_case!(classes_asymmetric_protected_set);
test_case!(classes_class_const_self_ref);
test_case!(classes_class_const_static_ref);
test_case!(classes_undefined_class_const);
test_case!(classes_clone_nullable_object);
test_case!(classes_clone_union_with_int);
test_case!(classes_static_property_access);
test_case!(classes_static_method_call_basic);
test_case!(classes_method_with_promoted_and_extra);
test_case!(classes_constructor_default_initializes);
test_case!(classes_method_returns_void);
test_case!(classes_method_missing_return);
test_case!(classes_invalid_return_type);
test_case!(classes_anonymous_class_method);
test_case!(classes_constructor_named_args);
test_case!(classes_constructor_unknown_named_arg);
test_case!(classes_method_unused_parameter);
test_case!(classes_static_call_on_instance_method);
test_case!(classes_instance_call_on_static_method);
test_case!(classes_method_returning_static);
test_case!(classes_method_returning_self);
test_case!(classes_method_property_access);
test_case!(classes_static_property_typed);
test_case!(classes_static_property_invalid_assign);
test_case!(classes_static_property_unknown);
test_case!(classes_property_default_match_type);
test_case!(classes_promoted_visibility_combination);
test_case!(classes_method_visibility_private_call_self);
test_case!(classes_enum_value_access);
test_case!(classes_enum_compare);
test_case!(classes_enum_method);
test_case!(classes_enum_const);
test_case!(classes_anonymous_class_with_property);
test_case!(classes_constructor_no_explicit);
test_case!(classes_constructor_too_many_args);
test_case!(classes_constructor_wrong_arg_type);
test_case!(classes_property_assign_method_arg);
test_case!(classes_method_throws);
test_case!(classes_method_returns_nullable);
test_case!(classes_constructor_complex_default);
test_case!(classes_class_const_typed_string);
test_case!(classes_assign_to_this);
test_case!(classes_invalid_method_argument_count);
test_case!(classes_invalid_method_argument_type);
test_case!(classes_method_invalid_return);
test_case!(classes_method_nullable_return);
test_case!(classes_method_falsable_return);
test_case!(classes_property_typed_string_assign_int);
test_case!(classes_property_typed_array_assign_int);
test_case!(classes_property_array_invalid_element);
test_case!(classes_constructor_promoted_invalid_default);
test_case!(classes_method_invalid_param_default);
test_case!(classes_method_chain_typed);
test_case!(classes_invalid_clone_array);
test_case!(classes_invalid_clone_null);
test_case!(classes_invalid_clone_bool);
test_case!(classes_invalid_clone_float);
test_case!(classes_method_invalid_argument_named);
test_case!(classes_unknown_property_write);
test_case!(classes_call_undefined_static_method);
test_case!(classes_method_call_on_null);
test_case!(classes_property_access_on_null);
test_case!(classes_method_returns_string_concat);
test_case!(classes_static_call_undefined);
test_case!(classes_property_invalid_default_int);
test_case!(classes_property_invalid_default_string);
test_case!(classes_static_property_invalid_default);
test_case!(classes_method_called_with_named_unknown);
test_case!(classes_promoted_invalid_argument);
test_case!(classes_method_invalid_throw);
test_case!(classes_property_unset_typed);
test_case!(classes_method_returning_iterable);
test_case!(classes_constant_access_through_object);
test_case!(classes_method_calls_clone_inside_loop);
test_case!(classes_method_returns_array_invalid);
test_case!(classes_constructor_param_widening);
test_case!(classes_property_assigned_via_promotion_only);
test_case!(classes_property_assign_to_readonly_after_init);
test_case!(classes_method_arg_invalid_object);
test_case!(classes_property_invalid_default_array);
test_case!(classes_method_returns_int_string);
test_case!(classes_method_returns_array_str);
test_case!(classes_method_arg_too_specific);
test_case!(classes_property_typed_assign_obj);
test_case!(classes_typed_const_array_mismatch);
test_case!(classes_typed_const_int_mismatch);
test_case!(classes_method_arg_nullable_to_required);
test_case!(classes_class_const_invalid_type);
test_case!(classes_method_returns_class_instead_of_self);
test_case!(classes_promoted_invalid_default_array);
test_case!(classes_method_invalid_call_named_dup);
test_case!(classes_method_named_after_positional);
test_case!(classes_property_assign_int_to_string);
test_case!(classes_method_invokes_unknown_call);
test_case!(classes_method_returns_void_misuse);
test_case!(classes_static_property_pass_assign_invalid);
test_case!(classes_method_invalid_arg_via_clone);
test_case!(classes_static_property_unknown_static);
test_case!(classes_method_call_too_few_named);
test_case!(classes_method_invalid_clone_inside);
test_case!(callables_array_callable_class_method);
test_case!(callables_array_callable_with_wrong_method);
test_case!(callables_array_map_with_closure);
test_case!(callables_arrow_returning_closure);
test_case!(callables_call_nullable_callable_unsafe);
test_case!(callables_callable_in_property);
test_case!(callables_callable_returning_int_to_string);
test_case!(callables_callable_returning_void_used);
test_case!(callables_callable_typed_call_returns_string);
test_case!(callables_closure_inside_class);
test_case!(callables_closure_returns_wrong_type);
test_case!(callables_closure_static_disallows_this);
test_case!(callables_func_get_args);
test_case!(callables_invalid_default_value);
test_case!(callables_invalid_unpack_type);
test_case!(callables_invalid_yield_outside_function);
test_case!(callables_invoke_int_as_function);
test_case!(callables_is_callable_narrowing);
test_case!(callables_is_callable_narrowing_string);
test_case!(callables_missing_return_statement);
test_case!(callables_named_argument_repeated);
test_case!(callables_nested_closure);
test_case!(callables_nullable_callable);
test_case!(callables_nullable_return_with_no_check);
test_case!(callables_pass_callable_to_int_param);
test_case!(callables_pass_int_callable_returning_string);
test_case!(callables_pass_invalid_callable);
test_case!(callables_pass_too_few_via_spread);
test_case!(callables_pure_function_marker);
test_case!(callables_recursive_closure_typed);
test_case!(callables_recursive_closure_via_static);
test_case!(callables_recursive_named_function);
test_case!(callables_return_int_in_string_function);
test_case!(callables_returning_closure_capturing_local);
test_case!(callables_string_callable_class_static);
test_case!(callables_string_callable_ucfirst);
test_case!(callables_too_many_arguments_via_unpack);
test_case!(callables_typed_callable_returning_array);
test_case!(callables_typed_signature_mismatched);
test_case!(callables_unused_param);
test_case!(callables_use_combined_value_and_ref);
test_case!(callables_usort_with_closure);
test_case!(callables_variadic_with_named);
test_case!(callables_void_function_used_in_expr);
test_case!(callables_err_arrow_returns_wrong);
test_case!(callables_err_call_undef_method_array);
test_case!(callables_err_callable_called_too_few);
test_case!(callables_err_callable_returns_void_used);
test_case!(callables_err_closure_param_invalid_default);
test_case!(callables_err_first_class_called_too_many);
test_case!(callables_err_first_class_called_wrong_type);
test_case!(callables_err_invalid_arg_position_two);
test_case!(callables_err_invalid_arg_to_closure);
test_case!(callables_err_invalid_method_access_on_callable);
test_case!(callables_err_invalid_return_in_closure);
test_case!(callables_err_invalid_unpack_named_with_pos_after);
test_case!(callables_err_invalid_unpack_too_many);
test_case!(callables_err_named_invalid_type);
test_case!(callables_err_null_to_closure);
test_case!(callables_err_param_count_zero_too_many);
test_case!(callables_err_pass_array_to_callable);
test_case!(callables_err_pass_int_to_callable_param);
test_case!(callables_err_pass_int_to_string_callable);
test_case!(callables_err_pass_int_to_string_param);
test_case!(callables_err_pass_string_int_in_strict);
test_case!(callables_err_too_few_args_arrow);
test_case!(callables_err_too_few_named);
test_case!(callables_err_too_many_args_arrow);
test_case!(callables_err_too_many_via_named);
test_case!(callables_err_unfit_callable_signature);
test_case!(callables_err_unused_function_call);
test_case!(flow_array_key_exists_narrow);
test_case!(flow_assert_instanceof);
test_case!(flow_assert_truthy_narrow);
test_case!(flow_assign_in_condition);
test_case!(flow_assign_in_match);
test_case!(flow_break_with_level);
test_case!(flow_catch_then_rethrow);
test_case!(flow_chained_nullsafe_method);
test_case!(flow_chained_or_narrow);
test_case!(flow_combined_isset_null);
test_case!(flow_double_isset_short_circuit);
test_case!(flow_else_throws_narrows);
test_case!(flow_empty_match_throws);
test_case!(flow_eq_false_narrow);
test_case!(flow_eq_literal_subset);
test_case!(flow_falsy_check);
test_case!(flow_finally_after_break);
test_case!(flow_finally_only_runs);
test_case!(flow_finally_runs_after_throw);
test_case!(flow_for_loop_init_var);
test_case!(flow_for_loop_iteration_var);
test_case!(flow_for_loop_modify_outer);
test_case!(flow_implicit_return_after_loop);
test_case!(flow_impossible_is_int);
test_case!(flow_in_array_narrow);
test_case!(flow_inner_closure_no_narrow);
test_case!(flow_int_eq_negative);
test_case!(flow_int_range_narrow);
test_case!(flow_is_callable_narrow);
test_case!(flow_is_countable_narrow);
test_case!(flow_is_iterable_narrow);
test_case!(flow_is_numeric_narrow);
test_case!(flow_is_resource_narrow);
test_case!(flow_is_scalar_narrow);
test_case!(flow_isset_after_loop);
test_case!(flow_isset_array_then_assign);
test_case!(flow_isset_array_then_use);
test_case!(flow_isset_chain_then_use);
test_case!(flow_isset_in_ternary);
test_case!(flow_isset_negation);
test_case!(flow_isset_optional_key);
test_case!(flow_isset_then_modify);
test_case!(flow_isset_then_modify_value);
test_case!(flow_isset_then_pass);
test_case!(flow_isset_then_unset);
test_case!(flow_isset_two_keys);
test_case!(flow_isset_via_ternary_branch);
test_case!(flow_isset_with_array_access_local);
test_case!(flow_isset_with_local_var);
test_case!(flow_loop_with_break_then_use);
test_case!(flow_loose_eq_null);
test_case!(flow_match_true_redundant_last_arm);
test_case!(flow_match_default_only_warn);
test_case!(flow_match_int_with_default);
test_case!(flow_match_match_in_arm);
test_case!(flow_match_redundant_arm);
test_case!(flow_match_returns_union);
test_case!(flow_match_string_subject);
test_case!(flow_match_subject_var_narrow);
test_case!(flow_match_true_chain_redundant_last_arm);
test_case!(flow_match_unhandled_int);
test_case!(flow_match_unhandled_thrown);
test_case!(flow_match_unreachable_arm);
test_case!(flow_match_with_default);
test_case!(flow_match_with_throw_arm);
test_case!(flow_method_call_invalidates);
test_case!(flow_method_on_possibly_null);
test_case!(flow_method_return_narrow);
test_case!(flow_narrow_lost_after_call);
test_case!(flow_narrow_then_mutate);
test_case!(flow_negated_array_key_exists);
test_case!(flow_negated_is_array);
test_case!(flow_negated_isset);
test_case!(flow_neq_empty_string);
test_case!(flow_neq_negation_narrows_else);
test_case!(flow_neq_zero_narrow);
test_case!(flow_nested_if);
test_case!(flow_nullsafe_on_nonnull);
test_case!(flow_or_combined_narrow);
test_case!(flow_param_default_narrow);
test_case!(flow_pre_loop_init);
test_case!(flow_property_after_null_check);
test_case!(flow_property_isset_chain);
test_case!(flow_redundant_is_int);
test_case!(flow_redundant_truthy);
test_case!(flow_static_method_narrows);
test_case!(flow_string_eq_match);
test_case!(flow_switch_fall_through_default);
test_case!(flow_throw_in_else_narrow);
test_case!(flow_throw_in_if_narrows);
test_case!(flow_throw_in_switch);
test_case!(flow_throw_then_use);
test_case!(flow_throw_unhandled);
test_case!(flow_truthy_check);
test_case!(flow_unreachable_after_return);
test_case!(flow_var_after_throw_branch);
test_case!(flow_xor_branch);
test_case!(callables_err_array_callable_too_many);
test_case!(callables_err_arrow_call_too_few);
test_case!(callables_err_arrow_invalid_arg);
test_case!(callables_err_arrow_returns_invalid);
test_case!(callables_err_arrow_too_many);
test_case!(callables_err_callable_returning_string_used_as_int);
test_case!(callables_err_callable_too_many_via_arrow);
test_case!(callables_err_double_named);
test_case!(callables_err_first_class_wrong_arg);
test_case!(callables_err_invalid_arg_named);
test_case!(callables_err_invalid_arg_to_var_callable);
test_case!(callables_err_invalid_param_default_array);
test_case!(callables_err_invalid_unpack_one);
test_case!(callables_err_invalid_yield_outside);
test_case!(callables_err_method_called_with_extra);
test_case!(callables_err_method_wrong_arg);
test_case!(callables_err_named_arg_invalid_named);
test_case!(callables_err_named_skip_required);
test_case!(callables_err_named_too_few);
test_case!(callables_err_pass_callable_to_int);
test_case!(callables_err_pass_false_to_callable);
test_case!(callables_err_pass_int_to_closure);
test_case!(callables_err_pass_null_to_callable);
test_case!(callables_err_pass_str_to_int_arg_two);
test_case!(callables_err_pass_string_named_no_match);
test_case!(callables_err_pass_string_to_int_named);
test_case!(callables_err_pass_to_int_default_required);
test_case!(callables_err_passing_string_to_method_int);
test_case!(callables_err_pos_array_to_string);
test_case!(callables_err_pos_int_to_string);
test_case!(callables_err_pos_obj_to_string);
test_case!(callables_err_recursive_invalid_arg);
test_case!(callables_err_static_method_called_with_extra);
test_case!(callables_err_static_method_wrong_arg);
test_case!(callables_err_too_few_then_default);
test_case!(callables_err_too_few_two);
test_case!(callables_err_too_few_via_named_one);
test_case!(callables_err_too_many_two);
test_case!(callables_err_unpack_no_args);
test_case!(callables_err_void_used_as_int);
test_case!(inheritance_abstract_class_can_have_abstract_method);
test_case!(inheritance_abstract_method_implemented_ok);
test_case!(inheritance_abstract_method_must_be_implemented);
test_case!(inheritance_call_deprecated_inherited_method);
test_case!(inheritance_call_inherited_method_via_self);
test_case!(inheritance_call_method_via_parent_no_method);
test_case!(inheritance_chain_abstract_unimplemented);
test_case!(inheritance_class_extends_interface);
test_case!(inheritance_class_extends_trait);
test_case!(inheritance_class_inherits_method_from_grandparent);
test_case!(inheritance_constant_override_compatible);
test_case!(inheritance_constant_visibility_narrowed);
test_case!(inheritance_constructor_signature_changed);
test_case!(inheritance_diamond_interfaces);
test_case!(inheritance_extend_enum);
test_case!(inheritance_extends_and_implements);
test_case!(inheritance_extends_deprecated_class);
test_case!(inheritance_extends_final_class);
test_case!(inheritance_extends_nonexistent_class);
test_case!(inheritance_extends_simple_class);
test_case!(inheritance_final_constant_override);
test_case!(inheritance_final_method_override_bad);
test_case!(inheritance_iface_with_two_iface_signatures_conflict);
test_case!(inheritance_implements_basic);
test_case!(inheritance_implements_class_not_interface);
test_case!(inheritance_implements_iface_param_mismatch);
test_case!(inheritance_implements_inherited_iface);
test_case!(inheritance_implements_inherited_unimpl);
test_case!(inheritance_implements_multiple_interfaces);
test_case!(inheritance_implements_nonexistent);
test_case!(inheritance_implements_trait);
test_case!(inheritance_inherited_abstract_via_trait);
test_case!(inheritance_inheritors_interface_restricted);
test_case!(inheritance_inheritors_restricted);
test_case!(inheritance_instanceof_interface);
test_case!(inheritance_instanceof_parent_class);
test_case!(inheritance_instantiate_abstract_class);
test_case!(inheritance_instantiate_interface);
test_case!(inheritance_instantiate_trait);
test_case!(inheritance_interface_constants);
test_case!(inheritance_interface_extends_class);
test_case!(inheritance_interface_extends_interface);
test_case!(inheritance_interface_extends_multiple_interfaces);
test_case!(inheritance_interface_method_unimplemented);
test_case!(inheritance_late_static_binding);
test_case!(inheritance_method_override_attribute_ok);
test_case!(inheritance_method_override_compatible);
test_case!(inheritance_method_signature_mixed_to_specific);
test_case!(inheritance_method_signature_specific_to_mixed);
test_case!(inheritance_method_signature_through_trait);
test_case!(inheritance_multilevel_chain);
test_case!(inheritance_param_count_fewer_bad);
test_case!(inheritance_param_count_more_optional_ok);
test_case!(inheritance_param_count_more_required);
test_case!(inheritance_param_name_change_warning);
test_case!(inheritance_param_optional_to_required_bad);
test_case!(inheritance_param_required_to_optional_ok);
test_case!(inheritance_param_type_narrowed_bad);
test_case!(inheritance_param_type_widened_ok);
test_case!(inheritance_parent_constructor_call);
test_case!(inheritance_parent_method_call);
test_case!(inheritance_parent_outside_class);
test_case!(inheritance_parent_with_no_parent_class);
test_case!(inheritance_private_method_redeclared_ok);
test_case!(inheritance_promoted_props_in_chain);
test_case!(inheritance_property_static_modifier_change);
test_case!(inheritance_property_visibility_narrowed);
test_case!(inheritance_protected_method_called_in_child);
test_case!(inheritance_protected_method_outside_class);
test_case!(inheritance_require_extends_satisfied);
test_case!(inheritance_require_extends_violation);
test_case!(inheritance_require_implements_satisfied);
test_case!(inheritance_require_implements_violation);
test_case!(inheritance_return_nullable_added);
test_case!(inheritance_return_nullable_removed);
test_case!(inheritance_return_type_covariant);
test_case!(inheritance_return_type_int_to_void);
test_case!(inheritance_return_type_never_ok);
test_case!(inheritance_return_type_void_to_int);
test_case!(inheritance_return_type_widened);
test_case!(inheritance_self_outside_class);
test_case!(inheritance_self_vs_static_return);
test_case!(inheritance_static_in_interface);
test_case!(inheritance_static_method_call_via_parent);
test_case!(inheritance_static_method_call_via_static);
test_case!(inheritance_static_method_inherited);
test_case!(inheritance_static_outside_class);
test_case!(inheritance_static_to_instance_override);
test_case!(inheritance_trait_abstract_implemented);
test_case!(inheritance_trait_abstract_must_implement);
test_case!(inheritance_trait_alias_method);
test_case!(inheritance_trait_alias_visibility_change);
test_case!(inheritance_trait_conflict_insteadof);
test_case!(inheritance_trait_constants_php82);
test_case!(inheritance_trait_direct_constant_access);
test_case!(inheritance_trait_method_overridden_by_class);
test_case!(inheritance_trait_property);
test_case!(inheritance_trait_use_in_trait);
test_case!(inheritance_use_class_as_trait);
test_case!(inheritance_use_interface_as_trait);
test_case!(inheritance_use_multiple_traits);
test_case!(inheritance_use_single_trait);
test_case!(inheritance_use_unknown_trait);
test_case!(inheritance_uses_deprecated_trait);
test_case!(inheritance_variadic_param_compatibility);
test_case!(inheritance_visibility_narrowed_protected_to_private);
test_case!(inheritance_visibility_narrowed_public_to_private);
test_case!(inheritance_visibility_narrowed_public_to_protected);
test_case!(inheritance_visibility_widened_public_ok);
test_case!(inheritance_call_inherited_static_via_static);
test_case!(inheritance_polymorphic_param_typed_to_parent);
test_case!(inheritance_passing_unrelated_class);
test_case!(inheritance_method_promotion_constructor_super);
test_case!(inheritance_iface_method_template_compatible);
test_case!(inheritance_extend_class_unrelated_to_method_arg);
test_case!(inheritance_method_implemented_with_wrong_return);
test_case!(inheritance_iface_const_visibility_narrowed);
test_case!(inheritance_iface_extends_iface_returntype_widened);
test_case!(inheritance_grandparent_final_method);
test_case!(inheritance_abstract_via_iface_unimpl);
test_case!(inheritance_static_property_inherited);
test_case!(inheritance_self_call_undefined_static);
test_case!(inheritance_iface_extends_nonexistent);
test_case!(inheritance_required_param_dropped_to_optional_bad);
test_case!(inheritance_iface_unimpl_inherited_chain);
test_case!(inheritance_assignment_to_readonly_inherited);
test_case!(inheritance_iface_method_count_mismatch);
test_case!(inheritance_implementing_method_more_specific_param);
test_case!(inheritance_iface_method_returns_array_widen);
test_case!(inheritance_class_with_two_interface_methods_signatures_match);
test_case!(inheritance_implementing_with_param_intersection);
test_case!(inheritance_implementing_two_iface_param_conflict);
test_case!(inheritance_iface_extends_iface_with_conflict);
test_case!(inheritance_class_must_be_final_required);
test_case!(inheritance_extends_two_levels_final);
test_case!(inheritance_iface_static_method_unimpl);
test_case!(inheritance_static_method_signature_mismatch);
test_case!(inheritance_iface_param_count_too_many);
test_case!(inheritance_method_static_to_instance_iface);
test_case!(inheritance_implementing_method_param_more_general);
test_case!(inheritance_implementing_method_param_unrelated);
test_case!(inheritance_iface_method_returntype_unrelated);
test_case!(inheritance_class_extends_enum_implicit);
test_case!(inheritance_iface_method_compatible_iface_chain);
test_case!(inheritance_extends_chain_calls_missing_grandparent);
test_case!(inheritance_iface_method_static_to_instance_class);
test_case!(inheritance_method_signature_through_trait_bad);
test_case!(arrays_array_map_null_zip);
test_case!(arrays_array_pad_preserves_list_shape);
test_case!(arrays_array_plus_with_default);
test_case!(arrays_err_array_chunk_zero);
test_case!(arrays_err_array_fill_negative_count);
test_case!(arrays_err_max_empty_list);
test_case!(arrays_err_min_empty_list);
test_case!(generics_template_box_to_box_function);
test_case!(generics_template_callable_returns_wrong_type);
test_case!(generics_template_constraint_class_string_unrelated);
test_case!(generics_template_extends_inferred_clean);
test_case!(generics_template_extends_partial_specialization);
test_case!(generics_template_invariant_int_to_int_or_string);
test_case!(generics_template_method_param_overconstrained);
test_case!(generics_template_pair_swap);
test_case!(generics_template_unwrap_box_wrong_consumer);
test_case!(generics_template_void_return_with_t);
test_case!(issue_659);
test_case!(issue_660);
test_case!(issue_663);
test_case!(issue_265);
test_case!(issue_275);
test_case!(issue_306);
test_case!(issue_355);
test_case!(issue_356);
test_case!(issue_357);
test_case!(issue_358);
test_case!(issue_359);
test_case!(issue_360);
test_case!(issue_361);
test_case!(issue_362);
test_case!(issue_366);
test_case!(issue_368);
test_case!(issue_388);
test_case!(issue_390);
test_case!(issue_391);
test_case!(issue_393);
test_case!(issue_396);
test_case!(issue_400);
test_case!(issue_413);
test_case!(issue_414);
test_case!(issue_415);
test_case!(issue_417);
test_case!(issue_425_json_encode);
test_case!(issue_451);
test_case!(issue_461);
test_case!(issue_459);
test_case!(issue_465);
test_case!(issue_448);
test_case!(issue_498);
test_case!(issue_513);
test_case!(issue_514);
test_case!(issue_493);
test_case!(issue_504);
test_case!(issue_508);
test_case!(issue_510);
test_case!(issue_511);
test_case!(issue_519);
test_case!(issue_520);
test_case!(issue_521);
test_case!(issue_523);
test_case!(issue_528);
test_case!(issue_474);
test_case!(issue_531);
test_case!(issue_535);
test_case!(issue_537);
test_case!(issue_538);
test_case!(issue_540);
test_case!(issue_541);
test_case!(issue_542);
test_case!(issue_542_part_2);
test_case!(issue_546);
test_case!(issue_557_part_1);
test_case!(issue_557_part_2);
test_case!(issue_559);
test_case!(issue_563);
test_case!(issue_564);
test_case!(issue_567);
test_case!(issue_568);
test_case!(issue_570);
test_case!(issue_571);
test_case!(issue_573);
test_case!(issue_549);
test_case!(issue_551);
test_case!(issue_553);
test_case!(issue_577);
test_case!(issue_574);
test_case!(issue_583);
test_case!(issue_586);
test_case!(issue_588);
test_case!(issue_596);
test_case!(issue_598);
test_case!(issue_606);
test_case!(issue_607);
test_case!(issue_617);
test_case!(issue_620);
test_case!(issue_621);
test_case!(issue_622);
test_case!(issue_623);
test_case!(issue_626);
test_case!(issue_627);
test_case!(issue_633);
test_case!(issue_637);
test_case!(issue_639);
test_case!(issue_658);
test_case!(issue_664);
test_case!(issue_665);
test_case!(issue_666);
test_case!(issue_667);
test_case!(issue_670);
test_case!(issue_671);
test_case!(issue_672);
test_case!(issue_676);
test_case!(issue_684);
test_case!(issue_689);
test_case!(issue_690);
test_case!(issue_701);
test_case!(issue_706);
test_case!(issue_709);
test_case!(issue_710);
test_case!(issue_708_part_1);
test_case!(issue_708_part_2);
test_case!(issue_711);
test_case!(issue_712);
test_case!(issue_716);
test_case!(issue_717);
test_case!(issue_718);
test_case!(issue_719);
test_case!(issue_720);
test_case!(issue_721);
test_case!(issue_722);
test_case!(issue_725);
test_case!(issue_728_symfony_reference);
test_case!(issue_729);
test_case!(issue_731);
test_case!(issue_732);
test_case!(issue_733);
test_case!(issue_735);
test_case!(issue_736);
test_case!(issue_737);
test_case!(issue_739);
test_case!(issue_742);
test_case!(issue_743);
test_case!(issue_749);
test_case!(issue_746_part_1);
test_case!(issue_746_part_2);
test_case!(issue_746_part_3);
test_case!(issue_746_part_4);
test_case!(issue_746_part_5);
test_case!(issue_746_part_6);
test_case!(issue_752);
test_case!(issue_754);
test_case!(issue_755);
test_case!(issue_756);
test_case!(issue_764);
test_case!(issue_765);
test_case!(issue_766);
test_case!(issue_776);
test_case!(issue_782);
test_case!(issue_784);
test_case!(issue_785);
test_case!(issue_789);
test_case!(issue_801);
test_case!(issue_806);
test_case!(issue_809);
test_case!(issue_822);
test_case!(issue_830);
test_case!(issue_835);
test_case!(issue_837);
test_case!(issue_845);
test_case!(issue_849);
test_case!(issue_859);
test_case!(issue_861);
test_case!(issue_863);
test_case!(issue_870);
test_case!(issue_871);
test_case!(issue_872);
test_case!(issue_880);
test_case!(issue_886);
test_case!(issue_900);
test_case!(issue_902);
test_case!(issue_912);
test_case!(issue_923);
test_case!(issue_932);
test_case!(issue_940);
test_case!(issue_941);
test_case!(issue_945);
test_case!(issue_946);
test_case!(issue_949);
test_case!(issue_954);
test_case!(issue_955);
test_case!(issue_957);
test_case!(issue_958);
test_case!(issue_960);
test_case!(issue_962);
test_case!(issue_964);
test_case!(issue_969);
test_case!(issue_970);
test_case!(issue_973);
test_case!(issue_976);
test_case!(issue_980);
test_case!(issue_984);
test_case!(issue_985);
test_case!(issue_996);
test_case!(issue_998);
test_case!(issue_1002_part_1);
test_case!(issue_1002_part_2);
test_case!(issue_1002_part_3);
test_case!(issue_1002_part_4);
test_case!(issue_1005);
test_case!(issue_1006);
test_case!(issue_1021);
test_case!(issue_1025);
test_case!(issue_1026);
test_case!(issue_1029);
test_case!(issue_1030);
test_case!(issue_1031);
test_case!(issue_1038);
test_case!(issue_1040);
test_case!(issue_1045);
test_case!(issue_1048, {
let mut s = crate::framework::default_test_settings();
s.check_name_casing = true;
s
});
test_case!(issue_1057);
test_case!(issue_1064);
test_case!(issue_1061);
test_case!(issue_1068);
test_case!(issue_1069, {
let mut s = default_test_settings();
s.find_unused_definitions = true;
s
});
test_case!(issue_1070);
test_case!(issue_1071);
test_case!(issue_1072);
test_case!(issue_1074);
test_case!(issue_1081);
test_case!(issue_1083);
test_case!(issue_1084);
test_case!(issue_1086);
test_case!(issue_1087);
test_case!(issue_1088);
test_case!(issue_1089);
test_case!(issue_1096);
test_case!(issue_1099);
test_case!(issue_1103);
test_case!(issue_1106);
test_case!(issue_1107);
test_case!(issue_1110);
test_case!(issue_1112);
test_case!(issue_1116);
test_case!(issue_1104);
test_case!(issue_1117);
test_case!(issue_1119);
test_case!(issue_1108);
test_case!(issue_1102);
test_case!(issue_1093);
test_case!(issue_1126);
test_case!(issue_1127);
test_case!(issue_1130);
test_case!(issue_1131);
test_case!(issue_1144);
test_case!(issue_1073);
test_case!(issue_1150);
test_case!(issue_1156);
test_case!(issue_1157);
test_case!(issue_1165);
test_case!(issue_1169);
test_case!(issue_1184);
test_case!(issue_1184_methods);
test_case!(issue_1190);
test_case!(issue_1191, {
let mut s = crate::framework::default_test_settings();
s.check_missing_type_hints = true;
s
});
test_case!(issue_1202);
test_case!(issue_1206);
test_case!(issue_1207);
test_case!(issue_1215);
test_case!(issue_1223, {
let mut s = crate::framework::default_test_settings();
s.check_missing_type_hints = true;
s
});
test_case!(issue_1230, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = false;
s.strict_list_index_checks = true;
s
});
test_case!(issue_1230_simple, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = false;
s.strict_list_index_checks = true;
s
});
test_case!(issue_1242_reference_count_sync);
test_case!(issue_1226);
test_case!(issue_1273, {
let mut s = crate::framework::default_test_settings();
s.check_experimental = true;
s
});
test_case!(issue_1357);
test_case!(issue_1510);
test_case!(issue_1259);
test_case!(issue_1262);
test_case!(issue_1264);
test_case!(issue_1265);
test_case!(issue_1266);
test_case!(issue_1266_inheritdoc_narrowing);
test_case!(issue_1267);
test_case!(issue_1291);
test_case!(issue_1249);
test_case!(issue_1278);
test_case!(issue_1287);
test_case!(issue_1286);
test_case!(issue_1341);
test_case!(issue_1342);
test_case!(issue_1346);
test_case!(issue_1352);
test_case!(issue_1355);
test_case!(issue_1365);
test_case!(issue_1368);
test_case!(issue_1372);
test_case!(issue_1374);
test_case!(issue_1375);
test_case!(issue_1387);
test_case!(issue_1410);
test_case!(issue_1411);
test_case!(issue_1412);
test_case!(issue_1413);
test_case!(issue_1415);
test_case!(issue_1416);
test_case!(issue_1422);
test_case!(issue_1429);
test_case!(issue_1467);
test_case!(issue_1464);
test_case!(issue_1484);
test_case!(issue_1486);
test_case!(issue_1488);
test_case!(issue_1485);
test_case!(issue_1489);
test_case!(issue_1490);
test_case!(issue_1491);
test_case!(issue_1493);
test_case!(issue_1499);
test_case!(issue_1500);
test_case!(issue_1501);
test_case!(issue_1502);
test_case!(issue_1466);
test_case!(issue_1503);
test_case!(issue_1504);
test_case!(issue_1505);
test_case!(issue_1506);
test_case!(issue_1509);
test_case!(issue_1512);
test_case!(issue_1522);
test_case!(issue_1523);
test_case!(issue_1524);
test_case!(issue_1526);
test_case!(issue_1527);
test_case!(issue_1531);
test_case!(issue_1532);
test_case!(issue_1517);
test_case!(issue_1548);
test_case!(issue_1555);
test_case!(issue_1556);
test_case!(issue_1561_part_1);
test_case!(issue_1561_part_2);
test_case!(issue_1561_part_3);
test_case!(issue_1561_part_4);
test_case!(issue_1565);
test_case!(issue_1566);
test_case!(issue_1567);
test_case!(issue_1568);
test_case!(issue_1569_allowed, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = true;
s
});
test_case!(issue_1569_strict, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = false;
s
});
test_case!(issue_1570);
test_case!(issue_1534);
test_case!(issue_1535);
test_case!(issue_1536);
test_case!(issue_1537);
test_case!(issue_1539);
test_case!(issue_1540);
test_case!(issue_1541);
test_case!(issue_1542);
test_case!(issue_1546);
test_case!(issue_1551);
test_case!(issue_1552);
test_case!(issue_1573);
test_case!(issue_1574);
test_case!(issue_1575);
test_case!(issue_1576);
test_case!(issue_1578);
test_case!(issue_1586);
test_case!(issue_1590);
test_case!(issue_1591);
test_case!(issue_1593);
test_case!(issue_1594);
test_case!(issue_1587);
test_case!(issue_1602);
test_case!(issue_1603);
test_case!(issue_1605);
test_case!(issue_1608);
test_case!(issue_1610);
test_case!(issue_1487);
test_case!(issue_1610_huffman);
test_case!(issue_1615);
test_case!(issue_1624);
test_case!(issue_1625);
test_case!(issue_1627);
test_case!(issue_1628);
test_case!(issue_1632);
test_case!(issue_1639);
test_case!(issue_1633);
test_case!(issue_1641);
test_case!(issue_1651);
test_case!(issue_1653);
test_case!(issue_1657);
test_case!(issue_1668);
test_case!(issue_1669);
test_case!(issue_1681, crate::framework::no_boolean_literal_comparison_settings());
test_case!(issue_1679);
test_case!(issue_1682);
test_case!(issue_1682_php90, crate::framework::php_90_settings());
test_case!(issue_1680, crate::framework::check_name_casing_settings());
test_case!(issue_1678);
test_case!(issue_1686);
test_case!(issue_1688);
test_case!(issue_1693);
test_case!(issue_1695);
test_case!(issue_1696);
test_case!(issue_1700);
test_case!(issue_1701);
test_case!(issue_1702);
test_case!(issue_1703);
test_case!(issue_1704);
test_case!(issue_1706);
test_case!(issue_1707);
test_case!(issue_1709);
test_case!(issue_1712);
test_case!(issue_1691);
test_case!(issue_1722);
test_case!(issue_1727);
test_case!(issue_1728);
test_case!(issue_1729);
test_case!(issue_1742);
test_case!(issue_1746_invariant_generic_var_with_mixed);
test_case!(issue_1748_array_map_resolves_conditional_return);
test_case!(issue_1755);
test_case!(issue_1756, {
let mut s = crate::framework::default_test_settings();
s.check_throws = false;
s
});
test_case!(issue_1757);
test_case!(issue_1758);
test_case!(issue_1759);
test_case!(issue_1760);
test_case!(issue_1762);
test_case!(issue_1764);
test_case!(issue_1765, {
let mut s = crate::framework::default_test_settings();
s.check_throws = false;
s
});
test_case!(issue_1765_allow, {
let mut s = crate::framework::default_test_settings();
s.check_throws = false;
s.allow_array_truthy_operand = true;
s
});
test_case!(issue_1766, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = true;
s.strict_array_index_existence = true;
s
});
test_case!(issue_1766_off, {
let mut s = crate::framework::default_test_settings();
s.allow_possibly_undefined_array_keys = true;
s.strict_array_index_existence = false;
s
});
test_case!(issue_1770, {
let mut s = crate::framework::default_test_settings();
s.check_property_initialization = false;
s
});
test_case!(issue_1772);
test_case!(issue_1775);
test_case!(issue_1786);
test_case!(issue_1787);
test_case!(issue_1794);
test_case!(issue_1796);
test_case!(issue_1781, {
let mut s = crate::framework::default_test_settings();
s.check_throws = false;
s
});
#[test]
fn test_all_test_cases_are_ran() {
let test_case_file = include_str!("mod.rs");
let test_cases_dir = fs::read_dir(concat!(env!("CARGO_MANIFEST_DIR"), "/tests/cases")).unwrap();
for entry in test_cases_dir {
let path = entry.unwrap().path();
if !path.is_file() {
continue;
}
let file_name = path.file_stem().unwrap().to_str().unwrap();
let has_test = test_case_file.contains(&format!("test_case!({file_name})"))
|| test_case_file.contains(&format!("test_case!({file_name},"));
assert!(has_test, "File '{file_name}' was not found as a test case");
}
}