Mercurial > vim
diff src/vim9execute.c @ 33678:7d9d2404a3d4 v9.0.2076
patch 9.0.2076: Vim9: No support for type aliases
Commit: https://github.com/vim/vim/commit/ec3cebbd2b6b7583d2f683f5e66345163ec122aa
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Fri Oct 27 19:35:26 2023 +0200
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 27 Oct 2023 19:45:05 +0200 |
parents | 31fb1a760ad6 |
children | f126ffc85f7c |
line wrap: on
line diff
--- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -3807,6 +3807,13 @@ exec_instructions(ectx_T *ectx) case ISN_STORE: --ectx->ec_stack.ga_len; tv = STACK_TV_VAR(iptr->isn_arg.number); + if (STACK_TV_BOT(0)->v_type == VAR_TYPEALIAS) + { + semsg(_(e_using_typealias_as_variable), + STACK_TV_BOT(0)->vval.v_typealias->ta_name); + clear_tv(STACK_TV_BOT(0)); + goto on_error; + } clear_tv(tv); *tv = *STACK_TV_BOT(0); break; @@ -7517,6 +7524,7 @@ tv2bool(typval_T *tv) case VAR_INSTR: case VAR_CLASS: case VAR_OBJECT: + case VAR_TYPEALIAS: break; } return FALSE;