patch 9.1.1577: Vim9: no generic support yet

Problem:  Vim9: no generic support yet
Solution: Add support for generic functions, funcrefs and object/class
          methods (Yegappan Lakshmanan).

closes: #17313

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Yegappan Lakshmanan
2025-07-21 21:36:08 +02:00
committed by Christian Brabandt
parent b486ed8266
commit 3416cee36f
35 changed files with 5905 additions and 161 deletions

View File

@ -3624,8 +3624,14 @@ EXTERN char e_uninitialized_object_var_reference[]
INIT(= N_("E1430: Uninitialized object variable '%s' referenced"));
EXTERN char e_abstract_method_str_direct[]
INIT(= N_("E1431: Abstract method \"%s\" in class \"%s\" cannot be accessed directly"));
EXTERN char e_generic_method_str_override_with_concrete_method_in_class_str[]
INIT(= N_("E1432: Overriding generic method \"%s\" in class \"%s\" with a concrete method"));
EXTERN char e_concrete_method_str_override_with_generic_method_in_class_str[]
INIT(= N_("E1433: Overriding concrete method \"%s\" in class \"%s\" with a generic method"));
EXTERN char e_generic_method_str_type_arguments_mismatch_in_class_str[]
INIT(= N_("E1434: Mismatched number of type variables for generic method \"%s\" in class \"%s\""));
#endif
// E1432 - E1499 unused (reserved for Vim9 class support)
// E1435 - E1499 unused (reserved for Vim9 class support)
EXTERN char e_cannot_mix_positional_and_non_positional_str[]
INIT(= N_("E1500: Cannot mix positional and non-positional arguments: %s"));
EXTERN char e_fmt_arg_nr_unused_str[]
@ -3746,3 +3752,25 @@ EXTERN char e_failed_to_find_all_diff_anchors[]
EXTERN char e_cannot_open_a_popup_window_to_a_closing_buffer[]
INIT(= N_("E1551: Cannot open a popup window to a closing buffer"));
#endif
#ifdef FEAT_EVAL
EXTERN char e_type_var_name_must_start_with_uppercase_letter_str[]
INIT(= N_("E1552: Type variable name must start with an uppercase letter: %s"));
EXTERN char e_missing_comma_in_generic_function_str[]
INIT(= N_("E1553: Missing comma after type in generic function: %s"));
EXTERN char e_missing_closing_angle_bracket_in_generic_function_str[]
INIT(= N_("E1554: Missing '>' in generic function: %s"));
EXTERN char e_empty_type_list_for_generic_function_str[]
INIT(= N_("E1555: Empty type list specified for generic function '%s'"));
EXTERN char e_too_many_types_for_generic_function_str[]
INIT(= N_("E1556: Too many types specified for generic function '%s'"));
EXTERN char e_not_enough_types_for_generic_function_str[]
INIT(= N_("E1557: Not enough types specified for generic function '%s'"));
EXTERN char e_unknown_generic_function_str[]
INIT(= N_("E1558: Unknown generic function: %s"));
EXTERN char e_generic_func_missing_type_args_str[]
INIT(= N_("E1559: Type arguments missing for generic function '%s'"));
EXTERN char e_not_a_generic_function_str[]
INIT(= N_("E1560: Not a generic function: %s"));
EXTERN char e_duplicate_type_var_name_str[]
INIT(= N_("E1561: Duplicate type variable name: %s"));
#endif