patch 8.1.2348: :const cannot be followed by "| endif"
Problem: :const cannot be followed by "| endif".
Solution: Check following command for :const. (closes #5269)
Also fix completion after :const.
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 3f73d3d..7a4979e 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -184,6 +184,7 @@
endif
for cmd in [
\ 'let a = ',
+ \ 'const a = ',
\ 'if',
\ 'elseif',
\ 'while',
diff --git a/src/testdir/test_const.vim b/src/testdir/test_const.vim
index 55e4492..8df34f4 100644
--- a/src/testdir/test_const.vim
+++ b/src/testdir/test_const.vim
@@ -197,6 +197,12 @@
call assert_fails('const [i2, f2, s2] = [1, 1.1, "vim"]', 'E995:')
endfunc
+func Test_const_with_condition()
+ const x = 0
+ if 0 | const x = 1 | endif
+ call assert_equal(0, x)
+endfunc
+
func Test_const_with_index_access()
let l = [1, 2, 3]
call assert_fails('const l[0] = 4', 'E996:')
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index 4d9aae9..055425d 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -24,6 +24,10 @@
let out = execute('let a {0 == 1 ? "a" : "b"}')
let s = "\na #1\nb #2"
call assert_equal(s, out)
+
+ let x = 0
+ if 0 | let x = 1 | endif
+ call assert_equal(0, x)
endfunc
func s:set_arg1(a) abort