mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.0.2076: Vim9: No support for type aliases
Problem: Vim9: No support for type aliases Solution: Implement :type command A type definition is giving a name to a type specification. This also known type alias. :type ListOfStrings = list<string> The type alias can be used wherever a built-in type can be used. The type alias name must start with an upper case character. closes: #13407 Signed-off-by: Christian Brabandt <cb@256bit.org> Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
committed by
Christian Brabandt
parent
4bca4897a1
commit
ec3cebbd2b
@@ -1468,6 +1468,7 @@ typedef struct ectx_S ectx_T;
|
||||
typedef struct instr_S instr_T;
|
||||
typedef struct class_S class_T;
|
||||
typedef struct object_S object_T;
|
||||
typedef struct typealias_S typealias_T;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@@ -1489,6 +1490,7 @@ typedef enum
|
||||
VAR_INSTR, // "v_instr" is used
|
||||
VAR_CLASS, // "v_class" is used (also used for interface)
|
||||
VAR_OBJECT, // "v_object" is used
|
||||
VAR_TYPEALIAS // "v_typealias" is used
|
||||
} vartype_T;
|
||||
|
||||
// A type specification.
|
||||
@@ -1602,6 +1604,13 @@ struct object_S
|
||||
int obj_copyID; // used by garbage collection
|
||||
};
|
||||
|
||||
struct typealias_S
|
||||
{
|
||||
int ta_refcount;
|
||||
type_T *ta_type;
|
||||
char_u *ta_name;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure to hold an internal variable without a name.
|
||||
*/
|
||||
@@ -1625,6 +1634,7 @@ struct typval_S
|
||||
instr_T *v_instr; // instructions to execute
|
||||
class_T *v_class; // class value (can be NULL)
|
||||
object_T *v_object; // object value (can be NULL)
|
||||
typealias_T *v_typealias; // user-defined type name
|
||||
} vval;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user