Mercurial > vim
diff src/testdir/test_vim9_class.vim @ 33611:de690130ba43 v9.0.2049
patch 9.0.2049: Vim9: not recognizing qualified class vars for infix ops
Commit: https://github.com/vim/vim/commit/d7b616d0ad006db06140729313b6217677cc4e80
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Oct 19 10:47:53 2023 +0200
patch 9.0.2049: Vim9: not recognizing qualified class vars for infix ops
Problem: Vim9: not recognizing qualified class vars for infix ops
Solution: Drop the class type from the stack before generating the
CLASSMEMBER instruction
closes: #13378
closes: #13379
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 19 Oct 2023 11:00:04 +0200 |
parents | 1fcb7c9dc546 |
children | 698de9399942 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -8337,4 +8337,76 @@ def Test_classmethod_timer_callback() v9.CheckSourceSuccess(lines) enddef +" Test for using a class variable as the first and/or second operand of a binary +" operator. +def Test_class_variable_as_operands() + var lines =<< trim END + vim9script + class Tests + static truthy: bool = true + static list: list<any> = [] + static four: number = 4 + static hello: string = 'hello' + + static def Hello(): string + return hello + enddef + + static def Four(): number + return four + enddef + + static def List(): list<any> + return list + enddef + + static def Truthy(): bool + return truthy + enddef + + def TestOps() + assert_true(Tests.truthy == truthy) + assert_true(truthy == Tests.truthy) + assert_true(Tests.list isnot []) + assert_true([] isnot Tests.list) + assert_equal(2, Tests.four >> 1) + assert_equal(16, 1 << Tests.four) + assert_equal(8, Tests.four + four) + assert_equal(8, four + Tests.four) + assert_equal('hellohello', Tests.hello .. hello) + assert_equal('hellohello', hello .. Tests.hello) + enddef + endclass + + def TestOps2() + assert_true(Tests.truthy == Tests.Truthy()) + assert_true(Tests.Truthy() == Tests.truthy) + assert_true(Tests.list is Tests.List()) + assert_true(Tests.List() is Tests.list) + assert_equal(2, Tests.four >> 1) + assert_equal(16, 1 << Tests.four) + assert_equal(8, Tests.four + Tests.Four()) + assert_equal(8, Tests.Four() + Tests.four) + assert_equal('hellohello', Tests.hello .. Tests.Hello()) + assert_equal('hellohello', Tests.Hello() .. Tests.hello) + enddef + + var t = Tests.new() + t.TestOps() + TestOps2() + + assert_true(Tests.truthy == Tests.Truthy()) + assert_true(Tests.Truthy() == Tests.truthy) + assert_true(Tests.list is Tests.List()) + assert_true(Tests.List() is Tests.list) + assert_equal(2, Tests.four >> 1) + assert_equal(16, 1 << Tests.four) + assert_equal(8, Tests.four + Tests.Four()) + assert_equal(8, Tests.Four() + Tests.four) + assert_equal('hellohello', Tests.hello .. Tests.Hello()) + assert_equal('hellohello', Tests.Hello() .. Tests.hello) + END + v9.CheckSourceSuccess(lines) +enddef + " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker