mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.2051: Vim9: wrong error for non-existing object var
Problem: Vim9: wrong error for non-existing object var Solution: mention object or class depending on whether the var is an object or class variable. closes: #13384 closes: #13387 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
parent
e08bfef88b
commit
00b55370b3
@ -1743,7 +1743,7 @@ def Test_class_member()
|
|||||||
var a = A.new()
|
var a = A.new()
|
||||||
var v = a.bar
|
var v = a.bar
|
||||||
END
|
END
|
||||||
v9.CheckSourceFailure(lines, 'E1337: Class variable "bar" not found in class "A"', 5)
|
v9.CheckSourceFailure(lines, 'E1326: Variable not found on object "A": bar', 5)
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
" These messages should show the defining class of the variable (base class),
|
" These messages should show the defining class of the variable (base class),
|
||||||
@ -5384,7 +5384,7 @@ def Test_class_variable_access_using_object()
|
|||||||
var a = A.new()
|
var a = A.new()
|
||||||
echo a.svar2
|
echo a.svar2
|
||||||
END
|
END
|
||||||
v9.CheckSourceFailure(lines, 'E1337: Class variable "svar2" not found in class "A"', 8)
|
v9.CheckSourceFailure(lines, 'E1375: Class variable "svar2" accessible only using class "A"', 8)
|
||||||
|
|
||||||
# Cannot write to a class variable using an object in script context
|
# Cannot write to a class variable using an object in script context
|
||||||
lines =<< trim END
|
lines =<< trim END
|
||||||
@ -5859,7 +5859,7 @@ def Test_class_variable()
|
|||||||
var a = A.new()
|
var a = A.new()
|
||||||
var i = a.val
|
var i = a.val
|
||||||
END
|
END
|
||||||
v9.CheckSourceFailure(lines, 'E1337: Class variable "val" not found in class "A"', 7)
|
v9.CheckSourceFailure(lines, 'E1375: Class variable "val" accessible only using class "A"', 7)
|
||||||
|
|
||||||
# Modifying a class variable using an object at function level
|
# Modifying a class variable using an object at function level
|
||||||
lines =<< trim END
|
lines =<< trim END
|
||||||
@ -8344,6 +8344,7 @@ def Test_class_variable_as_operands()
|
|||||||
vim9script
|
vim9script
|
||||||
class Tests
|
class Tests
|
||||||
static truthy: bool = true
|
static truthy: bool = true
|
||||||
|
public static TruthyFn: func
|
||||||
static list: list<any> = []
|
static list: list<any> = []
|
||||||
static four: number = 4
|
static four: number = 4
|
||||||
static hello: string = 'hello'
|
static hello: string = 'hello'
|
||||||
@ -8381,6 +8382,8 @@ def Test_class_variable_as_operands()
|
|||||||
def TestOps2()
|
def TestOps2()
|
||||||
assert_true(Tests.truthy == Tests.Truthy())
|
assert_true(Tests.truthy == Tests.Truthy())
|
||||||
assert_true(Tests.Truthy() == Tests.truthy)
|
assert_true(Tests.Truthy() == Tests.truthy)
|
||||||
|
assert_true(Tests.truthy == Tests.TruthyFn())
|
||||||
|
assert_true(Tests.TruthyFn() == Tests.truthy)
|
||||||
assert_true(Tests.list is Tests.List())
|
assert_true(Tests.list is Tests.List())
|
||||||
assert_true(Tests.List() is Tests.list)
|
assert_true(Tests.List() is Tests.list)
|
||||||
assert_equal(2, Tests.four >> 1)
|
assert_equal(2, Tests.four >> 1)
|
||||||
@ -8391,12 +8394,15 @@ def Test_class_variable_as_operands()
|
|||||||
assert_equal('hellohello', Tests.Hello() .. Tests.hello)
|
assert_equal('hellohello', Tests.Hello() .. Tests.hello)
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
Tests.TruthyFn = Tests.Truthy
|
||||||
var t = Tests.new()
|
var t = Tests.new()
|
||||||
t.TestOps()
|
t.TestOps()
|
||||||
TestOps2()
|
TestOps2()
|
||||||
|
|
||||||
assert_true(Tests.truthy == Tests.Truthy())
|
assert_true(Tests.truthy == Tests.Truthy())
|
||||||
assert_true(Tests.Truthy() == Tests.truthy)
|
assert_true(Tests.Truthy() == Tests.truthy)
|
||||||
|
assert_true(Tests.truthy == Tests.TruthyFn())
|
||||||
|
assert_true(Tests.TruthyFn() == Tests.truthy)
|
||||||
assert_true(Tests.list is Tests.List())
|
assert_true(Tests.list is Tests.List())
|
||||||
assert_true(Tests.List() is Tests.list)
|
assert_true(Tests.List() is Tests.list)
|
||||||
assert_equal(2, Tests.four >> 1)
|
assert_equal(2, Tests.four >> 1)
|
||||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2051,
|
||||||
/**/
|
/**/
|
||||||
2050,
|
2050,
|
||||||
/**/
|
/**/
|
||||||
|
@ -2340,7 +2340,8 @@ class_object_index(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (did_emsg == did_emsg_save)
|
if (did_emsg == did_emsg_save)
|
||||||
member_not_found_msg(cl, is_object, name, len);
|
member_not_found_msg(cl, is_object ? VAR_OBJECT : VAR_CLASS, name,
|
||||||
|
len);
|
||||||
}
|
}
|
||||||
|
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user