mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 9.0.1031: Vim9 class is not implemented yet
Problem: Vim9 class is not implemented yet. Solution: Add very basic class support.
This commit is contained in:
46
src/typval.c
46
src/typval.c
@@ -84,6 +84,13 @@ free_tv(typval_T *varp)
|
||||
channel_unref(varp->vval.v_channel);
|
||||
break;
|
||||
#endif
|
||||
case VAR_CLASS:
|
||||
class_unref(varp);
|
||||
break;
|
||||
case VAR_OBJECT:
|
||||
object_unref(varp->vval.v_object);
|
||||
break;
|
||||
|
||||
case VAR_NUMBER:
|
||||
case VAR_FLOAT:
|
||||
case VAR_ANY:
|
||||
@@ -153,6 +160,12 @@ clear_tv(typval_T *varp)
|
||||
case VAR_INSTR:
|
||||
VIM_CLEAR(varp->vval.v_instr);
|
||||
break;
|
||||
case VAR_CLASS:
|
||||
class_unref(varp);
|
||||
break;
|
||||
case VAR_OBJECT:
|
||||
object_unref(varp->vval.v_object);
|
||||
break;
|
||||
case VAR_UNKNOWN:
|
||||
case VAR_ANY:
|
||||
case VAR_VOID:
|
||||
@@ -234,6 +247,12 @@ tv_get_bool_or_number_chk(typval_T *varp, int *denote, int want_bool)
|
||||
case VAR_BLOB:
|
||||
emsg(_(e_using_blob_as_number));
|
||||
break;
|
||||
case VAR_CLASS:
|
||||
emsg(_(e_using_class_as_number));
|
||||
break;
|
||||
case VAR_OBJECT:
|
||||
emsg(_(e_using_object_as_number));
|
||||
break;
|
||||
case VAR_VOID:
|
||||
emsg(_(e_cannot_use_void_value));
|
||||
break;
|
||||
@@ -333,6 +352,12 @@ tv_get_float_chk(typval_T *varp, int *error)
|
||||
case VAR_BLOB:
|
||||
emsg(_(e_using_blob_as_float));
|
||||
break;
|
||||
case VAR_CLASS:
|
||||
emsg(_(e_using_class_as_float));
|
||||
break;
|
||||
case VAR_OBJECT:
|
||||
emsg(_(e_using_object_as_float));
|
||||
break;
|
||||
case VAR_VOID:
|
||||
emsg(_(e_cannot_use_void_value));
|
||||
break;
|
||||
@@ -1029,6 +1054,12 @@ tv_get_string_buf_chk_strict(typval_T *varp, char_u *buf, int strict)
|
||||
case VAR_BLOB:
|
||||
emsg(_(e_using_blob_as_string));
|
||||
break;
|
||||
case VAR_CLASS:
|
||||
emsg(_(e_using_class_as_string));
|
||||
break;
|
||||
case VAR_OBJECT:
|
||||
emsg(_(e_using_object_as_string));
|
||||
break;
|
||||
case VAR_JOB:
|
||||
#ifdef FEAT_JOB_CHANNEL
|
||||
if (in_vim9script())
|
||||
@@ -1158,6 +1189,14 @@ copy_tv(typval_T *from, typval_T *to)
|
||||
to->vval.v_instr = from->vval.v_instr;
|
||||
break;
|
||||
|
||||
case VAR_CLASS:
|
||||
copy_class(from, to);
|
||||
break;
|
||||
|
||||
case VAR_OBJECT:
|
||||
copy_object(from, to);
|
||||
break;
|
||||
|
||||
case VAR_STRING:
|
||||
case VAR_FUNC:
|
||||
if (from->vval.v_string == NULL)
|
||||
@@ -1878,6 +1917,13 @@ tv_equal(
|
||||
case VAR_INSTR:
|
||||
return tv1->vval.v_instr == tv2->vval.v_instr;
|
||||
|
||||
case VAR_CLASS:
|
||||
return tv1->vval.v_class == tv2->vval.v_class;
|
||||
|
||||
case VAR_OBJECT:
|
||||
// TODO: compare values
|
||||
return tv1->vval.v_object == tv2->vval.v_object;
|
||||
|
||||
case VAR_PARTIAL:
|
||||
return tv1->vval.v_partial == tv2->vval.v_partial;
|
||||
|
||||
|
Reference in New Issue
Block a user