Mercurial > vim
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: |