diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 0f462e3..8f9ffad 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -400,11 +400,10 @@
 
   # need to execute this with a separate Vim instance to avoid the current
   # context gets garbage collected.
-  writefile(lines, 'Xscript')
+  writefile(lines, 'Xscript', 'D')
   g:RunVim([], [], '-S Xscript')
   assert_equal(['ok'], readfile('Xdidit'))
 
-  delete('Xscript')
   delete('Xdidit')
 enddef
 
@@ -991,13 +990,12 @@
       writefile([getqflist({idx: 0}).idx], 'Xcncresult')
       qall
   END
-  writefile(lines, 'XCatchCnext')
+  writefile(lines, 'XCatchCnext', 'D')
   g:RunVim([], [], '--clean -S XCatchCnext')
   assert_equal(['1'], readfile('Xcncresult'))
 
   delete('Xcncfile1')
   delete('Xcncfile2')
-  delete('XCatchCnext')
   delete('Xcncresult')
 enddef
 
@@ -1015,9 +1013,8 @@
     enddef
     silent! Func()
   END
-  writefile(lines, 'XthrowSilenced')
+  writefile(lines, 'XthrowSilenced', 'D')
   source XthrowSilenced
-  delete('XthrowSilenced')
 enddef
 
 def DeletedFunc(): list<any>
@@ -1473,7 +1470,7 @@
   END
 
   # FuncNo() is defined
-  writefile(first_lines + withno_lines, 'Xreloaded.vim')
+  writefile(first_lines + withno_lines, 'Xreloaded.vim', 'D')
   source Xreloaded.vim
   g:DoCheck(true)
 
@@ -1486,8 +1483,6 @@
   writefile(first_lines + withno_lines, 'Xreloaded.vim')
   source Xreloaded.vim
   g:DoCheck(false)
-
-  delete('Xreloaded.vim')
 enddef
 
 def Test_vim9script_reload_delvar()
@@ -1496,7 +1491,7 @@
     vim9script
     var name = 'string'
   END
-  writefile(lines, 'XreloadVar.vim')
+  writefile(lines, 'XreloadVar.vim', 'D')
   source XreloadVar.vim
 
   # now write the script using the same variable locally - works
@@ -1508,8 +1503,6 @@
   END
   writefile(lines, 'XreloadVar.vim')
   source XreloadVar.vim
-
-  delete('XreloadVar.vim')
 enddef
 
 def Test_func_redefine_error()
@@ -1520,7 +1513,7 @@
         'enddef',
         'Func()',
         ]
-  writefile(lines, 'Xtestscript.vim')
+  writefile(lines, 'Xtestscript.vim', 'D')
 
   for count in range(3)
     try
@@ -1531,8 +1524,6 @@
       assert_match('function <SNR>\d\+_Func, line 1', v:throwpoint)
     endtry
   endfor
-
-  delete('Xtestscript.vim')
 enddef
 
 def Test_func_redefine_fails()
@@ -2035,9 +2026,8 @@
     endfor
     assert_equal(' loop 1 loop 2 loop 3', result)
   END
-  writefile(lines, 'Xvim9for.vim')
+  writefile(lines, 'Xvim9for.vim', 'D')
   source Xvim9for.vim
-  delete('Xvim9for.vim')
 enddef
 
 def Test_for_skipped_block()
@@ -2271,6 +2261,18 @@
   END
   v9.CheckDefAndScriptSuccess(lines)
 
+  # also works when the loop variable is used only once halfway the loops
+  lines =<< trim END
+      var Clo: func
+      for i in range(5)
+        if i == 3
+          Clo = () => i
+        endif
+      endfor
+      assert_equal(4, Clo())
+  END
+  v9.CheckDefAndScriptSuccess(lines)
+
   # using a local variable set to the loop variable in a closure results in the
   # value at that moment
   lines =<< trim END
@@ -3330,12 +3332,11 @@
     finish
     g:res = 'three'
   END
-  writefile(lines, 'Xfinished')
+  writefile(lines, 'Xfinished', 'D')
   source Xfinished
   assert_equal('two', g:res)
 
   unlet g:res
-  delete('Xfinished')
 enddef
 
 def Test_forward_declaration()
@@ -3349,14 +3350,13 @@
     theVal = 'else'
     g:laterVal = GetValue()
   END
-  writefile(lines, 'Xforward')
+  writefile(lines, 'Xforward', 'D')
   source Xforward
   assert_equal('something', g:initVal)
   assert_equal('else', g:laterVal)
 
   unlet g:initVal
   unlet g:laterVal
-  delete('Xforward')
 enddef
 
 def Test_declare_script_var_in_func()
@@ -3408,7 +3408,7 @@
       echo 'local'
     enddef
   END
-  call writefile(vim9lines, 'Xvim9script.vim')
+  call writefile(vim9lines, 'Xvim9script.vim', 'D')
   source Xvim9script.vim
   try
     echo g:var
@@ -3428,8 +3428,6 @@
   catch /E117:/
     " caught
   endtry
-
-  call delete('Xvim9script.vim')
 endfunc
 
 def Test_vim9_copen()
@@ -3459,7 +3457,7 @@
   var save_rtp = &rtp
   var dir = getcwd() .. '/Xruntime'
   &rtp = dir
-  mkdir(dir .. '/autoload', 'p')
+  mkdir(dir .. '/autoload', 'pR')
 
   var lines =<< trim END
       vim9script noclear
@@ -3492,12 +3490,11 @@
   v9.CheckScriptSuccess(lines)
 
   &rtp = save_rtp
-  delete(dir, 'rf')
 enddef
 
 def Test_error_in_autoload_script_foldexpr()
   var save_rtp = &rtp
-  mkdir('Xvim/autoload', 'p')
+  mkdir('Xvim/autoload', 'pR')
   &runtimepath = 'Xvim'
 
   var lines =<< trim END
@@ -3515,8 +3512,6 @@
       redraw
   END
   v9.CheckScriptFailure(lines, 'E684: List index out of range: 0')
-
-  delete('Xvim', 'rf')
 enddef
 
 def Test_invalid_sid()
@@ -3529,16 +3524,14 @@
 enddef
 
 def Test_restoring_cpo()
-  writefile(['vim9script', 'set nocp'], 'Xsourced')
-  writefile(['call writefile(["done"], "Xdone")', 'quit!'], 'Xclose')
+  writefile(['vim9script', 'set nocp'], 'Xsourced', 'D')
+  writefile(['call writefile(["done"], "Xdone")', 'quit!'], 'Xclose', 'D')
   if g:RunVim([], [], '-u NONE +"set cpo+=a" -S Xsourced -S Xclose')
     assert_equal(['done'], readfile('Xdone'))
   endif
-  delete('Xsourced')
-  delete('Xclose')
   delete('Xdone')
 
-  writefile(['vim9script', 'g:cpoval = &cpo'], 'XanotherScript')
+  writefile(['vim9script', 'g:cpoval = &cpo'], 'XanotherScript', 'D')
   set cpo=aABceFsMny>
   edit XanotherScript
   so %
@@ -3551,7 +3544,6 @@
   assert_equal('aABceFsMny>', &cpo)
   assert_equal('aABceFsMny>', g:cpoval)
 
-  delete('XanotherScript')
   set cpo&vim
   unlet g:cpoval
 
@@ -3559,7 +3551,7 @@
     # 'cpo' is not restored in main vimrc
     var save_HOME = $HOME
     $HOME = getcwd() .. '/Xhome'
-    mkdir('Xhome')
+    mkdir('Xhome', 'R')
     var lines =<< trim END
         vim9script
         writefile(['before: ' .. &cpo], 'Xrporesult')
@@ -3571,14 +3563,14 @@
     lines =<< trim END
         call writefile(['later: ' .. &cpo], 'Xrporesult', 'a')
     END
-    writefile(lines, 'Xlegacy')
+    writefile(lines, 'Xlegacy', 'D')
 
     lines =<< trim END
         vim9script
         call writefile(['vim9: ' .. &cpo], 'Xrporesult', 'a')
         qa
     END
-    writefile(lines, 'Xvim9')
+    writefile(lines, 'Xvim9', 'D')
 
     var cmd = g:GetVimCommand() .. " -S Xlegacy -S Xvim9"
     cmd = substitute(cmd, '-u NONE', '', '')
@@ -3591,9 +3583,6 @@
         'vim9: aABceFs'], readfile('Xrporesult'))
 
     $HOME = save_HOME
-    delete('Xhome', 'rf')
-    delete('Xlegacy')
-    delete('Xvim9')
     delete('Xrporesult')
   endif
 enddef
@@ -3611,7 +3600,7 @@
     export def Func()
     enddef
   END
-  mkdir('Xnordir/autoload', 'p')
+  mkdir('Xnordir/autoload', 'pR')
   writefile(lines, 'Xnordir/autoload/script.vim')
 
   lines =<< trim END
