Mercurial > vim
comparison src/testdir/test_vim9_expr.vim @ 28008:cc7d54a134e4 v8.2.4529
patch 8.2.4529: Vim9: comparing partial with function fails
Commit: https://github.com/vim/vim/commit/ed0c62e7b16b62655824df28cdd6bd75aadbb8fc
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Mar 8 19:43:55 2022 +0000
patch 8.2.4529: Vim9: comparing partial with function fails
Problem: Vim9: comparing partial with function fails.
Solution: Support this comparison. Avoid a crash. (closes https://github.com/vim/vim/issues/9909)
Add more test cases.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 08 Mar 2022 20:45:03 +0100 |
parents | e6e3abc28c7a |
children | 53e2bf6032e5 |
comparison
equal
deleted
inserted
replaced
28007:e11bea0167bb | 28008:cc7d54a134e4 |
---|---|
715 def Test_expr4_compare_null() | 715 def Test_expr4_compare_null() |
716 g:null_dict = test_null_dict() | 716 g:null_dict = test_null_dict() |
717 g:not_null_list = [] | 717 g:not_null_list = [] |
718 var lines =<< trim END | 718 var lines =<< trim END |
719 assert_true(test_null_blob() == v:null) | 719 assert_true(test_null_blob() == v:null) |
720 assert_true(null_blob == null) | |
720 assert_true(v:null == test_null_blob()) | 721 assert_true(v:null == test_null_blob()) |
722 assert_true(null == null_blob) | |
721 assert_false(test_null_blob() != v:null) | 723 assert_false(test_null_blob() != v:null) |
724 assert_false(null_blob != null) | |
722 assert_false(v:null != test_null_blob()) | 725 assert_false(v:null != test_null_blob()) |
726 assert_false(null != null_blob) | |
723 | 727 |
724 if has('channel') | 728 if has('channel') |
725 assert_true(test_null_channel() == v:null) | 729 assert_true(test_null_channel() == v:null) |
730 assert_true(null_channel == null) | |
726 assert_true(v:null == test_null_channel()) | 731 assert_true(v:null == test_null_channel()) |
732 assert_true(null == null_channel) | |
727 assert_false(test_null_channel() != v:null) | 733 assert_false(test_null_channel() != v:null) |
734 assert_false(null_channel != null) | |
728 assert_false(v:null != test_null_channel()) | 735 assert_false(v:null != test_null_channel()) |
736 assert_false(null != null_channel) | |
729 endif | 737 endif |
730 | 738 |
731 assert_true(test_null_dict() == v:null) | 739 assert_true(test_null_dict() == v:null) |
740 assert_true(null_dict == null) | |
732 assert_true(v:null == test_null_dict()) | 741 assert_true(v:null == test_null_dict()) |
742 assert_true(null == null_dict) | |
733 assert_false(test_null_dict() != v:null) | 743 assert_false(test_null_dict() != v:null) |
744 assert_false(null_dict != null) | |
734 assert_false(v:null != test_null_dict()) | 745 assert_false(v:null != test_null_dict()) |
746 assert_false(null != null_dict) | |
735 | 747 |
736 assert_true(g:null_dict == v:null) | 748 assert_true(g:null_dict == v:null) |
737 assert_true(v:null == g:null_dict) | 749 assert_true(v:null == g:null_dict) |
738 assert_false(g:null_dict != v:null) | 750 assert_false(g:null_dict != v:null) |
739 assert_false(v:null != g:null_dict) | 751 assert_false(v:null != g:null_dict) |
740 | 752 |
741 assert_true(test_null_function() == v:null) | 753 assert_true(test_null_function() == v:null) |
754 assert_true(null_function == null) | |
742 assert_true(v:null == test_null_function()) | 755 assert_true(v:null == test_null_function()) |
756 assert_true(null == null_function) | |
743 assert_false(test_null_function() != v:null) | 757 assert_false(test_null_function() != v:null) |
758 assert_false(null_function != null) | |
744 assert_false(v:null != test_null_function()) | 759 assert_false(v:null != test_null_function()) |
760 assert_false(null != null_function) | |
745 | 761 |
746 if has('job') | 762 if has('job') |
747 assert_true(test_null_job() == v:null) | 763 assert_true(test_null_job() == v:null) |
764 assert_true(null_job == null) | |
748 assert_true(v:null == test_null_job()) | 765 assert_true(v:null == test_null_job()) |
766 assert_true(null == null_job) | |
749 assert_false(test_null_job() != v:null) | 767 assert_false(test_null_job() != v:null) |
768 assert_false(null_job != null) | |
750 assert_false(v:null != test_null_job()) | 769 assert_false(v:null != test_null_job()) |
770 assert_false(null != null_job) | |
751 endif | 771 endif |
752 | 772 |
753 assert_true(test_null_list() == v:null) | 773 assert_true(test_null_list() == v:null) |
774 assert_true(null_list == null) | |
754 assert_true(v:null == test_null_list()) | 775 assert_true(v:null == test_null_list()) |
776 assert_true(null == null_list) | |
755 assert_false(test_null_list() != v:null) | 777 assert_false(test_null_list() != v:null) |
778 assert_false(null_list != null) | |
756 assert_false(v:null != test_null_list()) | 779 assert_false(v:null != test_null_list()) |
780 assert_false(null != null_list) | |
757 | 781 |
758 assert_false(g:not_null_list == v:null) | 782 assert_false(g:not_null_list == v:null) |
759 assert_false(v:null == g:not_null_list) | 783 assert_false(v:null == g:not_null_list) |
760 assert_true(g:not_null_list != v:null) | 784 assert_true(g:not_null_list != v:null) |
761 assert_true(v:null != g:not_null_list) | 785 assert_true(v:null != g:not_null_list) |
762 | 786 |
763 assert_true(test_null_partial() == v:null) | 787 assert_true(test_null_partial() == v:null) |
788 assert_true(null_partial == null) | |
764 assert_true(v:null == test_null_partial()) | 789 assert_true(v:null == test_null_partial()) |
790 assert_true(null == null_partial) | |
765 assert_false(test_null_partial() != v:null) | 791 assert_false(test_null_partial() != v:null) |
792 assert_false(null_partial != null) | |
766 assert_false(v:null != test_null_partial()) | 793 assert_false(v:null != test_null_partial()) |
794 assert_false(null != null_partial) | |
767 | 795 |
768 assert_true(test_null_string() == v:null) | 796 assert_true(test_null_string() == v:null) |
797 assert_true(null_string == null) | |
769 assert_true(v:null == test_null_string()) | 798 assert_true(v:null == test_null_string()) |
799 assert_true(null == null_string) | |
770 assert_false(test_null_string() != v:null) | 800 assert_false(test_null_string() != v:null) |
801 assert_false(null_string != null) | |
771 assert_false(v:null != test_null_string()) | 802 assert_false(v:null != test_null_string()) |
803 assert_false(null != null_string) | |
772 END | 804 END |
773 v9.CheckDefAndScriptSuccess(lines) | 805 v9.CheckDefAndScriptSuccess(lines) |
774 unlet g:null_dict | 806 unlet g:null_dict |
775 unlet g:not_null_list | 807 unlet g:not_null_list |
808 | |
809 lines =<< trim END | |
810 var d: dict<func> = {f: null_function} | |
811 assert_equal(null_function, d.f) | |
812 END | |
813 v9.CheckDefAndScriptSuccess(lines) | |
776 | 814 |
777 v9.CheckDefAndScriptFailure(['echo 123 == v:null'], 'E1072: Cannot compare number with special') | 815 v9.CheckDefAndScriptFailure(['echo 123 == v:null'], 'E1072: Cannot compare number with special') |
778 v9.CheckDefAndScriptFailure(['echo v:null == 123'], 'E1072: Cannot compare special with number') | 816 v9.CheckDefAndScriptFailure(['echo v:null == 123'], 'E1072: Cannot compare special with number') |
779 v9.CheckDefAndScriptFailure(['echo 123 != v:null'], 'E1072: Cannot compare number with special') | 817 v9.CheckDefAndScriptFailure(['echo 123 != v:null'], 'E1072: Cannot compare number with special') |
780 v9.CheckDefAndScriptFailure(['echo v:null != 123'], 'E1072: Cannot compare special with number') | 818 v9.CheckDefAndScriptFailure(['echo v:null != 123'], 'E1072: Cannot compare special with number') |