patch 8.2.0502: Vim9: some code is not tested

Problem:    Vim9: some code is not tested.
Solution:   Add more tests.  Fix uncovered problems.
diff --git a/src/regexp.c b/src/regexp.c
index 4e21d44..b4fb595 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -537,16 +537,30 @@
  * Stop at end of "startp" or where "dirc" is found ('/', '?', etc).
  * Take care of characters with a backslash in front of it.
  * Skip strings inside [ and ].
- * When "newp" is not NULL and "dirc" is '?', make an allocated copy of the
- * expression and change "\?" to "?".  If "*newp" is not NULL the expression
- * is changed in-place.
  */
     char_u *
 skip_regexp(
     char_u	*startp,
     int		dirc,
+    int		magic)
+{
+    return skip_regexp_ex(startp, dirc, magic, NULL, NULL);
+}
+
+/*
+ * skip_regexp() with extra arguments:
+ * When "newp" is not NULL and "dirc" is '?', make an allocated copy of the
+ * expression and change "\?" to "?".  If "*newp" is not NULL the expression
+ * is changed in-place.
+ * If a "\?" is changed to "?" then "dropped" is incremented, unless NULL.
+ */
+    char_u *
+skip_regexp_ex(
+    char_u	*startp,
+    int		dirc,
     int		magic,
-    char_u	**newp)
+    char_u	**newp,
+    int		*dropped)
 {
     int		mymagic;
     char_u	*p = startp;
@@ -579,6 +593,8 @@
 		    if (*newp != NULL)
 			p = *newp + (p - startp);
 		}
+		if (dropped != NULL)
+		    ++*dropped;
 		if (*newp != NULL)
 		    STRMOVE(p, p + 1);
 		else