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>
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 9e4e26b..7f7914e 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3890,6 +3890,12 @@
|| !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 @@
case VAR_INSTR:
case VAR_CLASS:
case VAR_OBJECT:
+ case VAR_TYPEALIAS:
emsg(_(e_invalid_type_for_len));
break;
}
@@ -10885,6 +10892,7 @@
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: