Problem: Not using a typedef for condstack.
Solution: Add a typedef.
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
#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
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
#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;
#endif
static char_u *
do_one_cmd(
- char_u **cmdlinep,
- int sourcing,
+ char_u **cmdlinep,
+ int sourcing,
#ifdef FEAT_EVAL
- struct condstack *cstack,
-#endif
- char_u *(*fgetline)(int, void *, int, int),
- void *cookie) // argument for fgetline()
-{
- char_u *p;
- linenr_T lnum;
- long n;
- char *errormsg = NULL; // error message
- char_u *after_modifier = NULL;
- exarg_T ea; // Ex command arguments
- int save_msg_scroll = msg_scroll;
- cmdmod_T save_cmdmod;
- int save_reg_executing = reg_executing;
- int ni; // set when Not Implemented
- char_u *cmd;
+ cstack_T *cstack,
+#endif
+ char_u *(*fgetline)(int, void *, int, int),
+ void *cookie) // argument for fgetline()
+{
+ char_u *p;
+ linenr_T lnum;
+ long n;
+ char *errormsg = NULL; // error message
+ char_u *after_modifier = NULL;
+ exarg_T ea; // Ex command arguments
+ int save_msg_scroll = msg_scroll;
+ cmdmod_T save_cmdmod;
+ int save_reg_executing = reg_executing;
+ int ni; // set when Not Implemented
+ char_u *cmd;
vim_memset(&ea, 0, sizeof(ea));
ea.line1 = 1;
#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:
* 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
* 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
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");
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
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");
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");
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");
void
ex_endwhile(exarg_T *eap)
{
- struct condstack *cstack = eap->cstack;
- int idx;
- char *err;
- int csf;
- int fl;
+ cstack_T *cstack = eap->cstack;
+ int idx;
+ char *err;
+ int csf;
+ int fl;
if (eap->cmdidx == CMD_endwhile)
{
* used for rethrowing an uncaught exception.
*/
void
-do_throw(struct condstack *cstack)
+do_throw(cstack_T *cstack)
{
int idx;
int inactivate_try = FALSE;
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");
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)
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");
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");
*/
int
cleanup_conditionals(
- struct condstack *cstack,
+ cstack_T *cstack,
int searched_cond,
int inclusive)
{
* 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;
*/
void
rewind_conditionals(
- struct condstack *cstack,
+ cstack_T *cstack,
int idx,
int cond_type,
int *cond_level)
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);
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 : */
*/
#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 {
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
# 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"
void *rettv)
{
int idx;
- struct condstack *cstack = eap->cstack;
+ cstack_T *cstack = eap->cstack;
if (reanimate)
// Undo the return.
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 13,
/**/
12,
/**/