Mercurial > vim
diff src/testdir/test_vim9_class.vim @ 31704:69ee530cac28 v9.0.1184
patch 9.0.1184: interface of an object is not recognized when checking type
Commit: https://github.com/vim/vim/commit/a94bd9d9396183eb7781f8d6a5a0e6e97442e9ed
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jan 12 15:01:32 2023 +0000
patch 9.0.1184: interface of an object is not recognized when checking type
Problem: Interface of an object is not recognized when checking type.
Solution: Use the interface implemented by an object.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 12 Jan 2023 16:15:04 +0100 |
parents | 9fba3e8bbadc |
children | 824fc05d9571 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -455,6 +455,24 @@ def Test_object_type() var o: One = Two.new() END v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object<One> but got object<Two>') + + lines =<< trim END + vim9script + + interface One + def GetMember(): number + endinterface + class Two implements One + this.one = 1 + def GetMember(): number + return this.one + enddef + endclass + + var o: One = Two.new(5) + assert_equal(5, o.GetMember()) + END + v9.CheckScriptSuccess(lines) enddef def Test_class_member()