mirror of
https://github.com/luau-lang/luau.git
synced 2024-12-12 21:10:37 +00:00
ff502f0943
# What's changed? * Fix up the `std::iterator_traits` definitions for some Luau data structures. * Replace some of the usages of `std::unordered_set` and `std::unordered_map` with Luau-provided data structures to increase performance and reduce overall number of heap allocations. * Update some of the documentation links in comments throughout the codebase to correctly point to the moved repository. * Expanded JSON encoder for AST to support singleton types. * Fixed a bug in `luau-analyze` where exceptions in the last module being checked during multithreaded analysis would not be rethrown. ### New type solver * Introduce a `refine` type family to handle deferred refinements during type inference, replacing the old `RefineConstraint`. * Continued work on the implementation of type states, fixing some known bugs/blockers. * Added support for variadic functions in new non-strict mode, enabling broader support for builtins and the Roblox API. ### Internal Contributors Co-authored-by: Aaron Weiss <aaronweiss@roblox.com> Co-authored-by: Alexander McCord <amccord@roblox.com> Co-authored-by: Andy Friesen <afriesen@roblox.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com> --------- Co-authored-by: Alexander McCord <amccord@roblox.com> Co-authored-by: Andy Friesen <afriesen@roblox.com> Co-authored-by: Vighnesh <vvijay@roblox.com> Co-authored-by: Aviral Goel <agoel@roblox.com> Co-authored-by: David Cope <dcope@roblox.com> Co-authored-by: Lily Brown <lbrown@roblox.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
695 lines
35 KiB
Text
695 lines
35 KiB
Text
AnnotationTests.typeof_expr
|
|
AstQuery.last_argument_function_call_type
|
|
AstQuery::getDocumentationSymbolAtPosition.table_overloaded_function_prop
|
|
AutocompleteTest.anonymous_autofilled_generic_on_argument_type_pack_vararg
|
|
AutocompleteTest.anonymous_autofilled_generic_type_pack_vararg
|
|
AutocompleteTest.autocomplete_interpolated_string_as_singleton
|
|
AutocompleteTest.autocomplete_string_singleton_equality
|
|
AutocompleteTest.autocomplete_string_singleton_escape
|
|
AutocompleteTest.autocomplete_string_singletons
|
|
AutocompleteTest.do_wrong_compatible_nonself_calls
|
|
AutocompleteTest.string_singleton_in_if_statement
|
|
AutocompleteTest.suggest_external_module_type
|
|
AutocompleteTest.type_correct_expected_argument_type_pack_suggestion
|
|
AutocompleteTest.type_correct_expected_argument_type_suggestion
|
|
AutocompleteTest.type_correct_expected_argument_type_suggestion_optional
|
|
AutocompleteTest.type_correct_expected_argument_type_suggestion_self
|
|
AutocompleteTest.type_correct_expected_return_type_pack_suggestion
|
|
AutocompleteTest.type_correct_expected_return_type_suggestion
|
|
AutocompleteTest.type_correct_function_no_parenthesis
|
|
AutocompleteTest.type_correct_function_return_types
|
|
AutocompleteTest.type_correct_keywords
|
|
AutocompleteTest.type_correct_suggestion_for_overloads
|
|
AutocompleteTest.type_correct_suggestion_in_argument
|
|
BuiltinTests.aliased_string_format
|
|
BuiltinTests.assert_removes_falsy_types
|
|
BuiltinTests.assert_removes_falsy_types2
|
|
BuiltinTests.assert_removes_falsy_types_even_from_type_pack_tail_but_only_for_the_first_type
|
|
BuiltinTests.assert_returns_false_and_string_iff_it_knows_the_first_argument_cannot_be_truthy
|
|
BuiltinTests.bad_select_should_not_crash
|
|
BuiltinTests.coroutine_resume_anything_goes
|
|
BuiltinTests.debug_info_is_crazy
|
|
BuiltinTests.global_singleton_types_are_sealed
|
|
BuiltinTests.gmatch_capture_types
|
|
BuiltinTests.gmatch_capture_types2
|
|
BuiltinTests.gmatch_capture_types_balanced_escaped_parens
|
|
BuiltinTests.gmatch_capture_types_default_capture
|
|
BuiltinTests.gmatch_capture_types_parens_in_sets_are_ignored
|
|
BuiltinTests.gmatch_capture_types_set_containing_lbracket
|
|
BuiltinTests.gmatch_definition
|
|
BuiltinTests.ipairs_iterator_should_infer_types_and_type_check
|
|
BuiltinTests.next_iterator_should_infer_types_and_type_check
|
|
BuiltinTests.os_time_takes_optional_date_table
|
|
BuiltinTests.pairs_iterator_should_infer_types_and_type_check
|
|
BuiltinTests.see_thru_select
|
|
BuiltinTests.see_thru_select_count
|
|
BuiltinTests.select_slightly_out_of_range
|
|
BuiltinTests.select_way_out_of_range
|
|
BuiltinTests.select_with_decimal_argument_is_rounded_down
|
|
BuiltinTests.select_with_variadic_typepack_tail_and_string_head
|
|
BuiltinTests.set_metatable_needs_arguments
|
|
BuiltinTests.setmetatable_should_not_mutate_persisted_types
|
|
BuiltinTests.sort
|
|
BuiltinTests.sort_with_bad_predicate
|
|
BuiltinTests.sort_with_predicate
|
|
BuiltinTests.string_format_arg_count_mismatch
|
|
BuiltinTests.string_format_as_method
|
|
BuiltinTests.string_format_correctly_ordered_types
|
|
BuiltinTests.string_format_report_all_type_errors_at_correct_positions
|
|
BuiltinTests.string_format_use_correct_argument2
|
|
BuiltinTests.table_concat_returns_string
|
|
BuiltinTests.table_dot_remove_optionally_returns_generic
|
|
BuiltinTests.table_freeze_is_generic
|
|
BuiltinTests.table_insert_correctly_infers_type_of_array_2_args_overload
|
|
BuiltinTests.table_insert_correctly_infers_type_of_array_3_args_overload
|
|
BuiltinTests.table_pack
|
|
BuiltinTests.table_pack_reduce
|
|
BuiltinTests.table_pack_variadic
|
|
BuiltinTests.tonumber_returns_optional_number_type
|
|
BuiltinTests.tonumber_returns_optional_number_type2
|
|
BuiltinTests.trivial_select
|
|
BuiltinTests.xpcall
|
|
ControlFlowAnalysis.do_assert_x
|
|
ControlFlowAnalysis.for_record_do_if_not_x_break
|
|
ControlFlowAnalysis.for_record_do_if_not_x_continue
|
|
ControlFlowAnalysis.if_not_x_break
|
|
ControlFlowAnalysis.if_not_x_break_elif_not_y_break
|
|
ControlFlowAnalysis.if_not_x_break_elif_not_y_continue
|
|
ControlFlowAnalysis.if_not_x_break_elif_not_y_fallthrough_elif_not_z_break
|
|
ControlFlowAnalysis.if_not_x_break_elif_rand_break_elif_not_y_break
|
|
ControlFlowAnalysis.if_not_x_break_elif_rand_break_elif_not_y_fallthrough
|
|
ControlFlowAnalysis.if_not_x_break_if_not_y_break
|
|
ControlFlowAnalysis.if_not_x_break_if_not_y_continue
|
|
ControlFlowAnalysis.if_not_x_continue
|
|
ControlFlowAnalysis.if_not_x_continue_elif_not_y_continue
|
|
ControlFlowAnalysis.if_not_x_continue_elif_not_y_fallthrough_elif_not_z_continue
|
|
ControlFlowAnalysis.if_not_x_continue_elif_not_y_throw_elif_not_z_fallthrough
|
|
ControlFlowAnalysis.if_not_x_continue_elif_rand_continue_elif_not_y_continue
|
|
ControlFlowAnalysis.if_not_x_continue_elif_rand_continue_elif_not_y_fallthrough
|
|
ControlFlowAnalysis.if_not_x_continue_if_not_y_continue
|
|
ControlFlowAnalysis.if_not_x_continue_if_not_y_throw
|
|
ControlFlowAnalysis.if_not_x_return_elif_not_y_break
|
|
ControlFlowAnalysis.if_not_x_return_elif_not_y_fallthrough_elif_not_z_break
|
|
ControlFlowAnalysis.if_not_x_then_assert_false
|
|
ControlFlowAnalysis.if_not_x_then_error
|
|
ControlFlowAnalysis.prototyping_and_visiting_alias_has_the_same_scope_breaking
|
|
ControlFlowAnalysis.prototyping_and_visiting_alias_has_the_same_scope_continuing
|
|
ControlFlowAnalysis.tagged_unions
|
|
ControlFlowAnalysis.tagged_unions_breaking
|
|
ControlFlowAnalysis.tagged_unions_continuing
|
|
ControlFlowAnalysis.type_alias_does_not_leak_out_breaking
|
|
ControlFlowAnalysis.type_alias_does_not_leak_out_continuing
|
|
DefinitionTests.class_definition_indexer
|
|
DefinitionTests.class_definition_overload_metamethods
|
|
DefinitionTests.class_definition_string_props
|
|
DefinitionTests.declaring_generic_functions
|
|
DefinitionTests.definition_file_classes
|
|
Differ.equal_generictp_cyclic
|
|
Differ.equal_table_A_B_C
|
|
Differ.equal_table_cyclic_diamonds_unraveled
|
|
Differ.equal_table_kind_A
|
|
Differ.equal_table_kind_B
|
|
Differ.equal_table_kind_C
|
|
Differ.equal_table_kind_D
|
|
Differ.equal_table_measuring_tapes
|
|
Differ.equal_table_two_cyclic_tables_are_not_different
|
|
Differ.equal_table_two_shifted_circles_are_not_different
|
|
Differ.generictp_normal
|
|
Differ.generictp_normal_2
|
|
Differ.left_cyclic_table_right_table_missing_property
|
|
Differ.left_cyclic_table_right_table_property_wrong
|
|
Differ.metatable_metamissing_left
|
|
Differ.metatable_metamissing_right
|
|
Differ.metatable_metanormal
|
|
Differ.negation
|
|
Differ.right_cyclic_table_left_table_missing_property
|
|
Differ.right_cyclic_table_left_table_property_wrong
|
|
Differ.table_left_circle_right_measuring_tape
|
|
FrontendTest.accumulate_cached_errors_in_consistent_order
|
|
FrontendTest.environments
|
|
FrontendTest.imported_table_modification_2
|
|
FrontendTest.it_should_be_safe_to_stringify_errors_when_full_type_graph_is_discarded
|
|
FrontendTest.nocheck_cycle_used_by_checked
|
|
FrontendTest.trace_requires_in_nonstrict_mode
|
|
GenericsTests.apply_type_function_nested_generics1
|
|
GenericsTests.apply_type_function_nested_generics2
|
|
GenericsTests.better_mismatch_error_messages
|
|
GenericsTests.bound_tables_do_not_clone_original_fields
|
|
GenericsTests.check_generic_function
|
|
GenericsTests.check_generic_local_function
|
|
GenericsTests.check_generic_typepack_function
|
|
GenericsTests.check_mutual_generic_functions
|
|
GenericsTests.check_nested_generic_function
|
|
GenericsTests.check_recursive_generic_function
|
|
GenericsTests.correctly_instantiate_polymorphic_member_functions
|
|
GenericsTests.do_not_always_instantiate_generic_intersection_types
|
|
GenericsTests.do_not_infer_generic_functions
|
|
GenericsTests.dont_substitute_bound_types
|
|
GenericsTests.error_detailed_function_mismatch_generic_pack
|
|
GenericsTests.error_detailed_function_mismatch_generic_types
|
|
GenericsTests.factories_of_generics
|
|
GenericsTests.function_arguments_can_be_polytypes
|
|
GenericsTests.generic_argument_count_too_few
|
|
GenericsTests.generic_argument_count_too_many
|
|
GenericsTests.generic_factories
|
|
GenericsTests.generic_functions_dont_cache_type_parameters
|
|
GenericsTests.generic_functions_in_types
|
|
GenericsTests.generic_type_pack_parentheses
|
|
GenericsTests.generic_type_pack_unification1
|
|
GenericsTests.generic_type_pack_unification2
|
|
GenericsTests.generic_type_pack_unification3
|
|
GenericsTests.higher_rank_polymorphism_should_not_accept_instantiated_arguments
|
|
GenericsTests.infer_generic_function
|
|
GenericsTests.infer_generic_function_function_argument
|
|
GenericsTests.infer_generic_function_function_argument_2
|
|
GenericsTests.infer_generic_function_function_argument_3
|
|
GenericsTests.infer_generic_function_function_argument_overloaded
|
|
GenericsTests.infer_generic_lib_function_function_argument
|
|
GenericsTests.infer_generic_local_function
|
|
GenericsTests.infer_generic_property
|
|
GenericsTests.infer_nested_generic_function
|
|
GenericsTests.inferred_local_vars_can_be_polytypes
|
|
GenericsTests.instantiated_function_argument_names
|
|
GenericsTests.local_vars_can_be_polytypes
|
|
GenericsTests.no_stack_overflow_from_quantifying
|
|
GenericsTests.properties_can_be_instantiated_polytypes
|
|
GenericsTests.properties_can_be_polytypes
|
|
GenericsTests.quantify_functions_even_if_they_have_an_explicit_generic
|
|
GenericsTests.rank_N_types_via_typeof
|
|
GenericsTests.self_recursive_instantiated_param
|
|
GenericsTests.type_parameters_can_be_polytypes
|
|
GenericsTests.typefuns_sharing_types
|
|
IntersectionTypes.argument_is_intersection
|
|
IntersectionTypes.error_detailed_intersection_all
|
|
IntersectionTypes.error_detailed_intersection_part
|
|
IntersectionTypes.fx_intersection_as_argument
|
|
IntersectionTypes.index_on_an_intersection_type_with_mixed_types
|
|
IntersectionTypes.index_on_an_intersection_type_with_one_part_missing_the_property
|
|
IntersectionTypes.index_on_an_intersection_type_with_one_property_of_type_any
|
|
IntersectionTypes.index_on_an_intersection_type_with_property_guaranteed_to_exist
|
|
IntersectionTypes.index_on_an_intersection_type_works_at_arbitrary_depth
|
|
IntersectionTypes.intersect_bool_and_false
|
|
IntersectionTypes.intersect_false_and_bool_and_false
|
|
IntersectionTypes.intersect_saturate_overloaded_functions
|
|
IntersectionTypes.intersection_of_tables
|
|
IntersectionTypes.intersection_of_tables_with_never_properties
|
|
IntersectionTypes.intersection_of_tables_with_top_properties
|
|
IntersectionTypes.less_greedy_unification_with_intersection_types
|
|
IntersectionTypes.overloaded_functions_mentioning_generic
|
|
IntersectionTypes.overloaded_functions_mentioning_generic_packs
|
|
IntersectionTypes.overloaded_functions_mentioning_generics
|
|
IntersectionTypes.overloaded_functions_returning_intersections
|
|
IntersectionTypes.overloadeded_functions_with_never_arguments
|
|
IntersectionTypes.overloadeded_functions_with_never_result
|
|
IntersectionTypes.overloadeded_functions_with_overlapping_results_and_variadics
|
|
IntersectionTypes.overloadeded_functions_with_unknown_arguments
|
|
IntersectionTypes.overloadeded_functions_with_unknown_result
|
|
IntersectionTypes.overloadeded_functions_with_weird_typepacks_1
|
|
IntersectionTypes.overloadeded_functions_with_weird_typepacks_2
|
|
IntersectionTypes.overloadeded_functions_with_weird_typepacks_3
|
|
IntersectionTypes.overloadeded_functions_with_weird_typepacks_4
|
|
IntersectionTypes.propagates_name
|
|
IntersectionTypes.select_correct_union_fn
|
|
IntersectionTypes.should_still_pick_an_overload_whose_arguments_are_unions
|
|
IntersectionTypes.table_extra_ok
|
|
IntersectionTypes.table_intersection_setmetatable
|
|
IntersectionTypes.table_intersection_write_sealed
|
|
IntersectionTypes.table_intersection_write_sealed_indirect
|
|
IntersectionTypes.table_write_sealed_indirect
|
|
IntersectionTypes.union_saturate_overloaded_functions
|
|
isSubtype.any_is_unknown_union_error
|
|
Linter.DeprecatedApiFenv
|
|
Linter.FormatStringTyped
|
|
Linter.TableOperationsIndexer
|
|
ModuleTests.clone_self_property
|
|
Negations.cofinite_strings_can_be_compared_for_equality
|
|
Negations.negated_string_is_a_subtype_of_string
|
|
NonstrictModeTests.inconsistent_module_return_types_are_ok
|
|
NonstrictModeTests.infer_nullary_function
|
|
NonstrictModeTests.infer_the_maximum_number_of_values_the_function_could_return
|
|
NonstrictModeTests.inline_table_props_are_also_any
|
|
NonstrictModeTests.local_tables_are_not_any
|
|
NonstrictModeTests.locals_are_any_by_default
|
|
NonstrictModeTests.offer_a_hint_if_you_use_a_dot_instead_of_a_colon
|
|
NonstrictModeTests.table_props_are_any
|
|
Normalize.higher_order_function_with_annotation
|
|
Normalize.negations_of_tables
|
|
Normalize.specific_functions_cannot_be_negated
|
|
ProvisionalTests.assign_table_with_refined_property_with_a_similar_type_is_illegal
|
|
ProvisionalTests.choose_the_right_overload_for_pcall
|
|
ProvisionalTests.discriminate_from_x_not_equal_to_nil
|
|
ProvisionalTests.do_not_ice_when_trying_to_pick_first_of_generic_type_pack
|
|
ProvisionalTests.error_on_eq_metamethod_returning_a_type_other_than_boolean
|
|
ProvisionalTests.expected_type_should_be_a_helpful_deduction_guide_for_function_calls
|
|
ProvisionalTests.floating_generics_should_not_be_allowed
|
|
ProvisionalTests.free_is_not_bound_to_any
|
|
ProvisionalTests.free_options_can_be_unified_together
|
|
ProvisionalTests.free_options_cannot_be_unified_together
|
|
ProvisionalTests.function_returns_many_things_but_first_of_it_is_forgotten
|
|
ProvisionalTests.generic_type_leak_to_module_interface
|
|
ProvisionalTests.generic_type_leak_to_module_interface_variadic
|
|
ProvisionalTests.greedy_inference_with_shared_self_triggers_function_with_no_returns
|
|
ProvisionalTests.it_should_be_agnostic_of_actual_size
|
|
ProvisionalTests.luau-polyfill.Array.filter
|
|
ProvisionalTests.luau_roact_useState_minimization
|
|
ProvisionalTests.optional_class_instances_are_invariant
|
|
ProvisionalTests.pcall_returns_at_least_two_value_but_function_returns_nothing
|
|
ProvisionalTests.setmetatable_constrains_free_type_into_free_table
|
|
ProvisionalTests.specialization_binds_with_prototypes_too_early
|
|
ProvisionalTests.table_insert_with_a_singleton_argument
|
|
ProvisionalTests.table_unification_infinite_recursion
|
|
ProvisionalTests.typeguard_inference_incomplete
|
|
ProvisionalTests.while_body_are_also_refined
|
|
ProvisionalTests.xpcall_returns_what_f_returns
|
|
RefinementTest.assert_a_to_be_truthy_then_assert_a_to_be_number
|
|
RefinementTest.assert_non_binary_expressions_actually_resolve_constraints
|
|
RefinementTest.correctly_lookup_a_shadowed_local_that_which_was_previously_refined
|
|
RefinementTest.correctly_lookup_property_whose_base_was_previously_refined
|
|
RefinementTest.dataflow_analysis_can_tell_refinements_when_its_appropriate_to_refine_into_nil_or_never
|
|
RefinementTest.discriminate_from_isa_of_x
|
|
RefinementTest.discriminate_from_truthiness_of_x
|
|
RefinementTest.discriminate_tag
|
|
RefinementTest.discriminate_tag_with_implicit_else
|
|
RefinementTest.either_number_or_string
|
|
RefinementTest.else_with_no_explicit_expression_should_also_refine_the_tagged_union
|
|
RefinementTest.fail_to_refine_a_property_of_subscript_expression
|
|
RefinementTest.falsiness_of_TruthyPredicate_narrows_into_nil
|
|
RefinementTest.function_call_with_colon_after_refining_not_to_be_nil
|
|
RefinementTest.impossible_type_narrow_is_not_an_error
|
|
RefinementTest.index_on_a_refined_property
|
|
RefinementTest.isa_type_refinement_must_be_known_ahead_of_time
|
|
RefinementTest.luau_polyfill_isindexkey_refine_conjunction
|
|
RefinementTest.luau_polyfill_isindexkey_refine_conjunction_variant
|
|
RefinementTest.merge_should_be_fully_agnostic_of_hashmap_ordering
|
|
RefinementTest.narrow_property_of_a_bounded_variable
|
|
RefinementTest.nonoptional_type_can_narrow_to_nil_if_sense_is_true
|
|
RefinementTest.not_t_or_some_prop_of_t
|
|
RefinementTest.refine_a_param_that_got_resolved_during_constraint_solving_stage
|
|
RefinementTest.refine_a_property_of_some_global
|
|
RefinementTest.refine_param_of_type_folder_or_part_without_using_typeof
|
|
RefinementTest.refine_unknown_to_table_then_clone_it
|
|
RefinementTest.refinements_should_preserve_error_suppression
|
|
RefinementTest.string_not_equal_to_string_or_nil
|
|
RefinementTest.truthy_constraint_on_properties
|
|
RefinementTest.type_annotations_arent_relevant_when_doing_dataflow_analysis
|
|
RefinementTest.type_comparison_ifelse_expression
|
|
RefinementTest.type_guard_narrowed_into_nothingness
|
|
RefinementTest.type_narrow_to_vector
|
|
RefinementTest.typeguard_cast_free_table_to_vector
|
|
RefinementTest.typeguard_in_assert_position
|
|
RefinementTest.typeguard_in_if_condition_position
|
|
RefinementTest.x_as_any_if_x_is_instance_elseif_x_is_table
|
|
RefinementTest.x_is_not_instance_or_else_not_part
|
|
TableTests.a_free_shape_can_turn_into_a_scalar_directly
|
|
TableTests.a_free_shape_can_turn_into_a_scalar_if_it_is_compatible
|
|
TableTests.a_free_shape_cannot_turn_into_a_scalar_if_it_is_not_compatible
|
|
TableTests.accidentally_checked_prop_in_opposite_branch
|
|
TableTests.any_when_indexing_into_an_unsealed_table_with_no_indexer_in_nonstrict_mode
|
|
TableTests.array_factory_function
|
|
TableTests.call_method
|
|
TableTests.call_method_with_explicit_self_argument
|
|
TableTests.casting_tables_with_props_into_table_with_indexer2
|
|
TableTests.casting_tables_with_props_into_table_with_indexer3
|
|
TableTests.casting_tables_with_props_into_table_with_indexer4
|
|
TableTests.casting_unsealed_tables_with_props_into_table_with_indexer
|
|
TableTests.checked_prop_too_early
|
|
TableTests.cli_84607_missing_prop_in_array_or_dict
|
|
TableTests.common_table_element_general
|
|
TableTests.common_table_element_inner_index
|
|
TableTests.common_table_element_inner_prop
|
|
TableTests.common_table_element_list
|
|
TableTests.common_table_element_union_assignment
|
|
TableTests.common_table_element_union_in_call
|
|
TableTests.common_table_element_union_in_call_tail
|
|
TableTests.common_table_element_union_in_prop
|
|
TableTests.confusing_indexing
|
|
TableTests.cyclic_shifted_tables
|
|
TableTests.disallow_indexing_into_an_unsealed_table_with_no_indexer_in_strict_mode
|
|
TableTests.dont_crash_when_setmetatable_does_not_produce_a_metatabletypevar
|
|
TableTests.dont_extend_unsealed_tables_in_rvalue_position
|
|
TableTests.dont_leak_free_table_props
|
|
TableTests.dont_quantify_table_that_belongs_to_outer_scope
|
|
TableTests.dont_suggest_exact_match_keys
|
|
TableTests.error_detailed_indexer_key
|
|
TableTests.error_detailed_indexer_value
|
|
TableTests.error_detailed_metatable_prop
|
|
TableTests.explicitly_typed_table
|
|
TableTests.explicitly_typed_table_error
|
|
TableTests.explicitly_typed_table_with_indexer
|
|
TableTests.generalize_table_argument
|
|
TableTests.generic_table_instantiation_potential_regression
|
|
TableTests.indexer_mismatch
|
|
TableTests.indexer_on_sealed_table_must_unify_with_free_table
|
|
TableTests.indexers_get_quantified_too
|
|
TableTests.indexing_from_a_table_should_prefer_properties_when_possible
|
|
TableTests.inequality_operators_imply_exactly_matching_types
|
|
TableTests.infer_indexer_from_its_variable_type_and_unifiable
|
|
TableTests.infer_type_when_indexing_from_a_table_indexer
|
|
TableTests.inferred_return_type_of_free_table
|
|
TableTests.instantiate_table_cloning_3
|
|
TableTests.invariant_table_properties_means_instantiating_tables_in_assignment_is_unsound
|
|
TableTests.invariant_table_properties_means_instantiating_tables_in_call_is_unsound
|
|
TableTests.length_operator_intersection
|
|
TableTests.length_operator_non_table_union
|
|
TableTests.length_operator_union
|
|
TableTests.less_exponential_blowup_please
|
|
TableTests.meta_add_both_ways
|
|
TableTests.meta_add_inferred
|
|
TableTests.metatable_mismatch_should_fail
|
|
TableTests.missing_metatable_for_sealed_tables_do_not_get_inferred
|
|
TableTests.mixed_tables_with_implicit_numbered_keys
|
|
TableTests.ok_to_provide_a_subtype_during_construction
|
|
TableTests.ok_to_set_nil_even_on_non_lvalue_base_expr
|
|
TableTests.okay_to_add_property_to_unsealed_tables_by_assignment
|
|
TableTests.okay_to_add_property_to_unsealed_tables_by_function_call
|
|
TableTests.only_ascribe_synthetic_names_at_module_scope
|
|
TableTests.oop_polymorphic
|
|
TableTests.open_table_unification_2
|
|
TableTests.pass_a_union_of_tables_to_a_function_that_requires_a_table
|
|
TableTests.pass_a_union_of_tables_to_a_function_that_requires_a_table_2
|
|
TableTests.passing_compatible_unions_to_a_generic_table_without_crashing
|
|
TableTests.persistent_sealed_table_is_immutable
|
|
TableTests.prop_access_on_key_whose_types_mismatches
|
|
TableTests.prop_access_on_unions_of_indexers_where_key_whose_types_mismatches
|
|
TableTests.quantify_even_that_table_was_never_exported_at_all
|
|
TableTests.quantify_metatables_of_metatables_of_table
|
|
TableTests.reasonable_error_when_adding_a_nonexistent_property_to_an_array_like_table
|
|
TableTests.recursive_metatable_type_call
|
|
TableTests.result_is_always_any_if_lhs_is_any
|
|
TableTests.result_is_bool_for_equality_operators_if_lhs_is_any
|
|
TableTests.right_table_missing_key2
|
|
TableTests.scalar_is_a_subtype_of_a_compatible_polymorphic_shape_type
|
|
TableTests.scalar_is_not_a_subtype_of_a_compatible_polymorphic_shape_type
|
|
TableTests.sealed_table_indexers_must_unify
|
|
TableTests.setmetatable_has_a_side_effect
|
|
TableTests.shared_selfs
|
|
TableTests.shared_selfs_from_free_param
|
|
TableTests.shared_selfs_through_metatables
|
|
TableTests.table_call_metamethod_basic
|
|
TableTests.table_call_metamethod_generic
|
|
TableTests.table_call_metamethod_must_be_callable
|
|
TableTests.table_function_check_use_after_free
|
|
TableTests.table_param_width_subtyping_1
|
|
TableTests.table_param_width_subtyping_2
|
|
TableTests.table_param_width_subtyping_3
|
|
TableTests.table_simple_call
|
|
TableTests.table_subtyping_with_extra_props_dont_report_multiple_errors
|
|
TableTests.table_subtyping_with_missing_props_dont_report_multiple_errors
|
|
TableTests.table_subtyping_with_missing_props_dont_report_multiple_errors2
|
|
TableTests.table_unification_4
|
|
TableTests.table_unifies_into_map
|
|
TableTests.top_table_type
|
|
TableTests.type_mismatch_on_massive_table_is_cut_short
|
|
TableTests.unification_of_unions_in_a_self_referential_type
|
|
TableTests.unifying_tables_shouldnt_uaf1
|
|
TableTests.used_colon_instead_of_dot
|
|
TableTests.used_dot_instead_of_colon
|
|
TableTests.used_dot_instead_of_colon_but_correctly
|
|
TableTests.when_augmenting_an_unsealed_table_with_an_indexer_apply_the_correct_scope_to_the_indexer_type
|
|
TableTests.wrong_assign_does_hit_indexer
|
|
ToDot.function
|
|
ToString.exhaustive_toString_of_cyclic_table
|
|
ToString.free_types
|
|
ToString.named_metatable_toStringNamedFunction
|
|
ToString.no_parentheses_around_cyclic_function_type_in_intersection
|
|
ToString.pick_distinct_names_for_mixed_explicit_and_implicit_generics
|
|
ToString.primitive
|
|
ToString.tostring_unsee_ttv_if_array
|
|
ToString.toStringDetailed2
|
|
ToString.toStringErrorPack
|
|
ToString.toStringNamedFunction_generic_pack
|
|
ToString.toStringNamedFunction_map
|
|
TranspilerTests.types_should_not_be_considered_cyclic_if_they_are_not_recursive
|
|
TryUnifyTests.members_of_failed_typepack_unification_are_unified_with_errorType
|
|
TryUnifyTests.result_of_failed_typepack_unification_is_constrained
|
|
TryUnifyTests.typepack_unification_should_trim_free_tails
|
|
TryUnifyTests.uninhabited_table_sub_anything
|
|
TryUnifyTests.uninhabited_table_sub_never
|
|
TryUnifyTests.variadics_should_use_reversed_properly
|
|
TypeAliases.corecursive_types_generic
|
|
TypeAliases.cyclic_types_of_named_table_fields_do_not_expand_when_stringified
|
|
TypeAliases.dont_lose_track_of_PendingExpansionTypes_after_substitution
|
|
TypeAliases.generic_param_remap
|
|
TypeAliases.mismatched_generic_type_param
|
|
TypeAliases.mutually_recursive_aliases
|
|
TypeAliases.mutually_recursive_generic_aliases
|
|
TypeAliases.mutually_recursive_types_restriction_not_ok_1
|
|
TypeAliases.mutually_recursive_types_restriction_not_ok_2
|
|
TypeAliases.mutually_recursive_types_swapsies_not_ok
|
|
TypeAliases.recursive_types_restriction_not_ok
|
|
TypeAliases.report_shadowed_aliases
|
|
TypeAliases.saturate_to_first_type_pack
|
|
TypeAliases.table_types_record_the_property_locations
|
|
TypeAliases.type_alias_local_mutation
|
|
TypeAliases.type_alias_local_rename
|
|
TypeAliases.type_alias_locations
|
|
TypeAliases.type_alias_of_an_imported_recursive_generic_type
|
|
TypeAliases.use_table_name_and_generic_params_in_errors
|
|
TypeFamilyTests.add_family_at_work
|
|
TypeFamilyTests.family_as_fn_arg
|
|
TypeFamilyTests.family_as_fn_ret
|
|
TypeFamilyTests.function_internal_families
|
|
TypeFamilyTests.internal_families_raise_errors
|
|
TypeFamilyTests.table_internal_families
|
|
TypeFamilyTests.type_families_inhabited_with_normalization
|
|
TypeFamilyTests.unsolvable_family
|
|
TypeInfer.bidirectional_checking_of_callback_property
|
|
TypeInfer.check_expr_recursion_limit
|
|
TypeInfer.check_type_infer_recursion_count
|
|
TypeInfer.checking_should_not_ice
|
|
TypeInfer.cli_39932_use_unifier_in_ensure_methods
|
|
TypeInfer.cli_50041_committing_txnlog_in_apollo_client_error
|
|
TypeInfer.dont_ice_when_failing_the_occurs_check
|
|
TypeInfer.dont_report_type_errors_within_an_AstExprError
|
|
TypeInfer.dont_report_type_errors_within_an_AstStatError
|
|
TypeInfer.globals
|
|
TypeInfer.globals2
|
|
TypeInfer.globals_are_banned_in_strict_mode
|
|
TypeInfer.infer_assignment_value_types
|
|
TypeInfer.infer_locals_via_assignment_from_its_call_site
|
|
TypeInfer.infer_through_group_expr
|
|
TypeInfer.infer_type_assertion_value_type
|
|
TypeInfer.no_infinite_loop_when_trying_to_unify_uh_this
|
|
TypeInfer.no_stack_overflow_from_isoptional
|
|
TypeInfer.promote_tail_type_packs
|
|
TypeInfer.recursive_function_that_invokes_itself_with_a_refinement_of_its_parameter
|
|
TypeInfer.recursive_function_that_invokes_itself_with_a_refinement_of_its_parameter_2
|
|
TypeInfer.statements_are_topologically_sorted
|
|
TypeInfer.stringify_nested_unions_with_optionals
|
|
TypeInfer.tc_after_error_recovery_no_replacement_name_in_error
|
|
TypeInfer.type_infer_recursion_limit_no_ice
|
|
TypeInfer.type_infer_recursion_limit_normalizer
|
|
TypeInfer.unify_nearly_identical_recursive_types
|
|
TypeInferAnyError.any_type_propagates
|
|
TypeInferAnyError.assign_prop_to_table_by_calling_any_yields_any
|
|
TypeInferAnyError.call_to_any_yields_any
|
|
TypeInferAnyError.can_subscript_any
|
|
TypeInferAnyError.for_in_loop_iterator_is_any
|
|
TypeInferAnyError.for_in_loop_iterator_is_any2
|
|
TypeInferAnyError.for_in_loop_iterator_is_error
|
|
TypeInferAnyError.for_in_loop_iterator_is_error2
|
|
TypeInferAnyError.for_in_loop_iterator_returns_any
|
|
TypeInferAnyError.intersection_of_any_can_have_props
|
|
TypeInferAnyError.metatable_of_any_can_be_a_table
|
|
TypeInferAnyError.quantify_any_does_not_bind_to_itself
|
|
TypeInferAnyError.replace_every_free_type_when_unifying_a_complex_function_with_any
|
|
TypeInferAnyError.type_error_addition
|
|
TypeInferClasses.callable_classes
|
|
TypeInferClasses.cannot_unify_class_instance_with_primitive
|
|
TypeInferClasses.class_type_mismatch_with_name_conflict
|
|
TypeInferClasses.class_unification_type_mismatch_is_correct_order
|
|
TypeInferClasses.detailed_class_unification_error
|
|
TypeInferClasses.index_instance_property
|
|
TypeInferClasses.indexable_classes
|
|
TypeInferClasses.intersections_of_unions_of_classes
|
|
TypeInferClasses.optional_class_field_access_error
|
|
TypeInferClasses.table_class_unification_reports_sane_errors_for_missing_properties
|
|
TypeInferClasses.table_indexers_are_invariant
|
|
TypeInferClasses.unions_of_intersections_of_classes
|
|
TypeInferClasses.we_can_report_when_someone_is_trying_to_use_a_table_rather_than_a_class
|
|
TypeInferFunctions.another_other_higher_order_function
|
|
TypeInferFunctions.apply_of_lambda_with_inferred_and_explicit_types
|
|
TypeInferFunctions.calling_function_with_anytypepack_doesnt_leak_free_types
|
|
TypeInferFunctions.cannot_hoist_interior_defns_into_signature
|
|
TypeInferFunctions.check_function_bodies
|
|
TypeInferFunctions.complicated_return_types_require_an_explicit_annotation
|
|
TypeInferFunctions.concrete_functions_are_not_supertypes_of_function
|
|
TypeInferFunctions.dont_assert_when_the_tarjan_limit_is_exceeded_during_generalization
|
|
TypeInferFunctions.dont_give_other_overloads_message_if_only_one_argument_matching_overload_exists
|
|
TypeInferFunctions.dont_infer_parameter_types_for_functions_from_their_call_site
|
|
TypeInferFunctions.duplicate_functions_with_different_signatures_not_allowed_in_nonstrict
|
|
TypeInferFunctions.error_detailed_function_mismatch_arg
|
|
TypeInferFunctions.error_detailed_function_mismatch_arg_count
|
|
TypeInferFunctions.error_detailed_function_mismatch_ret
|
|
TypeInferFunctions.error_detailed_function_mismatch_ret_count
|
|
TypeInferFunctions.error_detailed_function_mismatch_ret_mult
|
|
TypeInferFunctions.function_cast_error_uses_correct_language
|
|
TypeInferFunctions.function_decl_non_self_sealed_overwrite_2
|
|
TypeInferFunctions.function_decl_non_self_unsealed_overwrite
|
|
TypeInferFunctions.function_does_not_return_enough_values
|
|
TypeInferFunctions.function_exprs_are_generalized_at_signature_scope_not_enclosing
|
|
TypeInferFunctions.function_is_supertype_of_concrete_functions
|
|
TypeInferFunctions.function_statement_sealed_table_assignment_through_indexer
|
|
TypeInferFunctions.generic_packs_are_not_variadic
|
|
TypeInferFunctions.higher_order_function_2
|
|
TypeInferFunctions.higher_order_function_4
|
|
TypeInferFunctions.improved_function_arg_mismatch_error_nonstrict
|
|
TypeInferFunctions.improved_function_arg_mismatch_errors
|
|
TypeInferFunctions.infer_anonymous_function_arguments
|
|
TypeInferFunctions.infer_anonymous_function_arguments_outside_call
|
|
TypeInferFunctions.infer_generic_function_function_argument
|
|
TypeInferFunctions.infer_generic_function_function_argument_overloaded
|
|
TypeInferFunctions.infer_generic_lib_function_function_argument
|
|
TypeInferFunctions.infer_return_type_from_selected_overload
|
|
TypeInferFunctions.infer_return_value_type
|
|
TypeInferFunctions.infer_that_function_does_not_return_a_table
|
|
TypeInferFunctions.inferred_higher_order_functions_are_quantified_at_the_right_time3
|
|
TypeInferFunctions.instantiated_type_packs_must_have_a_non_null_scope
|
|
TypeInferFunctions.it_is_ok_to_oversaturate_a_higher_order_function_argument
|
|
TypeInferFunctions.list_all_overloads_if_no_overload_takes_given_argument_count
|
|
TypeInferFunctions.list_only_alternative_overloads_that_match_argument_count
|
|
TypeInferFunctions.luau_subtyping_is_np_hard
|
|
TypeInferFunctions.mutual_recursion
|
|
TypeInferFunctions.no_lossy_function_type
|
|
TypeInferFunctions.num_is_solved_after_num_or_str
|
|
TypeInferFunctions.occurs_check_failure_in_function_return_type
|
|
TypeInferFunctions.other_things_are_not_related_to_function
|
|
TypeInferFunctions.param_1_and_2_both_takes_the_same_generic_but_their_arguments_are_incompatible
|
|
TypeInferFunctions.param_1_and_2_both_takes_the_same_generic_but_their_arguments_are_incompatible_2
|
|
TypeInferFunctions.record_matching_overload
|
|
TypeInferFunctions.regex_benchmark_string_format_minimization
|
|
TypeInferFunctions.report_exiting_without_return_nonstrict
|
|
TypeInferFunctions.report_exiting_without_return_strict
|
|
TypeInferFunctions.return_type_by_overload
|
|
TypeInferFunctions.too_few_arguments_variadic
|
|
TypeInferFunctions.too_few_arguments_variadic_generic
|
|
TypeInferFunctions.too_few_arguments_variadic_generic2
|
|
TypeInferFunctions.too_many_arguments
|
|
TypeInferFunctions.too_many_arguments_error_location
|
|
TypeInferFunctions.too_many_return_values_in_parentheses
|
|
TypeInferFunctions.too_many_return_values_no_function
|
|
TypeInferFunctions.toposort_doesnt_break_mutual_recursion
|
|
TypeInferFunctions.vararg_function_is_quantified
|
|
TypeInferLoops.cli_68448_iterators_need_not_accept_nil
|
|
TypeInferLoops.dcr_iteration_explore_raycast_minimization
|
|
TypeInferLoops.dcr_iteration_fragmented_keys
|
|
TypeInferLoops.dcr_iteration_on_never_gives_never
|
|
TypeInferLoops.dcr_xpath_candidates
|
|
TypeInferLoops.for_in_loop
|
|
TypeInferLoops.for_in_loop_error_on_factory_not_returning_the_right_amount_of_values
|
|
TypeInferLoops.for_in_loop_error_on_iterator_requiring_args_but_none_given
|
|
TypeInferLoops.for_in_loop_on_error
|
|
TypeInferLoops.for_in_loop_on_non_function
|
|
TypeInferLoops.for_in_loop_with_custom_iterator
|
|
TypeInferLoops.for_in_loop_with_incompatible_args_to_iterator
|
|
TypeInferLoops.for_in_loop_with_next
|
|
TypeInferLoops.for_in_with_an_iterator_of_type_any
|
|
TypeInferLoops.for_in_with_generic_next
|
|
TypeInferLoops.for_in_with_just_one_iterator_is_ok
|
|
TypeInferLoops.for_loop
|
|
TypeInferLoops.ipairs_produces_integral_indices
|
|
TypeInferLoops.iteration_no_table_passed
|
|
TypeInferLoops.iteration_regression_issue_69967
|
|
TypeInferLoops.iteration_regression_issue_69967_alt
|
|
TypeInferLoops.loop_iter_basic
|
|
TypeInferLoops.loop_iter_metamethod_nil
|
|
TypeInferLoops.loop_iter_metamethod_ok
|
|
TypeInferLoops.loop_iter_metamethod_ok_with_inference
|
|
TypeInferLoops.loop_iter_trailing_nil
|
|
TypeInferLoops.loop_typecheck_crash_on_empty_optional
|
|
TypeInferLoops.properly_infer_iteratee_is_a_free_table
|
|
TypeInferLoops.repeat_loop
|
|
TypeInferLoops.unreachable_code_after_infinite_loop
|
|
TypeInferLoops.varlist_declared_by_for_in_loop_should_be_free
|
|
TypeInferLoops.while_loop
|
|
TypeInferModules.bound_free_table_export_is_ok
|
|
TypeInferModules.custom_require_global
|
|
TypeInferModules.do_not_modify_imported_types
|
|
TypeInferModules.do_not_modify_imported_types_5
|
|
TypeInferModules.require
|
|
TypeInferModules.require_failed_module
|
|
TypeInferOOP.CheckMethodsOfSealed
|
|
TypeInferOOP.cycle_between_object_constructor_and_alias
|
|
TypeInferOOP.dont_suggest_using_colon_rather_than_dot_if_another_overload_works
|
|
TypeInferOOP.dont_suggest_using_colon_rather_than_dot_if_it_wont_help_2
|
|
TypeInferOOP.dont_suggest_using_colon_rather_than_dot_if_not_defined_with_colon
|
|
TypeInferOOP.inferring_hundreds_of_self_calls_should_not_suffocate_memory
|
|
TypeInferOOP.method_depends_on_table
|
|
TypeInferOOP.methods_are_topologically_sorted
|
|
TypeInferOOP.object_constructor_can_refer_to_method_of_self
|
|
TypeInferOOP.promise_type_error_too_complex
|
|
TypeInferOOP.react_style_oo
|
|
TypeInferOperators.add_type_family_works
|
|
TypeInferOperators.cli_38355_recursive_union
|
|
TypeInferOperators.compound_assign_mismatch_metatable
|
|
TypeInferOperators.compound_assign_result_must_be_compatible_with_var
|
|
TypeInferOperators.concat_op_on_free_lhs_and_string_rhs
|
|
TypeInferOperators.concat_op_on_string_lhs_and_free_rhs
|
|
TypeInferOperators.disallow_string_and_types_without_metatables_from_arithmetic_binary_ops
|
|
TypeInferOperators.equality_operations_succeed_if_any_union_branch_succeeds
|
|
TypeInferOperators.error_on_invalid_operand_types_to_relational_operators2
|
|
TypeInferOperators.luau-polyfill.String.slice
|
|
TypeInferOperators.luau_polyfill_is_array
|
|
TypeInferOperators.mm_comparisons_must_return_a_boolean
|
|
TypeInferOperators.normalize_strings_comparison
|
|
TypeInferOperators.operator_eq_verifies_types_do_intersect
|
|
TypeInferOperators.primitive_arith_no_metatable
|
|
TypeInferOperators.reducing_and
|
|
TypeInferOperators.refine_and_or
|
|
TypeInferOperators.reworked_and
|
|
TypeInferOperators.reworked_or
|
|
TypeInferOperators.strict_binary_op_where_lhs_unknown
|
|
TypeInferOperators.typecheck_overloaded_multiply_that_is_an_intersection
|
|
TypeInferOperators.typecheck_overloaded_multiply_that_is_an_intersection_on_rhs
|
|
TypeInferOperators.typecheck_unary_len_error
|
|
TypeInferOperators.typecheck_unary_minus
|
|
TypeInferOperators.typecheck_unary_minus_error
|
|
TypeInferOperators.UnknownGlobalCompoundAssign
|
|
TypeInferPrimitives.CheckMethodsOfNumber
|
|
TypeInferPrimitives.string_function_indirect
|
|
TypeInferPrimitives.string_index
|
|
TypeInferUnknownNever.assign_to_local_which_is_never
|
|
TypeInferUnknownNever.index_on_union_of_tables_for_properties_that_is_never
|
|
TypeInferUnknownNever.index_on_union_of_tables_for_properties_that_is_sorta_never
|
|
TypeInferUnknownNever.length_of_never
|
|
TypeInferUnknownNever.math_operators_and_never
|
|
TypeInferUnknownNever.type_packs_containing_never_is_itself_uninhabitable
|
|
TypePackTests.pack_tail_unification_check
|
|
TypePackTests.type_alias_backwards_compatible
|
|
TypePackTests.type_alias_default_type_errors
|
|
TypePackTests.type_alias_type_packs_import
|
|
TypePackTests.type_packs_with_tails_in_vararg_adjustment
|
|
TypePackTests.unify_variadic_tails_in_arguments
|
|
TypeSingletons.enums_using_singletons_mismatch
|
|
TypeSingletons.error_detailed_tagged_union_mismatch_bool
|
|
TypeSingletons.error_detailed_tagged_union_mismatch_string
|
|
TypeSingletons.function_args_infer_singletons
|
|
TypeSingletons.function_call_with_singletons
|
|
TypeSingletons.function_call_with_singletons_mismatch
|
|
TypeSingletons.return_type_of_f_is_not_widened
|
|
TypeSingletons.table_properties_type_error_escapes
|
|
TypeSingletons.widen_the_supertype_if_it_is_free_and_subtype_has_singleton
|
|
TypeStatesTest.invalidate_type_refinements_upon_assignments
|
|
UnionTypes.error_detailed_optional
|
|
UnionTypes.error_detailed_union_all
|
|
UnionTypes.error_takes_optional_arguments
|
|
UnionTypes.generic_function_with_optional_arg
|
|
UnionTypes.index_on_a_union_type_with_missing_property
|
|
UnionTypes.less_greedy_unification_with_union_types
|
|
UnionTypes.optional_arguments_table
|
|
UnionTypes.optional_length_error
|
|
UnionTypes.optional_union_functions
|
|
UnionTypes.optional_union_members
|
|
UnionTypes.optional_union_methods
|
|
UnionTypes.return_types_can_be_disjoint
|
|
UnionTypes.table_union_write_indirect
|
|
UnionTypes.unify_unsealed_table_union_check
|
|
UnionTypes.union_function_any_args
|
|
UnionTypes.union_of_functions_mentioning_generic_typepacks
|
|
UnionTypes.union_of_functions_mentioning_generics
|
|
UnionTypes.union_of_functions_with_mismatching_arg_arities
|
|
UnionTypes.union_of_functions_with_mismatching_arg_variadics
|
|
UnionTypes.union_of_functions_with_mismatching_result_arities
|
|
UnionTypes.union_of_functions_with_mismatching_result_variadics
|
|
UnionTypes.union_of_functions_with_variadics
|
|
VisitType.throw_when_limit_is_exceeded
|