patch 8.2.1308: Vim9: accidentally using "x" causes Vim to exit

Problem:    Vim9: accidentally using "x" causes Vim to exit.
Solution:   Disallow using ":x" or "xit" in Vim9 script. (closes #6399)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index e8e38aa..895912f 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3176,6 +3176,9 @@
     int		vcol;
     int		empty = (curbuf->b_ml.ml_flags & ML_EMPTY);
 
+    if (not_in_vim9(eap) == FAIL)
+	return;
+
     // the ! flag toggles autoindent
     if (eap->forceit)
 	curbuf->b_p_ai = !curbuf->b_p_ai;
@@ -3317,6 +3320,9 @@
 {
     linenr_T	lnum;
 
+    if (not_in_vim9(eap) == FAIL)
+	return;
+
     if (eap->line2 >= eap->line1
 	    && u_save(eap->line1 - 1, eap->line2 + 1) == FAIL)
 	return;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 987e92d..fe65410 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5686,6 +5686,8 @@
     static void
 ex_exit(exarg_T *eap)
 {
+    if (not_in_vim9(eap) == FAIL)
+	return;
 #ifdef FEAT_CMDWIN
     if (cmdwin_type != 0)
     {
diff --git a/src/proto/vim9script.pro b/src/proto/vim9script.pro
index 6a32abd..f8b12ee 100644
--- a/src/proto/vim9script.pro
+++ b/src/proto/vim9script.pro
@@ -1,6 +1,7 @@
 /* vim9script.c */
 int in_vim9script(void);
 void ex_vim9script(exarg_T *eap);
+int not_in_vim9(exarg_T *eap);
 void ex_export(exarg_T *eap);
 void free_imports(int sid);
 void ex_import(exarg_T *eap);
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index ac76e8d..379245f 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1515,6 +1515,21 @@
   assert_equal([2, 99, 3, 4, 5], l)
 enddef
 
+def Test_no_insert_xit()
+  call CheckDefExecFailure(['x = 1'], 'E1100:')
+  call CheckDefExecFailure(['a = 1'], 'E1100:')
+  call CheckDefExecFailure(['i = 1'], 'E1100:')
+  call CheckDefExecFailure(['c = 1'], 'E1100:')
+
+  CheckScriptFailure(['vim9script', 'x = 1'], 'E1100:')
+  CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
+  CheckScriptFailure(['vim9script', 'a'], 'E1100:')
+  CheckScriptFailure(['vim9script', 'i = 1'], 'E488:')
+  CheckScriptFailure(['vim9script', 'i'], 'E1100:')
+  CheckScriptFailure(['vim9script', 'c = 1'], 'E488:')
+  CheckScriptFailure(['vim9script', 'c'], 'E1100:')
+enddef
+
 def IfElse(what: number): string
   let res = ''
   if what == 1
diff --git a/src/version.c b/src/version.c
index 78aafb8..710c570 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1308,
+/**/
     1307,
 /**/
     1306,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 1ed3211..cbb9231 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7409,6 +7409,13 @@
 
 	    // TODO: other commands with an expression argument
 
+	    case CMD_append:
+	    case CMD_change:
+	    case CMD_insert:
+	    case CMD_xit:
+		    not_in_vim9(&ea);
+		    goto erret;
+
 	    case CMD_SIZE:
 		    semsg(_("E476: Invalid command: %s"), ea.cmd);
 		    goto erret;
diff --git a/src/vim9script.c b/src/vim9script.c
index 784283e..7d783ea 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -59,12 +59,29 @@
 }
 
 /*
+ * When in Vim9 script give an error and return FAIL.
+ */
+    int
+not_in_vim9(exarg_T *eap)
+{
+    switch (eap->cmdidx)
+    {
+	case CMD_insert:
+	case CMD_append:
+	case CMD_change:
+	case CMD_xit:
+	    semsg(_("E1100: Missing :let: %s"), eap->cmd);
+	    return FAIL;
+	default: break;
+    }
+    return OK;
+}
+
+/*
  * ":export let Name: type"
  * ":export const Name: type"
  * ":export def Name(..."
  * ":export class Name ..."
- *
- * ":export {Name, ...}"
  */
     void
 ex_export(exarg_T *eap)