Mercurial > vim
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 |