diff options
Diffstat (limited to 'src/vim9expr.c')
-rw-r--r-- | src/vim9expr.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/vim9expr.c b/src/vim9expr.c index 1034f64b0..06d1657ec 100644 --- a/src/vim9expr.c +++ b/src/vim9expr.c @@ -370,6 +370,17 @@ compile_class_object_index(cctx_T *cctx, char_u **arg, type_T *type) } } + // Could be a function reference: "obj.Func". + for (int i = 0; i < cl->class_obj_method_count; ++i) + { + ufunc_T *fp = cl->class_obj_methods[i]; + // Use a separate pointer to avoid that ASAN complains about + // uf_name[] only being 4 characters. + char_u *ufname = (char_u *)fp->uf_name; + if (STRNCMP(name, ufname, len) == 0 && ufname[len] == NUL) + return generate_FUNCREF(cctx, fp, NULL); + } + semsg(_(e_member_not_found_on_object_str_str), cl->class_name, name); } else |