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/cmdexpand.c b/src/cmdexpand.c
index 7381b0e..1a7f9f2 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1508,6 +1508,7 @@
 	    break;
 #endif
 #ifdef FEAT_EVAL
+	case CMD_const:
 	case CMD_let:
 	case CMD_if:
 	case CMD_elseif:
diff --git a/src/eval.c b/src/eval.c
index ace1e01..b65f29e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1521,7 +1521,7 @@
     int		c;
     char_u	*p;
 
-    if (cmdidx == CMD_let)
+    if (cmdidx == CMD_let || cmdidx == CMD_const)
     {
 	xp->xp_context = EXPAND_USER_VARS;
 	if (vim_strpbrk(arg, (char_u *)"\"'+-*/%.=!?~|&$([<>,#") == NULL)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 385cf3b..576a756 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2359,6 +2359,7 @@
 	    case CMD_browse:
 	    case CMD_call:
 	    case CMD_confirm:
+	    case CMD_const:
 	    case CMD_delfunction:
 	    case CMD_djump:
 	    case CMD_dlist:
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
diff --git a/src/version.c b/src/version.c
index 981f92f..70df145 100644
--- a/src/version.c
+++ b/src/version.c
@@ -738,6 +738,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2348,
+/**/
     2347,
 /**/
     2346,