patch 9.0.1074: class members are not supported yet
Problem: Class members are not supported yet.
Solution: Add initial support for class members.
diff --git a/src/vim9.h b/src/vim9.h
index bddeb15..f8e5e56 100644
--- a/src/vim9.h
+++ b/src/vim9.h
@@ -36,6 +36,8 @@
ISN_GET_OBJ_MEMBER, // object member, index is isn_arg.number
ISN_STORE_THIS, // store value in "this" object member, index is
// isn_arg.number
+ ISN_LOAD_CLASSMEMBER, // load class member, using classmember_T
+ ISN_STORE_CLASSMEMBER, // store in class member, using classmember_T
// get and set variables
ISN_LOAD, // push local variable isn_arg.number
@@ -476,6 +478,12 @@
class_T *construct_class; // class the object is created from
} construct_T;
+// arguments to ISN_STORE_CLASSMEMBER and ISN_LOAD_CLASSMEMBER
+typedef struct {
+ class_T *cm_class;
+ int cm_idx;
+} classmember_T;
+
/*
* Instruction
*/
@@ -528,6 +536,7 @@
deferins_T defer;
echowin_T echowin;
construct_T construct;
+ classmember_T classmember;
} isn_arg;
};
@@ -538,7 +547,9 @@
ufunc_T *df_ufunc; // struct containing most stuff
int df_refcount; // how many ufunc_T point to this dfunc_T
int df_idx; // index in def_functions
- int df_deleted; // if TRUE function was deleted
+ char df_deleted; // if TRUE function was deleted
+ char df_delete_busy; // TRUE when in
+ // delete_def_function_contents()
int df_script_seq; // Value of sctx_T sc_seq when the function
// was compiled.
char_u *df_name; // name used for error messages
@@ -735,6 +746,7 @@
dest_window,
dest_tab,
dest_vimvar,
+ dest_class_member,
dest_script,
dest_reg,
dest_expr,
@@ -766,6 +778,10 @@
lvar_T lhs_local_lvar; // used for existing local destination
lvar_T lhs_arg_lvar; // used for argument destination
lvar_T *lhs_lvar; // points to destination lvar
+
+ class_T *lhs_class; // for dest_class_member
+ int lhs_classmember_idx; // for dest_class_member
+
int lhs_scriptvar_sid;
int lhs_scriptvar_idx;