patch 9.0.1211: storing value in interface member does not always work
Problem: Storing value in interface member does not always work.
Solution: Convert the index on the interface to the index on the object.
diff --git a/src/vim9.h b/src/vim9.h
index 68bef2e..f1c4530 100644
--- a/src/vim9.h
+++ b/src/vim9.h
@@ -78,8 +78,8 @@
// ISN_STOREOTHER, // pop into other script variable isn_arg.other.
ISN_STORENR, // store number into local variable isn_arg.storenr.stnr_idx
- ISN_STOREINDEX, // store into list or dictionary, type isn_arg.vartype,
- // value/index/variable on stack
+ ISN_STOREINDEX, // store into list or dictionary, using
+ // isn_arg.storeindex; value/index/variable on stack
ISN_STORERANGE, // store into blob,
// value/index 1/index 2/variable on stack
@@ -486,6 +486,11 @@
class_T *cm_class;
int cm_idx;
} classmember_T;
+// arguments to ISN_STOREINDEX
+typedef struct {
+ vartype_T si_vartype;
+ class_T *si_class;
+} storeindex_T;
/*
* Instruction
@@ -540,6 +545,7 @@
echowin_T echowin;
construct_T construct;
classmember_T classmember;
+ storeindex_T storeindex;
} isn_arg;
};