patch 9.0.1265: using an interface method may give a compilation error
Problem: Using an interface method may give a compilation error.
Solution: Do not try to compile the body of a method of an interface.
(closes #11885)
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 3f97c00..27b71f7 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3181,6 +3181,16 @@
}
ufunc->uf_args_visible = ufunc->uf_args.ga_len;
+ // Compiling a function in an interface is done to get the function type.
+ // No code is actually compiled.
+ if (ufunc->uf_class != NULL
+ && (ufunc->uf_class->class_flags & CLASS_INTERFACE))
+ {
+ ufunc->uf_def_status = UF_NOT_COMPILED;
+ ret = OK;
+ goto erret;
+ }
+
/*
* Loop over all the lines of the function and generate instructions.
*/
@@ -3705,7 +3715,7 @@
iemsg("Type stack underflow");
goto erret;
}
- }
+ } // END of the loop over all the function body lines.
if (cctx.ctx_scope != NULL)
{