patch 9.0.1838: Vim9: Cannot modify class member vars from def function
Problem: Vim9: Cannot modify class member vars from def function
Solution: Add support for modifying class member variables from a def
function
closes: #12995
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
diff --git a/src/vim9expr.c b/src/vim9expr.c
index bfbb369..e894969 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -438,7 +438,14 @@
{
ocmember_T *m = &cl->class_class_members[idx];
if (STRNCMP(name, m->ocm_name, len) == 0 && m->ocm_name[len] == NUL)
+ {
+ if (*name == '_' && !inside_class(cctx, cl))
+ {
+ semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+ return FAIL;
+ }
break;
+ }
}
if (idx < cl->class_class_member_count)
{