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