@@ -3621,7 +3610,7 @@
       au CmdlineEnter : ++once timer_start(0, (_) => script#Func())
       setline(1, 'some text')
   END
-  writefile(lines, 'XTest_redraw_cpo')
+  writefile(lines, 'XTest_redraw_cpo', 'D')
   var buf = g:RunVimInTerminal('-S XTest_redraw_cpo', {'rows': 6})
   term_sendkeys(buf, "V:")
   g:VerifyScreenDump(buf, 'Test_vim9_no_redraw', {})
@@ -3629,8 +3618,6 @@
   # clean up
   term_sendkeys(buf, "\<Esc>u")
   g:StopVimInTerminal(buf)
-  delete('XTest_redraw_cpo')
-  delete('Xnordir', 'rf')
 enddef
 
 func Test_reject_declaration()
@@ -3731,8 +3718,8 @@
       call writefile(['errors: ' .. string(v:errors)], 'Xdidcmd')
     endfunc
   END
-  writefile([''], 'Xdidcmd')
-  writefile(lines, 'XcallFunc')
+  writefile([''], 'Xdidcmd', 'D')
+  writefile(lines, 'XcallFunc', 'D')
   var buf = g:RunVimInTerminal('-S XcallFunc', {rows: 6})
   # define Afunc() on the command line
   term_sendkeys(buf, ":def Afunc()\<CR>Bfunc()\<CR>enddef\<CR>")
@@ -3740,8 +3727,6 @@
   g:WaitForAssert(() => assert_equal(['errors: []'], readfile('Xdidcmd')))
 
   call g:StopVimInTerminal(buf)
-  delete('XcallFunc')
-  delete('Xdidcmd')
 enddef
 
 def Test_script_var_scope()
@@ -3869,9 +3854,8 @@
         sleep 10m
       endfor
   END
-  writefile(lines, 'Xdef')
+  writefile(lines, 'Xdef', 'D')
   assert_fails('so Xdef', ['E684:', 'E1012:'])
-  delete('Xdef')
 enddef
 
 def InvokeNormal()
@@ -3914,7 +3898,7 @@
         name = arg
       enddef
   END
-  writefile(lines, 'XscriptTwice.vim')
+  writefile(lines, 'XscriptTwice.vim', 'D')
   so XscriptTwice.vim
   assert_equal('thename', g:GetName())
   g:SetName('newname')
@@ -3925,7 +3909,6 @@
 
   delfunc g:GetName
   delfunc g:SetName
-  delete('XscriptTwice.vim')
   unlet g:guard
 enddef
 
@@ -4102,7 +4085,7 @@
       breakadd func Func
       Func()
   END
-  writefile(lines, 'XdebugFunc')
+  writefile(lines, 'XdebugFunc', 'D')
   var buf = g:RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
   g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
 
@@ -4110,7 +4093,6 @@
   g:WaitForAssert(() => assert_match('\[0\]', term_getline(buf, 5)))
 
   g:StopVimInTerminal(buf)
-  delete('XdebugFunc')
 enddef
 
 func Test_debug_running_out_of_lines()
@@ -4138,7 +4120,7 @@
       breakadd func Crash
       Crash()
   END
-  writefile(lines, 'XdebugFunc')
+  writefile(lines, 'XdebugFunc', 'D')
   var buf = g:RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
   g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
 
@@ -4150,7 +4132,6 @@
   g:TermWait(buf)
 
   g:StopVimInTerminal(buf)
-  delete('XdebugFunc')
 enddef
 
 def Test_ambigous_command_error()
@@ -4239,7 +4220,7 @@
         writefile([result], 'Xdidprofile')
       endtry
   END
-  writefile(lines, 'Xprofile.vim')
+  writefile(lines, 'Xprofile.vim', 'D')
   call system(g:GetVimCommand()
         .. ' --clean'
         .. ' -c "so Xprofile.vim"'
@@ -4250,7 +4231,6 @@
   assert_true(filereadable('Xprofile.log'))
   delete('Xdidprofile')
   delete('Xprofile.log')
-  delete('Xprofile.vim')
 enddef
 
 func Test_misplaced_type()
@@ -4323,10 +4303,8 @@
     assert_equal('otherthing', getline(1))
     bwipe!
   END
-  writefile(lines, 'Xvim9lines')
+  writefile(lines, 'Xvim9lines', 'D')
   source Xvim9lines
-
-  delete('Xvim9lines')
 enddef
 
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/version.c b/src/version.c
index 291fc05..ae74081 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    475,
+/**/
     474,
 /**/
     473,
