patch 9.0.1031: Vim9 class is not implemented yet
Problem: Vim9 class is not implemented yet.
Solution: Add very basic class support.
diff --git a/src/typval.c b/src/typval.c
index b1a0060..6faebe4 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -84,6 +84,13 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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;