summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
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/evalfunc.c
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/evalfunc.c')
-rw-r--r--src/evalfunc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 9e4e26ba0c..7f7914eca7 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3890,6 +3890,12 @@ f_empty(typval_T *argvars, typval_T *rettv)
|| !channel_is_open(argvars[0].vval.v_channel);
break;
#endif
+ case VAR_TYPEALIAS:
+ n = argvars[0].vval.v_typealias == NULL
+ || argvars[0].vval.v_typealias->ta_name == NULL
+ || *argvars[0].vval.v_typealias->ta_name == NUL;
+ break;
+
case VAR_UNKNOWN:
case VAR_ANY:
case VAR_VOID:
@@ -7539,6 +7545,7 @@ f_len(typval_T *argvars, typval_T *rettv)
case VAR_INSTR:
case VAR_CLASS:
case VAR_OBJECT:
+ case VAR_TYPEALIAS:
emsg(_(e_invalid_type_for_len));
break;
}
@@ -10885,6 +10892,7 @@ f_type(typval_T *argvars, typval_T *rettv)
case VAR_INSTR: n = VAR_TYPE_INSTR; break;
case VAR_CLASS: n = VAR_TYPE_CLASS; break;
case VAR_OBJECT: n = VAR_TYPE_OBJECT; break;
+ case VAR_TYPEALIAS: n = VAR_TYPE_TYPEALIAS; break;
case VAR_UNKNOWN:
case VAR_ANY:
case VAR_VOID: