diff options
author | Ernie Rael <errael@raelity.com> | 2023-09-21 16:42:28 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-09-21 16:42:28 +0200 |
commit | 696270bcae0c14029030f14a3f3ca2763a2b39de (patch) | |
tree | 08f1691a9d0afc7a4a98884dc7a6220a59815075 | |
parent | 02c51b1dd8e8b96e969ad7e408536fa208d90ac8 (diff) |
patch 9.0.1926: Vim9: not enough info in error messagev9.0.1926
Problem: Vim9: not enough info in error message
Solution: Add class name, change member to variable, quote names
closes: #13136
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
-rw-r--r-- | src/errors.h | 2 | ||||
-rw-r--r-- | src/eval.c | 2 | ||||
-rw-r--r-- | src/testdir/test_vim9_class.vim | 10 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 4 |
5 files changed, 11 insertions, 9 deletions
diff --git a/src/errors.h b/src/errors.h index f1373a42c4..40e16f1c0d 100644 --- a/src/errors.h +++ b/src/errors.h @@ -3411,7 +3411,7 @@ EXTERN char e_cannot_access_private_member_str[] INIT(= N_("E1333: Cannot access private member: %s")); // E1334 unused EXTERN char e_member_is_not_writable_str[] - INIT(= N_("E1335: Member is not writable: %s")); + INIT(= N_("E1335: Variable \"%s\" in class \"%s\" is not writable")); #endif EXTERN char e_internal_error_shortmess_too_long[] INIT(= "E1336: Internal error: shortmess too long"); diff --git a/src/eval.c b/src/eval.c index 93b840e61e..3f8ce5ffef 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1570,7 +1570,7 @@ get_lval( if ((flags & GLV_READ_ONLY) == 0) { semsg(_(e_member_is_not_writable_str), - om->ocm_name); + om->ocm_name, cl->class_name); return NULL; } break; diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index f57bf44d04..6c338167fd 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -646,7 +646,7 @@ def Test_assignment_nested_type() Test_assign_to_nested_typed_member() END - v9.CheckSourceFailure(lines, 'E46: Cannot change read-only variable "value"') + v9.CheckSourceFailure(lines, 'E1335: Variable "value" in class "Inner" is not writable') # Assignment where target item is read only script level lines =<< trim END @@ -669,7 +669,7 @@ def Test_assignment_nested_type() script_outer.inner.value = 1 assert_equal(1, script_inner.value) END - v9.CheckSourceFailure(lines, 'E1335: Member is not writable: value') + v9.CheckSourceFailure(lines, 'E1335: Variable "value" in class "Inner" is not writable') enddef def Test_assignment_with_operator() @@ -1243,7 +1243,7 @@ def Test_class_variable_access() var b = B.new() b.Foo() END - v9.CheckSourceFailure(lines, 'E46: Cannot change read-only variable "ro_class_var"') + v9.CheckSourceFailure(lines, 'E1335: Variable "ro_class_var" in class "A" is not writable') # A private class variable cannot be accessed from a child class lines =<< trim END @@ -4269,7 +4269,7 @@ def Test_readonly_member_change_in_def_func() enddef T() END - v9.CheckSourceFailure(lines, 'E46: Cannot change read-only variable "val"') + v9.CheckSourceFailure(lines, 'E1335: Variable "val" in class "A" is not writable') enddef " Test for reading and writing a class member from a def function @@ -5541,7 +5541,7 @@ def Test_nested_object_assignment() var d = D.new() T(d) END - v9.CheckSourceFailure(lines, 'E46: Cannot change read-only variable "value"') + v9.CheckSourceFailure(lines, 'E1335: Variable "value" in class "A" is not writable') enddef " Test for calling methods using a null object diff --git a/src/version.c b/src/version.c index 3f4c648ab9..ced912523c 100644 --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1926, +/**/ 1925, /**/ 1924, diff --git a/src/vim9compile.c b/src/vim9compile.c index a8d8c7d220..16898e32c7 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -1611,8 +1611,8 @@ lhs_class_member_modifiable(lhs_T *lhs, char_u *var_start, cctx_T *cctx) { char *msg = (m->ocm_access == VIM_ACCESS_PRIVATE) ? e_cannot_access_private_member_str - : e_cannot_change_readonly_variable_str; - semsg(_(msg), m->ocm_name); + : e_member_is_not_writable_str; + semsg(_(msg), m->ocm_name, cl->class_name); return FALSE; } |