Mercurial > vim
diff src/vim9.h @ 31483:1bebc2093e6b v9.0.1074
patch 9.0.1074: class members are not supported yet
Commit: https://github.com/vim/vim/commit/d505d178858434e1afef0363a9fce4bcb1bc3d06
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Dec 18 21:42:55 2022 +0000
patch 9.0.1074: class members are not supported yet
Problem: Class members are not supported yet.
Solution: Add initial support for class members.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 18 Dec 2022 22:45:04 +0100 |
parents | e572ff386670 |
children | 9b13b3a63bc0 |
line wrap: on
line diff
--- a/src/vim9.h +++ b/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;