diff src/testdir/test_vim9_class.vim @ 31645:fc259e8db5bf v9.0.1155

patch 9.0.1155: cannot use a class as a type Commit: https://github.com/vim/vim/commit/eca2c5fff6f6ccad0df8824c4b4354d3f410d225 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 7 12:08:41 2023 +0000 patch 9.0.1155: cannot use a class as a type Problem: Cannot use a class as a type. Solution: Accept a class and interface name as a type.
author Bram Moolenaar <Bram@vim.org>
date Sat, 07 Jan 2023 13:15:04 +0100
parents 62237ea155d9
children 520857d1fda7
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -665,5 +665,54 @@ def Test_class_implements_interface()
   v9.CheckScriptFailure(lines, 'E1349: Function "Methods" of interface "Some" not implemented')
 enddef
 
+def Test_class_used_as_type()
+  var lines =<< trim END
+      vim9script
+
+      class Point
+        this.x = 0
+        this.y = 0
+      endclass
+
+      var p: Point
+      p = Point.new(2, 33)
+      assert_equal(2, p.x)
+      assert_equal(33, p.y)
+  END
+  v9.CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
+
+      interface HasX
+        this.x: number
+      endinterface
+
+      class Point implements HasX
+        this.x = 0
+        this.y = 0
+      endclass
+
+      var p: Point
+      p = Point.new(2, 33)
+      var hx = p
+      assert_equal(2, hx.x)
+  END
+  v9.CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
+
+      class Point
+        this.x = 0
+        this.y = 0
+      endclass
+
+      var p: Point
+      p = 'text'
+  END
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object but got string')
+enddef
+
 
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker