summaryrefslogtreecommitdiffstats
path: root/src/structs.h
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2023-10-27 19:35:26 +0200
committerChristian Brabandt <cb@256bit.org>2023-10-27 19:35:26 +0200
commitec3cebbd2b6b7583d2f683f5e66345163ec122aa (patch)
tree66f0c9b69e88fa4a0d35ae738f687b5679bc56e0 /src/structs.h
parent4bca4897a12dfb91b3b27e3083fd5f370bd857d1 (diff)
patch 9.0.2076: Vim9: No support for type aliasesv9.0.2076
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>
Diffstat (limited to 'src/structs.h')
-rw-r--r--src/structs.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/structs.h b/src/structs.h
index 209067b2e0..36968741e3 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -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;
};