patch 8.2.4515: old subsitute syntax is still supported

Problem:    Old subsitute syntax is still supported.
Solution:   Disallow using backslash after ":s" in Vim9 script.
diff --git a/src/errors.h b/src/errors.h
index e302ecc..6f275fa 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -3246,4 +3246,6 @@
 	INIT(= N_("E1268: Cannot use s: in Vim9 script: %s"));
 EXTERN char e_cannot_create_vim9_script_variable_in_function_str[]
 	INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s"));
+EXTERN char e_cannot_use_s_backslash_in_vim9_script[]
+	INIT(= N_("E1270: Cannot use :s\\/sub/ in Vim9 script"));
 #endif
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index d926df5..13cde84 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3737,6 +3737,11 @@
 	 */
 	if (*cmd == '\\')
 	{
+	    if (in_vim9script())
+	    {
+		emsg(_(e_cannot_use_s_backslash_in_vim9_script));
+		return;
+	    }
 	    ++cmd;
 	    if (vim_strchr((char_u *)"/?&", *cmd) == NULL)
 	    {
diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim
index 35b6b8a..2622749 100644
--- a/src/testdir/test_substitute.vim
+++ b/src/testdir/test_substitute.vim
@@ -811,6 +811,10 @@
   s\&green&
   call assert_equal('amber green yellow white green', getline(1))
   close!
+
+  call assert_fails('vim9cmd s\/white/', 'E1270:')
+  call assert_fails('vim9cmd s\?white?', 'E1270:')
+  call assert_fails('vim9cmd s\&white&', 'E1270:')
 endfunc
 
 " Test for substitute with the new text longer than the original text
diff --git a/src/version.c b/src/version.c
index 238e627..4bbe08c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4515,
+/**/
     4514,
 /**/
     4513,