mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.0.1914: Vim9: few issues when accessing object members
Problem: Vim9: few issues when accessing object members Solution: When calling an object method, check for null object. Accessing a Dict object member doesn't work. closes: #13119 closes: #13123 closes: #13124 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
committed by
Christian Brabandt
parent
2ce070c27a
commit
1db1514365
@@ -3286,7 +3286,7 @@ compile_def_function(
|
||||
|
||||
// In the constructor allocate memory for the object and initialize the
|
||||
// object members.
|
||||
if ((ufunc->uf_flags & FC_NEW) == FC_NEW)
|
||||
if (IS_CONSTRUCTOR_METHOD(ufunc))
|
||||
{
|
||||
generate_CONSTRUCT(&cctx, ufunc->uf_class);
|
||||
|
||||
@@ -3949,7 +3949,7 @@ nextline:
|
||||
if (ufunc->uf_ret_type->tt_type == VAR_UNKNOWN)
|
||||
ufunc->uf_ret_type = &t_void;
|
||||
else if (ufunc->uf_ret_type->tt_type != VAR_VOID
|
||||
&& (ufunc->uf_flags & FC_NEW) != FC_NEW)
|
||||
&& !IS_CONSTRUCTOR_METHOD(ufunc))
|
||||
{
|
||||
emsg(_(e_missing_return_statement));
|
||||
goto erret;
|
||||
@@ -3957,7 +3957,7 @@ nextline:
|
||||
|
||||
// Return void if there is no return at the end.
|
||||
// For a constructor return the object.
|
||||
if ((ufunc->uf_flags & FC_NEW) == FC_NEW)
|
||||
if (IS_CONSTRUCTOR_METHOD(ufunc))
|
||||
{
|
||||
generate_instr(&cctx, ISN_RETURN_OBJECT);
|
||||
ufunc->uf_ret_type = &ufunc->uf_class->class_object_type;
|
||||
|
Reference in New Issue
Block a user