diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-07-16 02:23:31 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2012-07-16 02:23:31 -0700 |
| commit | 3d925cd5ba0dc4703052f6c4729ef385e3cb9652 (patch) | |
| tree | f8b7918a8dd1bbd22e745cff76446c63f1dd0b0c | |
| parent | 49cac5f97db1398776e99573a62a300e3ab12ce7 (diff) | |
| parent | 0339317bd62881034987bcc8c5144fdd25bfc42d (diff) | |
| download | mruby-3d925cd5ba0dc4703052f6c4729ef385e3cb9652.tar.gz mruby-3d925cd5ba0dc4703052f6c4729ef385e3cb9652.zip | |
Merge pull request #373 from monaka/pr-supress-swtiches
Supress using switches with fallthru or a empty default label.
| -rw-r--r-- | src/parse.y | 103 | ||||
| -rw-r--r-- | src/range.c | 21 |
2 files changed, 53 insertions, 71 deletions
diff --git a/src/parse.y b/src/parse.y index 48823233f..0c589d822 100644 --- a/src/parse.y +++ b/src/parse.y @@ -805,12 +805,8 @@ ret_args(parser_state *p, node *n) static void assignable(parser_state *p, node *lhs) { - switch ((int)(intptr_t)lhs->car) { - case NODE_LVAR: + if ((int)(intptr_t)lhs->car == NODE_LVAR) { local_add(p, (mrb_sym)lhs->cdr); - break; - default: - break; } } @@ -819,17 +815,14 @@ var_reference(parser_state *p, node *lhs) { node *n; - switch ((int)(intptr_t)lhs->car) { - case NODE_LVAR: + if ((int)(intptr_t)lhs->car == NODE_LVAR) { if (!local_var_p(p, (mrb_sym)lhs->cdr)) { n = new_fcall(p, (mrb_sym)lhs->cdr, 0); cons_free(lhs); return n; } - break; - default: - break; } + return lhs; } @@ -3038,15 +3031,16 @@ yywarning_s(parser_state *p, const char *fmt, const char *s) static void backref_error(parser_state *p, node *n) { - switch ((int)(intptr_t)n->car) { - case NODE_NTH_REF: + int c; + + c = (int)(intptr_t)n->car; + + if (c == NODE_NTH_REF) { yyerror_i(p, "can't set variable $%d", (int)(intptr_t)n->cdr); - break; - case NODE_BACK_REF: + } else if (c == NODE_BACK_REF) { yyerror_i(p, "can't set variable $%c", (int)(intptr_t)n->cdr); - break; - default: - break; + } else { + mrb_bug("Internal error in backref_error() : n=>car == %d", c); } } @@ -3589,11 +3583,10 @@ parser_yylex(parser_state *p) c = '*'; } } - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; } return c; @@ -3624,11 +3617,10 @@ parser_yylex(parser_state *p) goto retry; } } - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; } if ((c = nextc(p)) == '=') { if ((c = nextc(p)) == '=') { @@ -3660,13 +3652,13 @@ parser_yylex(parser_state *p) if (token) return token; } #endif - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - case EXPR_CLASS: - p->cmd_start = TRUE; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; + if (p->lstate == EXPR_CLASS) { + p->cmd_start = TRUE; + } } if (c == '=') { if ((c = nextc(p)) == '>') { @@ -3688,11 +3680,10 @@ parser_yylex(parser_state *p) return '<'; case '>': - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; } if ((c = nextc(p)) == '=') { return tGEQ; @@ -3820,10 +3811,9 @@ parser_yylex(parser_state *p) else { c = '&'; } - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { p->lstate = EXPR_BEG; } return c; @@ -4206,11 +4196,10 @@ parser_yylex(parser_state *p) #endif return tREGEXP_BEG; } - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; } return '/'; @@ -4220,11 +4209,10 @@ parser_yylex(parser_state *p) p->lstate = EXPR_BEG; return tOP_ASGN; } - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; } pushback(p, c); return '^'; @@ -4409,11 +4397,10 @@ parser_yylex(parser_state *p) if (IS_SPCARG(c)) { goto quotation; } - switch (p->lstate) { - case EXPR_FNAME: case EXPR_DOT: - p->lstate = EXPR_ARG; break; - default: - p->lstate = EXPR_BEG; break; + if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { + p->lstate = EXPR_ARG; + } else { + p->lstate = EXPR_BEG; } pushback(p, c); return '%'; diff --git a/src/range.c b/src/range.c index b05836914..2fa6763a6 100644 --- a/src/range.c +++ b/src/range.c @@ -20,19 +20,14 @@ static void range_check(mrb_state *mrb, mrb_value a, mrb_value b) { mrb_value ans; - - switch (mrb_type(a)) { - case MRB_TT_FIXNUM: - case MRB_TT_FLOAT: - switch (mrb_type(b)) { - case MRB_TT_FIXNUM: - case MRB_TT_FLOAT: - return; - default: - break; - } - default: - break; + int ta; + int tb; + + ta = mrb_type(a); + tb = mrb_type(b); + if ((ta == MRB_TT_FIXNUM || ta == MRB_TT_FLOAT) && + (tb == MRB_TT_FIXNUM || tb == MRB_TT_FLOAT)) { + return; } mrb_p(mrb, a); |
