diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-10-27 19:35:26 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-10-27 19:35:26 +0200 |
commit | ec3cebbd2b6b7583d2f683f5e66345163ec122aa (patch) | |
tree | 66f0c9b69e88fa4a0d35ae738f687b5679bc56e0 /src/evalfunc.c | |
parent | 4bca4897a12dfb91b3b27e3083fd5f370bd857d1 (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.c | 8 |
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: |