diff src/vim9expr.c @ 31455:5ef28f5ff357 v9.0.1060

patch 9.0.1060: private and public object members are not implemented yet Commit: https://github.com/vim/vim/commit/3d473ee1a6aed7cb9eae458bbd8d42dffdc754f9 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Dec 14 20:59:32 2022 +0000 patch 9.0.1060: private and public object members are not implemented yet problem: Private and public object members are not implemented yet. Solution: Implement private and public object members.
author Bram Moolenaar <Bram@vim.org>
date Wed, 14 Dec 2022 22:00:04 +0100
parents e31fc75f6aff
children 1bebc2093e6b
line wrap: on
line diff
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -281,6 +281,13 @@ compile_class_object_index(cctx_T *cctx,
 	    objmember_T *m = &cl->class_obj_members[i];
 	    if (STRNCMP(name, m->om_name, len) == 0 && m->om_name[len] == NUL)
 	    {
+		if (*name == '_' && cctx->ctx_ufunc->uf_class != cl)
+		{
+		    semsg(_(e_cannot_access_private_object_member_str),
+								   m->om_name);
+		    return FAIL;
+		}
+
 		generate_GET_OBJ_MEMBER(cctx, i, m->om_type);
 
 		*arg = name_end;