mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 9.0.1074: class members are not supported yet
Problem: Class members are not supported yet. Solution: Add initial support for class members.
This commit is contained in:
18
src/vim9.h
18
src/vim9.h
@@ -36,6 +36,8 @@ typedef enum {
|
||||
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 @@ typedef struct {
|
||||
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 @@ struct isn_S {
|
||||
deferins_T defer;
|
||||
echowin_T echowin;
|
||||
construct_T construct;
|
||||
classmember_T classmember;
|
||||
} isn_arg;
|
||||
};
|
||||
|
||||
@@ -538,7 +547,9 @@ struct dfunc_S {
|
||||
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 @@ typedef enum {
|
||||
dest_window,
|
||||
dest_tab,
|
||||
dest_vimvar,
|
||||
dest_class_member,
|
||||
dest_script,
|
||||
dest_reg,
|
||||
dest_expr,
|
||||
@@ -766,6 +778,10 @@ typedef struct {
|
||||
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;
|
||||
|
||||
|
Reference in New Issue
Block a user