forked from aniani/vim
patch 9.1.0385: Vim9: crash with null_class and null_object
Problem: Vim9: crash with null_class and null_object
(Aliaksei Budavei)
Solution: Handle null_class and null_object correctly
(Yegappan Lakshmanan)
fixes: #14678
closes: #14681
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
ca4b81a7ae
commit
b2e42b9be0
@@ -545,6 +545,52 @@ def Test_using_null_class()
|
||||
@_ = null_class.member
|
||||
END
|
||||
v9.CheckDefExecAndScriptFailure(lines, ['E715: Dictionary required', 'E1363: Incomplete type'])
|
||||
|
||||
# Test for using a null class as a value
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
echo empty(null_class)
|
||||
END
|
||||
v9.CheckSourceFailure(lines, 'E1405: Class "" cannot be used as a value', 2)
|
||||
|
||||
# Test for using a null class with string()
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
assert_equal('class [unknown]', string(null_class))
|
||||
END
|
||||
v9.CheckSourceSuccess(lines)
|
||||
|
||||
# Test for using a null class with string()
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
assert_equal(12, type(null_class))
|
||||
assert_equal('class<Unknown>', typename(null_class))
|
||||
END
|
||||
v9.CheckSourceSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_using_null_object()
|
||||
# Test for using a null object as a value
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
assert_equal(1, empty(null_object))
|
||||
END
|
||||
v9.CheckSourceSuccess(lines)
|
||||
|
||||
# Test for using a null object with string()
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
assert_equal('object of [unknown]', string(null_object))
|
||||
END
|
||||
v9.CheckSourceSuccess(lines)
|
||||
|
||||
# Test for using a null object with string()
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
assert_equal(13, type(null_object))
|
||||
assert_equal('object<Unknown>', typename(null_object))
|
||||
END
|
||||
v9.CheckSourceSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_class_interface_wrong_end()
|
||||
|
||||
Reference in New Issue
Block a user