diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 45e4fb0..2fbccf4 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -206,6 +206,15 @@
   folddoclose edit `=name`
   assert_equal('xxx', bufname())
   bwipe!
+
+  var lines =<< trim END
+      g:val = 'value'
+      def Test()
+        folddoopen echo `=g:val`
+      enddef
+      call Test()
+  END
+  CheckScriptFailure(lines, 'E15: Invalid expression: "`=g:val`"')
 enddef
 
 def Test_hardcopy_wildcards()
diff --git a/src/version.c b/src/version.c
index b26746b..be24950 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3709,
+/**/
     3708,
 /**/
     3707,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 57bbb2b..40dd00f 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -7898,8 +7898,7 @@
 	int error = FALSE;
 	int v;
 
-	// The expression results in a constant.
-	// TODO: how about nesting?
+	// The expression result is a constant.
 	v = tv_get_bool_chk(&ppconst.pp_tv[0], &error);
 	if (error)
 	    return NULL;
@@ -8171,7 +8170,6 @@
 		item_type = vartype->tt_member;
 	    else if (vartype->tt_member->tt_type == VAR_LIST
 			  && vartype->tt_member->tt_member->tt_type != VAR_ANY)
-		// TODO: should get the type for each lhs
 		item_type = vartype->tt_member->tt_member;
 	}
 
@@ -8224,7 +8222,7 @@
 		lhs_type = parse_type(&p, cctx->ctx_type_list, TRUE);
 	    }
 
-	    // TODO: script var not supported?
+	    // Script var is not supported.
 	    if (get_var_dest(name, &dest, CMD_for, &opt_flags,
 					      &vimvaridx, &type, cctx) == FAIL)
 		goto failed;
@@ -8771,21 +8769,21 @@
 #ifdef FEAT_PROFILE
 	if (cctx->ctx_compile_type == CT_PROFILE
 		&& ((isn_T *)instr->ga_data)[this_instr - 1]
-						       .isn_type == ISN_PROF_START)
+						   .isn_type == ISN_PROF_START)
 	{
 	    // jump to the profile start of the "finally"
 	    --this_instr;
 
 	    // jump to the profile end above it
 	    if (this_instr > 0 && ((isn_T *)instr->ga_data)[this_instr - 1]
-							 .isn_type == ISN_PROF_END)
+						     .isn_type == ISN_PROF_END)
 		--this_instr;
 	}
 #endif
 
 	// Fill in the "end" label in jumps at the end of the blocks.
 	compile_fill_jump_to_end(&scope->se_u.se_try.ts_end_label,
-								this_instr, cctx);
+							     this_instr, cctx);
 
 	// If there is no :catch then an exception jumps to :finally.
 	if (isn->isn_arg.try.try_ref->try_catch == 0)
@@ -8800,8 +8798,6 @@
 	}
 	if (generate_instr(cctx, ISN_FINALLY) == NULL)
 	    return NULL;
-
-	// TODO: set index in ts_finally_label jumps
     }
 
     return arg;
@@ -9184,9 +9180,17 @@
 
     if (eap->cmdidx == CMD_folddoopen || eap->cmdidx == CMD_folddoclosed)
     {
-	// TODO: should only expand when appropriate for the command
-	eap->arg = skiptowhite(eap->arg);
-	has_expr = TRUE;
+	exarg_T nea;
+
+	CLEAR_FIELD(nea);
+	nea.cmd = eap->arg;
+	p = find_ex_command(&nea, NULL, lookup_scriptitem, NULL);
+	if (nea.cmdidx <= CMD_SIZE)
+	{
+	    has_expr = excmd_get_argt(nea.cmdidx) & (EX_XFILE | EX_EXPAND);
+	    if (has_expr)
+		eap->arg = skiptowhite(eap->arg);
+	}
     }
 
     if (has_expr && (p = (char_u *)strstr((char *)eap->arg, "`=")) != NULL)
