0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.0013: not using a typedef for condstack

Problem:    Not using a typedef for condstack.
Solution:   Add a typedef.
This commit is contained in:
Bram Moolenaar
2019-12-16 17:10:33 +01:00
parent 559b9c68fe
commit ddef129160
7 changed files with 52 additions and 51 deletions

View File

@@ -1841,7 +1841,7 @@ struct exarg
char_u *(*getline)(int, void *, int, int);
void *cookie; // argument for getline()
#ifdef FEAT_EVAL
struct condstack *cstack; // condition stack for ":if" etc.
cstack_T *cstack; // condition stack for ":if" etc.
#endif
long verbose_save; // saved value of p_verbose
int save_msg_silent; // saved value of msg_silent

View File

@@ -20,7 +20,7 @@ static int ex_pressedreturn = FALSE;
#endif
#ifdef FEAT_EVAL
static char_u *do_one_cmd(char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int, int), void *cookie);
static char_u *do_one_cmd(char_u **, int, cstack_T *, char_u *(*fgetline)(int, void *, int, int), void *cookie);
#else
static char_u *do_one_cmd(char_u **, int, char_u *(*fgetline)(int, void *, int, int), void *cookie);
static int if_level = 0; // depth in :if
@@ -623,7 +623,7 @@ do_cmdline(
int did_inc = FALSE; // incremented RedrawingDisabled
int retval = OK;
#ifdef FEAT_EVAL
struct condstack cstack; // conditional stack
cstack_T cstack; // conditional stack
garray_T lines_ga; // keep lines for ":while"/":for"
int current_line = 0; // active line in lines_ga
char_u *fname = NULL; // function or script name
@@ -671,7 +671,7 @@ do_cmdline(
#ifdef FEAT_EVAL
// When converting to an exception, we do not include the command name
// since this is not an error of the specific command.
do_errthrow((struct condstack *)NULL, (char_u *)NULL);
do_errthrow((cstack_T *)NULL, (char_u *)NULL);
msg_list = saved_msg_list;
#endif
return FAIL;
@@ -1631,7 +1631,7 @@ do_one_cmd(
char_u **cmdlinep,
int sourcing,
#ifdef FEAT_EVAL
struct condstack *cstack,
cstack_T *cstack,
#endif
char_u *(*fgetline)(int, void *, int, int),
void *cookie) // argument for fgetline()

View File

@@ -16,7 +16,7 @@
#if defined(FEAT_EVAL) || defined(PROTO)
static int throw_exception(void *, except_type_T, char_u *);
static char *get_end_emsg(struct condstack *cstack);
static char *get_end_emsg(cstack_T *cstack);
/*
* Exception handling terms:
@@ -330,7 +330,7 @@ free_global_msglist(void)
* has returned (see do_one_cmd()).
*/
void
do_errthrow(struct condstack *cstack, char_u *cmdname)
do_errthrow(cstack_T *cstack, char_u *cmdname)
{
/*
* Ensure that all commands in nested function calls and sourced files
@@ -365,7 +365,7 @@ do_errthrow(struct condstack *cstack, char_u *cmdname)
* FALSE otherwise.
*/
int
do_intthrow(struct condstack *cstack)
do_intthrow(cstack_T *cstack)
{
/*
* If no interrupt occurred or no try conditional is active and no exception
@@ -892,7 +892,7 @@ ex_if(exarg_T *eap)
int error;
int skip;
int result;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_idx == CSTACK_LEN - 1)
eap->errmsg = N_("E579: :if nesting too deep");
@@ -960,7 +960,7 @@ ex_else(exarg_T *eap)
int error;
int skip;
int result;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
/*
* Don't do something after an error, interrupt, or throw, or when there is
@@ -1051,7 +1051,7 @@ ex_while(exarg_T *eap)
int error;
int skip;
int result;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_idx == CSTACK_LEN - 1)
eap->errmsg = N_("E585: :while/:for nesting too deep");
@@ -1148,7 +1148,7 @@ ex_while(exarg_T *eap)
ex_continue(exarg_T *eap)
{
int idx;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_looplevel <= 0 || cstack->cs_idx < 0)
eap->errmsg = N_("E586: :continue without :while or :for");
@@ -1186,7 +1186,7 @@ ex_continue(exarg_T *eap)
ex_break(exarg_T *eap)
{
int idx;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_looplevel <= 0 || cstack->cs_idx < 0)
eap->errmsg = N_("E587: :break without :while or :for");
@@ -1211,7 +1211,7 @@ ex_break(exarg_T *eap)
void
ex_endwhile(exarg_T *eap)
{
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
int idx;
char *err;
int csf;
@@ -1325,7 +1325,7 @@ ex_throw(exarg_T *eap)
* used for rethrowing an uncaught exception.
*/
void
do_throw(struct condstack *cstack)
do_throw(cstack_T *cstack)
{
int idx;
int inactivate_try = FALSE;
@@ -1409,7 +1409,7 @@ do_throw(struct condstack *cstack)
ex_try(exarg_T *eap)
{
int skip;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_idx == CSTACK_LEN - 1)
eap->errmsg = N_("E601: :try nesting too deep");
@@ -1486,7 +1486,7 @@ ex_catch(exarg_T *eap)
char_u *save_cpo;
regmatch_T regmatch;
int prev_got_int;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
char_u *pat;
if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
@@ -1644,7 +1644,7 @@ ex_finally(exarg_T *eap)
int idx;
int skip = FALSE;
int pending = CSTP_NONE;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
eap->errmsg = N_("E606: :finally without :try");
@@ -1773,7 +1773,7 @@ ex_endtry(exarg_T *eap)
int rethrow = FALSE;
int pending = CSTP_NONE;
void *rettv = NULL;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
eap->errmsg = N_("E602: :endtry without :try");
@@ -2113,7 +2113,7 @@ leave_cleanup(cleanup_T *csp)
*/
int
cleanup_conditionals(
struct condstack *cstack,
cstack_T *cstack,
int searched_cond,
int inclusive)
{
@@ -2235,7 +2235,7 @@ cleanup_conditionals(
* Return an appropriate error message for a missing endwhile/endfor/endif.
*/
static char *
get_end_emsg(struct condstack *cstack)
get_end_emsg(cstack_T *cstack)
{
if (cstack->cs_flags[cstack->cs_idx] & CSF_WHILE)
return e_endwhile;
@@ -2254,7 +2254,7 @@ get_end_emsg(struct condstack *cstack)
*/
void
rewind_conditionals(
struct condstack *cstack,
cstack_T *cstack,
int idx,
int cond_type,
int *cond_level)

View File

@@ -5,8 +5,8 @@ int should_abort(int retcode);
int aborted_in_try(void);
int cause_errthrow(char_u *mesg, int severe, int *ignore);
void free_global_msglist(void);
void do_errthrow(struct condstack *cstack, char_u *cmdname);
int do_intthrow(struct condstack *cstack);
void do_errthrow(cstack_T *cstack, char_u *cmdname);
int do_intthrow(cstack_T *cstack);
char *get_exception_string(void *value, except_type_T type, char_u *cmdname, int *should_free);
void discard_current_exception(void);
void report_make_pending(int pending, void *value);
@@ -19,15 +19,15 @@ void ex_continue(exarg_T *eap);
void ex_break(exarg_T *eap);
void ex_endwhile(exarg_T *eap);
void ex_throw(exarg_T *eap);
void do_throw(struct condstack *cstack);
void do_throw(cstack_T *cstack);
void ex_try(exarg_T *eap);
void ex_catch(exarg_T *eap);
void ex_finally(exarg_T *eap);
void ex_endtry(exarg_T *eap);
void enter_cleanup(cleanup_T *csp);
void leave_cleanup(cleanup_T *csp);
int cleanup_conditionals(struct condstack *cstack, int searched_cond, int inclusive);
void rewind_conditionals(struct condstack *cstack, int idx, int cond_type, int *cond_level);
int cleanup_conditionals(cstack_T *cstack, int searched_cond, int inclusive);
void rewind_conditionals(cstack_T *cstack, int idx, int cond_type, int *cond_level);
void ex_endfunction(exarg_T *eap);
int has_loop_cmd(char_u *p);
/* vim: set ft=c : */

View File

@@ -863,8 +863,7 @@ struct eslist_elem
*/
#define CSTACK_LEN 50
struct condstack
{
typedef struct {
short cs_flags[CSTACK_LEN]; // CSF_ flags
char cs_pending[CSTACK_LEN]; // CSTP_: what's pending in ":finally"
union {
@@ -878,7 +877,7 @@ struct condstack
int cs_trylevel; // nr of nested ":try"s
eslist_T *cs_emsg_silent_list; // saved values of "emsg_silent"
char cs_lflags; // loop flags: CSL_ flags
};
} cstack_T;
# define cs_rettv cs_pend.csp_rv
# define cs_exception cs_pend.csp_ex
@@ -912,7 +911,7 @@ struct condstack
# define CSTP_FINISH 32 // ":finish" is pending
/*
* Flags for the cs_lflags item in struct condstack.
* Flags for the cs_lflags item in cstack_T.
*/
# define CSL_HAD_LOOP 1 // just found ":while" or ":for"
# define CSL_HAD_ENDLOOP 2 // just found ":endwhile" or ":endfor"

View File

@@ -3234,7 +3234,7 @@ do_return(
void *rettv)
{
int idx;
struct condstack *cstack = eap->cstack;
cstack_T *cstack = eap->cstack;
if (reanimate)
// Undo the return.

View File

@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
13,
/**/
12,
/**/