diff --git a/src/popupwin.c b/src/popupwin.c
index 46e5483..0cff7f6 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -40,11 +40,11 @@
 // hit-enter prompt.
 static int    start_message_win_timer = FALSE;
 
-static int popup_on_cmdline = FALSE;
-
 static void may_start_message_win_timer(win_T *wp);
 #endif
 
+static int popup_on_cmdline = FALSE;
+
 static void popup_adjust_position(win_T *wp);
 
 /*
@@ -4587,15 +4587,6 @@
 }
 
 /*
- * Returns TRUE if a popup extends into the cmdline area.
- */
-    int
-popup_overlaps_cmdline(void)
-{
-    return popup_on_cmdline;
-}
-
-/*
  * Close any info popup.
  */
     void
@@ -4608,6 +4599,15 @@
 }
 #endif
 
+/*
+ * Returns TRUE if a popup extends into the cmdline area.
+ */
+    int
+popup_overlaps_cmdline(void)
+{
+    return popup_on_cmdline;
+}
+
 #if defined(HAS_MESSAGE_WINDOW) || defined(PROTO)
 
 /*
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index f8e1306..22f8bab 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -1759,6 +1759,7 @@
 enddef
 
 def Test_get()
+  CheckFeature quickfix
   v9.CheckSourceDefAndScriptFailure(['get("a", 1)'], ['E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1531: Argument of get() must be a List, Tuple, Dictionary or Blob'])
   [3, 5, 2]->get(1)->assert_equal(5)
   [3, 5, 2]->get(3)->assert_equal(0)
@@ -1980,11 +1981,13 @@
 enddef
 
 def Test_getloclist()
+  CheckFeature quickfix
   v9.CheckSourceDefAndScriptFailure(['getloclist("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
   v9.CheckSourceDefAndScriptFailure(['getloclist(1, [])'], ['E1013: Argument 2: type mismatch, expected dict<any> but got list<any>', 'E1206: Dictionary required for argument 2'])
 enddef
 
 def Test_getloclist_return_type()
+  CheckFeature quickfix
   var l = getloclist(1)
   l->assert_equal([])
 
@@ -2012,11 +2015,13 @@
 enddef
 
 def Test_getqflist()
+  CheckFeature quickfix
   v9.CheckSourceDefAndScriptFailure(['getqflist([])'], ['E1013: Argument 1: type mismatch, expected dict<any> but got list<any>', 'E1206: Dictionary required for argument 1'])
   call assert_equal({}, getqflist({}))
 enddef
 
 def Test_getqflist_return_type()
+  CheckFeature quickfix
   var l = getqflist()
   l->assert_equal([])
 
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 26a3f09..d76e3bd 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -2108,12 +2108,14 @@
 
 " Test for the 'previewpopup' option
 def Test_previewpopup()
+  CheckFeature quickfix
   set previewpopup=height:10,width:60
   pedit Xppfile
   s:check_previewpopup('Xppfile')
 enddef
 
 def Test_previewpopup_pbuffer()
+  CheckFeature quickfix
   set previewpopup=height:10,width:60
   edit Xppfile
   pbuffer
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 4877933..e98ab75 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -243,6 +243,7 @@
 enddef
 
 def Test_disassemble_cexpr()
+  CheckFeature quickfix
   var res = execute('disass s:Cexpr')
   assert_match('<SNR>\d*_Cexpr.*' ..
         ' var errors = "list of errors"\_s*' ..
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 5734731..e8882bd 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -3292,6 +3292,7 @@
 enddef
 
 def Test_expr9_option()
+  CheckFeature quickfix
   var lines =<< trim END
       # option
       set ts=11
@@ -3639,6 +3640,7 @@
 enddef
 
 def Test_expr9_method_call()
+  CheckFeature quickfix
   var lines =<< trim END
       new
       setline(1, ['first', 'last'])
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 4e31f34..fbd128a 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
Binary files differ
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 8376a93..1c8136a 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -657,6 +657,7 @@
 enddef
 
 def Test_import_in_filetype()
+  CheckFeature quickfix
   # check that :import works when the buffer is locked
   mkdir('ftplugin', 'pR')
   var export_lines =<< trim END
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index b29f3cd..d9013dd 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1226,6 +1226,7 @@
 enddef
 
 def Test_cnext_works_in_catch()
+  CheckFeature quickfix
   var lines =<< trim END
       vim9script
       au BufEnter * eval 1 + 2
@@ -1541,6 +1542,7 @@
 enddef
 
 def Test_cexpr_vimscript()
+  CheckFeature quickfix
   # only checks line continuation
   set errorformat=File\ %f\ line\ %l
   var lines =<< trim END
@@ -3991,6 +3993,7 @@
 endfunc
 
 def Test_vim9_copen()
+  CheckFeature quickfix
   # this was giving an error for setting w:quickfix_title
   copen
   quit
diff --git a/src/version.c b/src/version.c
index e0d734c..9569a09 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1248,
+/**/
     1247,
 /**/
     1246,
