diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2024-03-28 10:36:42 +0100 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2024-03-28 10:38:28 +0100 |
commit | 3164cf8f12f14b725b918e3170bb0a9085af8298 (patch) | |
tree | 3bd541655187532df3adead11c8f2afb3a733b8f /src/evalfunc.c | |
parent | 8ede7a069419e0e01368c65a2d0c79d6332aa6cd (diff) |
patch 9.1.0219: Vim9: No enum supportv9.1.0219
Problem: No enum support
Solution: Implement enums for Vim9 script
(Yegappan Lakshmanan)
closes: #14224
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r-- | src/evalfunc.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index 14650caf6b..8c27986b42 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -11486,15 +11486,31 @@ f_type(typval_T *argvars, typval_T *rettv) case VAR_CHANNEL: n = VAR_TYPE_CHANNEL; break; case VAR_BLOB: n = VAR_TYPE_BLOB; break; 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_CLASS: + { + class_T *cl = argvars[0].vval.v_class; + if (IS_ENUM(cl)) + n = VAR_TYPE_ENUM; + else + n = VAR_TYPE_CLASS; + break; + } + case VAR_OBJECT: + { + class_T *cl = argvars[0].vval.v_object->obj_class; + if (IS_ENUM(cl)) + n = VAR_TYPE_ENUMVALUE; + else + n = VAR_TYPE_OBJECT; + break; + } case VAR_UNKNOWN: case VAR_ANY: case VAR_VOID: - internal_error_no_abort("f_type(UNKNOWN)"); - n = -1; - break; + internal_error_no_abort("f_type(UNKNOWN)"); + n = -1; + break; } rettv->vval.v_number = n; } |