summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/parse.y
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-02 11:37:22 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-02 20:28:26 +0900
commit6323c995f37fe24597c431fe5515394716dedb0d (patch)
tree2d00870accb1b4ca58ba3322fc936c852cb0f1af /mrbgems/mruby-compiler/core/parse.y
parent15e7b3e8fef33f3b5cf657580f5b410053b2d31e (diff)
downloadmruby-6323c995f37fe24597c431fe5515394716dedb0d.tar.gz
mruby-6323c995f37fe24597c431fe5515394716dedb0d.zip
Use type casting macros; ref #5246 #5247
Diffstat (limited to 'mrbgems/mruby-compiler/core/parse.y')
-rw-r--r--mrbgems/mruby-compiler/core/parse.y39
1 files changed, 20 insertions, 19 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index f66287053..954ff623a 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -70,6 +70,7 @@ typedef unsigned int stack_type;
#define nsym(x) ((node*)(intptr_t)(x))
#define nint(x) ((node*)(intptr_t)(x))
#define intn(x) ((int)(intptr_t)(x))
+#define typen(x) ((enum node_type)(intptr_t)(x))
#define NUM_SUFFIX_R (1<<0)
#define NUM_SUFFIX_I (1<<1)
@@ -779,7 +780,7 @@ static void
local_add_margs(parser_state *p, node *n)
{
while (n) {
- if (n->car->car == (node*)NODE_MASGN) {
+ if (typen(n->car->car) == NODE_MASGN) {
node *t = n->car->cdr->cdr;
n->car->cdr->cdr = NULL;
@@ -1015,7 +1016,7 @@ new_dstr(parser_state *p, node *a)
static int
string_node_p(node *n)
{
- return (int)((enum node_type)(intptr_t)n->car == NODE_STR);
+ return (int)(typen(n->car) == NODE_STR);
}
static node*
@@ -1207,7 +1208,7 @@ call_with_block(parser_state *p, node *a, node *b)
{
node *n;
- switch ((enum node_type)intn(a->car)) {
+ switch (typen(a->car)) {
case NODE_SUPER:
case NODE_ZSUPER:
if (!a->cdr) a->cdr = cons(0, b);
@@ -1281,7 +1282,7 @@ typedef enum mrb_string_type string_type;
static node*
new_strterm(parser_state *p, string_type type, int term, int paren)
{
- return cons(nint(type), cons((node*)0, cons(nint(paren), nint(term))));
+ return cons(nint(type), cons(nint(0), cons(nint(paren), nint(term))));
}
static void
@@ -2047,11 +2048,11 @@ cname : tIDENTIFIER
cpath : tCOLON3 cname
{
- $$ = cons((node*)1, nsym($2));
+ $$ = cons(nint(1), nsym($2));
}
| cname
{
- $$ = cons((node*)0, nsym($1));
+ $$ = cons(nint(0), nsym($1));
}
| primary_value tCOLON2 cname
{
@@ -2866,11 +2867,11 @@ f_margs : f_arg
| f_arg ',' tSTAR
{
local_add_f(p, 0);
- $$ = list3($1, (node*)-1, 0);
+ $$ = list3($1, nint(-1), 0);
}
| f_arg ',' tSTAR ',' f_arg
{
- $$ = list3($1, (node*)-1, $5);
+ $$ = list3($1, nint(-1), $5);
}
| tSTAR f_norm_arg
{
@@ -2883,7 +2884,7 @@ f_margs : f_arg
| tSTAR
{
local_add_f(p, 0);
- $$ = list3(0, (node*)-1, 0);
+ $$ = list3(0, nint(-1), 0);
}
| tSTAR ','
{
@@ -2891,7 +2892,7 @@ f_margs : f_arg
}
f_arg
{
- $$ = list3(0, (node*)-1, $4);
+ $$ = list3(0, nint(-1), $4);
}
;
@@ -3072,7 +3073,7 @@ do_block : keyword_do_block
block_call : command do_block
{
- if ($1->car == (node*)NODE_YIELD) {
+ if (typen($1->car) == NODE_YIELD) {
yyerror(p, "block given to yield");
}
else {
@@ -3865,7 +3866,7 @@ singleton : var_ref
yyerror(p, "can't define singleton method for ().");
}
else {
- switch ((enum node_type)intn($3->car)) {
+ switch (typen($3->car)) {
case NODE_STR:
case NODE_DSTR:
case NODE_XSTR:
@@ -3920,7 +3921,7 @@ assoc : arg tASSOC arg
| string_fragment label_tag arg
{
void_expr_error(p, $3);
- if ($1->car == (node*)NODE_DSTR) {
+ if (typen($1->car) == NODE_DSTR) {
$$ = cons(new_dsym(p, $1), $3);
}
else {
@@ -4924,7 +4925,7 @@ number_literal_suffix(parser_state *p)
int mask = NUM_SUFFIX_R|NUM_SUFFIX_I;
while ((c = nextc(p)) != -1) {
- list = push(list, (node*)(intptr_t)c);
+ list = push(list, nint(c));
if ((mask & NUM_SUFFIX_I) && c == 'i') {
result |= (mask & NUM_SUFFIX_I);
@@ -7231,7 +7232,7 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
if (n2->car) {
dump_prefix(n2, offset+2);
printf("rest:\n");
- if (n2->car == (node*)-1) {
+ if (n2->car == nint(-1)) {
dump_prefix(n2, offset+2);
printf("(empty)\n");
}
@@ -7473,11 +7474,11 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
case NODE_CLASS:
printf("NODE_CLASS:\n");
- if (tree->car->car == (node*)0) {
+ if (tree->car->car == nint(0)) {
dump_prefix(tree, offset+1);
printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
}
- else if (tree->car->car == (node*)1) {
+ else if (tree->car->car == nint(1)) {
dump_prefix(tree, offset+1);
printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
}
@@ -7498,11 +7499,11 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
case NODE_MODULE:
printf("NODE_MODULE:\n");
- if (tree->car->car == (node*)0) {
+ if (tree->car->car == nint(0)) {
dump_prefix(tree, offset+1);
printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
}
- else if (tree->car->car == (node*)1) {
+ else if (tree->car->car == nint(1)) {
dump_prefix(tree, offset+1);
printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
}