Mercurial > vim
diff src/vim9type.c @ 33899:a9ccbadecda1 v9.0.2155
patch 9.0.2155: Vim9: type not kept when assigning vars
Commit: https://github.com/vim/vim/commit/d33518522a84b5625e663c1b608e1c68f9f58003
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Fri Dec 8 21:41:23 2023 +0100
patch 9.0.2155: Vim9: type not kept when assigning vars
Problem: Vim9: type not kept when assigning vars
Solution: When assigning a List or a Dict value to a variable of type
'any', keep the type
closes: #13639
closes: #13646
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Dec 2023 15:16:34 +0100 |
parents | cd7acb9bc4fd |
children | a259471e74fe |
line wrap: on
line diff
--- a/src/vim9type.c +++ b/src/vim9type.c @@ -201,6 +201,10 @@ set_tv_type_recurse(type_T *type) void set_tv_type(typval_T *tv, type_T *type) { + if (type->tt_type == VAR_ANY) + // If the variable type is "any", then keep the value type. + // e.g. var x: any = [1, 2] or var y: any = {v: 1} + return; if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL) { dict_T *d = tv->vval.v_dict;