comparison src/vim9compile.c @ 30065:6cf788ab844c v9.0.0370

patch 9.0.0370: cleaning up afterwards can make a function messy Commit: https://github.com/vim/vim/commit/1d84f7608f1e41dad03b8cc7925895437775f7c0 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 3 21:35:53 2022 +0100 patch 9.0.0370: cleaning up afterwards can make a function messy Problem: Cleaning up afterwards can make a function messy. Solution: Add the :defer command.
author Bram Moolenaar <Bram@vim.org>
date Sat, 03 Sep 2022 22:45:03 +0200
parents f5cbf8a4043d
children c0f0118b6790
comparison
equal deleted inserted replaced
30064:a8f1fbaa43c8 30065:6cf788ab844c
2371 break; 2371 break;
2372 case VAR_BLOB: 2372 case VAR_BLOB:
2373 r = generate_PUSHBLOB(cctx, blob_alloc()); 2373 r = generate_PUSHBLOB(cctx, blob_alloc());
2374 break; 2374 break;
2375 case VAR_FUNC: 2375 case VAR_FUNC:
2376 r = generate_PUSHFUNC(cctx, NULL, &t_func_void); 2376 r = generate_PUSHFUNC(cctx, NULL, &t_func_void, TRUE);
2377 break; 2377 break;
2378 case VAR_LIST: 2378 case VAR_LIST:
2379 r = generate_NEWLIST(cctx, 0, FALSE); 2379 r = generate_NEWLIST(cctx, 0, FALSE);
2380 break; 2380 break;
2381 case VAR_DICT: 2381 case VAR_DICT:
2746 } 2746 }
2747 if (instr_dest != NULL) 2747 if (instr_dest != NULL)
2748 // Was compiled in this mode before: Free old instructions. 2748 // Was compiled in this mode before: Free old instructions.
2749 delete_def_function_contents(dfunc, FALSE); 2749 delete_def_function_contents(dfunc, FALSE);
2750 ga_clear_strings(&dfunc->df_var_names); 2750 ga_clear_strings(&dfunc->df_var_names);
2751 dfunc->df_defer_var_idx = 0;
2751 } 2752 }
2752 else 2753 else
2753 { 2754 {
2754 if (add_def_function(ufunc) == FAIL) 2755 if (add_def_function(ufunc) == FAIL)
2755 return FAIL; 2756 return FAIL;
3247 3248
3248 case CMD_eval: 3249 case CMD_eval:
3249 line = compile_eval(p, &cctx); 3250 line = compile_eval(p, &cctx);
3250 break; 3251 break;
3251 3252
3253 case CMD_defer:
3254 line = compile_defer(p, &cctx);
3255 break;
3256
3252 case CMD_echo: 3257 case CMD_echo:
3253 case CMD_echon: 3258 case CMD_echon:
3254 case CMD_echoconsole: 3259 case CMD_echoconsole:
3255 case CMD_echoerr: 3260 case CMD_echoerr:
3256 case CMD_echomsg: 3261 case CMD_echomsg: