comparison src/testdir/test_vim9_expr.vim @ 25278:55c85c3a43a0 v8.2.3176

patch 8.2.3176: Vim9: no type error for comparing number with string Commit: https://github.com/vim/vim/commit/0c35752d04f70408a3c560d5b3edbafcaddff302 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 18 14:43:43 2021 +0200 patch 8.2.3176: Vim9: no type error for comparing number with string Problem: Vim9: no type error for comparing number with string. Solution: Add a runtime type check. (closes https://github.com/vim/vim/issues/8571)
author Bram Moolenaar <Bram@vim.org>
date Sun, 18 Jul 2021 14:45:04 +0200
parents 1d6ff96306fc
children ec0421c25be9
comparison
equal deleted inserted replaced
25277:df8e28f6b0e1 25278:55c85c3a43a0
658 658
659 CheckDefExecAndScriptFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2) 659 CheckDefExecAndScriptFailure(['var x: any = "a"', 'echo x == true'], 'E1072: Cannot compare string with bool', 2)
660 CheckDefExecAndScriptFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2) 660 CheckDefExecAndScriptFailure(["var x: any = true", 'echo x == ""'], 'E1072: Cannot compare bool with string', 2)
661 CheckDefExecAndScriptFailure2(["var x: any = 99", 'echo x == true'], 'E1138', 'E1072:', 2) 661 CheckDefExecAndScriptFailure2(["var x: any = 99", 'echo x == true'], 'E1138', 'E1072:', 2)
662 CheckDefExecAndScriptFailure2(["var x: any = 'a'", 'echo x == 99'], 'E1030:', 'E1072:', 2) 662 CheckDefExecAndScriptFailure2(["var x: any = 'a'", 'echo x == 99'], 'E1030:', 'E1072:', 2)
663 663 enddef
664
665 def Test_expr4_wrong_type()
664 for op in ['>', '>=', '<', '<=', '=~', '!~'] 666 for op in ['>', '>=', '<', '<=', '=~', '!~']
665 CheckDefExecAndScriptFailure([ 667 CheckDefExecAndScriptFailure([
666 "var a: any = 'a'", 668 "var a: any = 'a'",
667 'var b: any = true', 669 'var b: any = true',
668 'echo a ' .. op .. ' b'], 'E1072:', 3) 670 'echo a ' .. op .. ' b'], 'E1072:', 3)
669 endfor 671 endfor
672 for op in ['>', '>=', '<', '<=']
673 CheckDefExecAndScriptFailure2([
674 "var n: any = 2",
675 'echo n ' .. op .. ' "3"'], 'E1030:', 'E1072:', 2)
676 endfor
677 for op in ['=~', '!~']
678 CheckDefExecAndScriptFailure([
679 "var n: any = 2",
680 'echo n ' .. op .. ' "3"'], 'E1072:', 2)
681 endfor
682
683 CheckDefAndScriptFailure([
684 'echo v:none == true'], 'E1072:', 1)
685 CheckDefAndScriptFailure([
686 'echo false >= true'], 'E1072:', 1)
687 CheckDefExecAndScriptFailure([
688 "var n: any = v:none",
689 'echo n == true'], 'E1072:', 2)
690 CheckDefExecAndScriptFailure([
691 "var n: any = v:none",
692 'echo n < true'], 'E1072:', 2)
670 enddef 693 enddef
671 694
672 " test != comperator 695 " test != comperator
673 def Test_expr4_notequal() 696 def Test_expr4_notequal()
674 var lines =<< trim END 697 var lines =<< trim END