summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-12-08 15:32:33 +0000
committerBram Moolenaar <Bram@vim.org>2022-12-08 15:32:33 +0000
commit00b28d6c23d8e662cab27e461825777c0a2e387a (patch)
treeba11ed85b20cf03491e0f24b6d5bf348d2c19388 /src/evalfunc.c
parent038e6d20e680ce8c850d07f6b035c4e1904c1201 (diff)
patch 9.0.1031: Vim9 class is not implemented yetv9.0.1031
Problem: Vim9 class is not implemented yet. Solution: Add very basic class support.
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 84df6a62aa..3db4bb7b24 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3770,6 +3770,12 @@ f_empty(typval_T *argvars, typval_T *rettv)
case VAR_SPECIAL:
n = argvars[0].vval.v_number != VVAL_TRUE;
break;
+ case VAR_CLASS:
+ n = argvars[0].vval.v_class != NULL;
+ break;
+ case VAR_OBJECT:
+ n = argvars[0].vval.v_object != NULL;
+ break;
case VAR_BLOB:
n = argvars[0].vval.v_blob == NULL
@@ -7267,6 +7273,8 @@ f_len(typval_T *argvars, typval_T *rettv)
case VAR_JOB:
case VAR_CHANNEL:
case VAR_INSTR:
+ case VAR_CLASS:
+ case VAR_OBJECT:
emsg(_(e_invalid_type_for_len));
break;
}
@@ -10183,7 +10191,9 @@ f_substitute(typval_T *argvars, typval_T *rettv)
if (argvars[2].v_type == VAR_FUNC
|| argvars[2].v_type == VAR_PARTIAL
- || argvars[2].v_type == VAR_INSTR)
+ || argvars[2].v_type == VAR_INSTR
+ || argvars[2].v_type == VAR_CLASS
+ || argvars[2].v_type == VAR_OBJECT)
expr = &argvars[2];
else
sub = tv_get_string_buf_chk(&argvars[2], subbuf);
@@ -10617,6 +10627,8 @@ 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_UNKNOWN:
case VAR_ANY:
case VAR_VOID: