comparison src/testdir/test_vim9_script.vim @ 25650:6ed39aa92cb9 v8.2.3361

patch 8.2.3361: Vim9: crash with nested :while Commit: https://github.com/vim/vim/commit/d895b1d918f7d56dd9dd564be4820082ba6492e9 Author: rbtnn <naru123456789@gmail.com> Date: Fri Aug 20 20:54:25 2021 +0200 patch 8.2.3361: Vim9: crash with nested :while Problem: Vim9: crash with nested :while. Solution: Handle skipping better. (Naruhiko Nishino, closes https://github.com/vim/vim/issues/8778)
author Bram Moolenaar <Bram@vim.org>
date Fri, 20 Aug 2021 21:00:06 +0200
parents 27cb2e79ccde
children ef38fc02faaa
comparison
equal deleted inserted replaced
25649:cc4bdae84522 25650:6ed39aa92cb9
2854 assert_equal(3, cleanup) 2854 assert_equal(3, cleanup)
2855 END 2855 END
2856 CheckDefAndScriptSuccess(lines) 2856 CheckDefAndScriptSuccess(lines)
2857 enddef 2857 enddef
2858 2858
2859 def Test_while_skipped_block()
2860 # test skipped blocks at outside of function
2861 var lines =<< trim END
2862 var result = []
2863 var n = 0
2864 if true
2865 n = 1
2866 while n < 3
2867 result += [n]
2868 n += 1
2869 endwhile
2870 else
2871 n = 3
2872 while n < 5
2873 result += [n]
2874 n += 1
2875 endwhile
2876 endif
2877 assert_equal([1, 2], result)
2878
2879 result = []
2880 if false
2881 n = 1
2882 while n < 3
2883 result += [n]
2884 n += 1
2885 endwhile
2886 else
2887 n = 3
2888 while n < 5
2889 result += [n]
2890 n += 1
2891 endwhile
2892 endif
2893 assert_equal([3, 4], result)
2894 END
2895 CheckDefAndScriptSuccess(lines)
2896
2897 # test skipped blocks at inside of function
2898 lines =<< trim END
2899 def DefTrue()
2900 var result = []
2901 var n = 0
2902 if true
2903 n = 1
2904 while n < 3
2905 result += [n]
2906 n += 1
2907 endwhile
2908 else
2909 n = 3
2910 while n < 5
2911 result += [n]
2912 n += 1
2913 endwhile
2914 endif
2915 assert_equal([1, 2], result)
2916 enddef
2917 DefTrue()
2918
2919 def DefFalse()
2920 var result = []
2921 var n = 0
2922 if false
2923 n = 1
2924 while n < 3
2925 result += [n]
2926 n += 1
2927 endwhile
2928 else
2929 n = 3
2930 while n < 5
2931 result += [n]
2932 n += 1
2933 endwhile
2934 endif
2935 assert_equal([3, 4], result)
2936 enddef
2937 DefFalse()
2938 END
2939 CheckDefAndScriptSuccess(lines)
2940 enddef
2941
2859 def Test_while_loop() 2942 def Test_while_loop()
2860 var result = '' 2943 var result = ''
2861 var cnt = 0 2944 var cnt = 0
2862 while cnt < 555 2945 while cnt < 555
2863 if cnt == 3 2946 if cnt == 3