changeset 31896:ecfabcaafc0b v9.0.1280

patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes Commit: https://github.com/vim/vim/commit/7a1bdaecf2d2a06eb06ed462e6ccae4954939fc9 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 4 15:45:27 2023 +0000 patch 9.0.1280: inssufficient testing for what 9.0.1265 fixes Problem: Inssufficient testing for what 9.0.1265 fixes. Solution: Add a couple of test cases. (issue https://github.com/vim/vim/issues/11885)
author Bram Moolenaar <Bram@vim.org>
date Sat, 04 Feb 2023 17:00:04 +0100
parents bb5c63d6020c
children bb51f13a7bea
files src/testdir/test_vim9_class.vim src/version.c
diffstat 2 files changed, 56 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -1050,6 +1050,60 @@ def Test_call_interface_method()
   END
   v9.CheckScriptSuccess(lines)
 
+  # method of interface returns a value
+  lines =<< trim END
+    vim9script
+    interface Base
+      def Enter(): string
+    endinterface
+
+    class Child implements Base
+      def Enter(): string
+        g:result ..= 'child'
+        return "/resource"
+      enddef
+    endclass
+
+    def F(obj: Base)
+      var r = obj.Enter()
+      g:result ..= r
+    enddef
+
+    g:result = ''
+    F(Child.new())
+    assert_equal('child/resource', g:result)
+    unlet g:result
+  END
+  v9.CheckScriptSuccess(lines)
+
+  lines =<< trim END
+    vim9script
+    class Base
+      def Enter(): string
+        return null_string
+      enddef
+    endclass
+
+    class Child extends Base
+      def Enter(): string
+        g:result ..= 'child'
+        return "/resource"
+      enddef
+    endclass
+
+    def F(obj: Base)
+      var r = obj.Enter()
+      g:result ..= r
+    enddef
+
+    g:result = ''
+    F(Child.new())
+    assert_equal('child/resource', g:result)
+    unlet g:result
+  END
+  v9.CheckScriptSuccess(lines)
+
+
   # No class that implements the interface.
   lines =<< trim END
       vim9script
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1280,
+/**/
     1279,
 /**/
     1278,