diff --git a/parse.y b/parse.y index 4c1e5933c9..1468898330 100644 --- a/parse.y +++ b/parse.y @@ -1578,20 +1578,13 @@ block_command : block_call } ; -cmd_brace_block : tLBRACE_ARG +cmd_brace_block : tLBRACE_ARG brace_body '}' { + $$ = $2; /*%%%*/ - $$ = ruby_sourceline; - /*% - %*/ - } - brace_body '}' - { - $$ = $3; - /*%%%*/ - $3->nd_body->nd_loc.first_loc = @1.first_loc; - $3->nd_body->nd_loc.last_loc = @4.last_loc; - nd_set_line($$, $2); + $$->nd_body->nd_loc.first_loc = @1.first_loc; + $$->nd_body->nd_loc.last_loc = @3.last_loc; + nd_set_line($$, $$->nd_loc.first_loc.lineno); /*% %*/ } ; @@ -2595,10 +2588,6 @@ primary : literal { $1 = cmdarg_stack; CMDARG_SET(0); - /*%%%*/ - $$ = ruby_sourceline; - /*% - %*/ } bodystmt k_end @@ -2609,10 +2598,10 @@ primary : literal $$ = NEW_NIL(&@$); } else { - set_line_body($3, $2); + set_line_body($3, @3.first_loc.lineno); $$ = NEW_BEGIN($3, &@$); } - nd_set_line($$, $2); + nd_set_line($$, @3.first_loc.lineno); /*% $$ = dispatch1(begin, $3); %*/ @@ -2809,7 +2798,7 @@ primary : literal { /*%%%*/ $$ = NEW_CASE2($3, &@$); - nd_set_line($$, $1); + nd_set_line($$, @1.first_loc.lineno); /*% $$ = dispatch2(case, Qnil, $3); %*/ @@ -2877,10 +2866,6 @@ primary : literal $1 = in_class; in_class = 1; local_push(0); - /*%%%*/ - $$ = ruby_sourceline; - /*% - %*/ } bodystmt k_end @@ -2888,8 +2873,8 @@ primary : literal /*%%%*/ $$ = NEW_CLASS($2, $5, $3, &@$); nd_set_line($$->nd_body, ruby_sourceline); - set_line_body($5, $4); - nd_set_line($$, $4); + set_line_body($5, @4.last_loc.lineno); + nd_set_line($$, @4.last_loc.lineno); /*% $$ = dispatch3(class, $2, $3, $5); %*/ @@ -2930,10 +2915,6 @@ primary : literal $1 = in_class; in_class = 1; local_push(0); - /*%%%*/ - $$ = ruby_sourceline; - /*% - %*/ } bodystmt k_end @@ -2941,8 +2922,8 @@ primary : literal /*%%%*/ $$ = NEW_MODULE($2, $4, &@$); nd_set_line($$->nd_body, ruby_sourceline); - set_line_body($4, $3); - nd_set_line($$, $3); + set_line_body($4, @4.first_loc.lineno); + nd_set_line($$, @4.first_loc.lineno); /*% $$ = dispatch2(module, $2, $4); %*/ @@ -2968,8 +2949,8 @@ primary : literal reduce_nodes(&body); $$ = NEW_DEFN($2, $5, body, &@$); nd_set_line($$->nd_defn, ruby_sourceline); - set_line_body(body, $1); - nd_set_line($$, $1); + set_line_body(body, @1.first_loc.lineno); + nd_set_line($$, @1.first_loc.lineno); /*% $$ = dispatch3(def, $2, $5, $6); %*/ @@ -2995,8 +2976,8 @@ primary : literal reduce_nodes(&body); $$ = NEW_DEFS($2, $5, $7, body, &@$); nd_set_line($$->nd_defn, ruby_sourceline); - set_line_body(body, $1); - nd_set_line($$, $1); + set_line_body(body, @1.first_loc.lineno); + nd_set_line($$, @1.first_loc.lineno); /*% $$ = dispatch5(defs, $2, $3, $5, $7, $8); %*/ @@ -3083,10 +3064,6 @@ k_until : keyword_until k_case : keyword_case { token_info_push("case"); - /*%%%*/ - $$ = ruby_sourceline; - /*% - %*/ } ; @@ -3111,10 +3088,6 @@ k_module : keyword_module k_def : keyword_def { token_info_push("def"); - /*%%%*/ - $$ = ruby_sourceline; - /*% - %*/ } ; @@ -3483,9 +3456,6 @@ lambda : { lpar_beg = ++paren_nest; } f_larglist - { - $$ = ruby_sourceline; - } { $$ = cmdarg_stack; CMDARG_SET(0); @@ -3493,14 +3463,14 @@ lambda : { lambda_body { lpar_beg = $2; - CMDARG_SET($5); + CMDARG_SET($4); CMDARG_LEXPOP(); /*%%%*/ - $$ = NEW_LAMBDA($3, $6, &@$); + $$ = NEW_LAMBDA($3, $5, &@$); nd_set_line($$->nd_body, ruby_sourceline); - nd_set_line($$, $4); + nd_set_line($$, @5.first_loc.lineno); /*% - $$ = dispatch2(lambda, $3, $6); + $$ = dispatch2(lambda, $3, $5); %*/ dyna_pop($1); } @@ -3531,19 +3501,13 @@ lambda_body : tLAMBEG compstmt '}' } ; -do_block : keyword_do_block +do_block : keyword_do_block do_body keyword_end { + $$ = $2; /*%%%*/ - $$ = ruby_sourceline; - /*% %*/ - } - do_body keyword_end - { - $$ = $3; - /*%%%*/ - $3->nd_body->nd_loc.first_loc = @1.first_loc; - $3->nd_body->nd_loc.last_loc = @4.last_loc; - nd_set_line($$, $2); + $$->nd_body->nd_loc.first_loc = @1.first_loc; + $$->nd_body->nd_loc.last_loc = @3.last_loc; + nd_set_line($$, @2.first_loc.lineno); /*% %*/ } ; @@ -3603,53 +3567,29 @@ method_call : fcall paren_args $$ = method_arg(dispatch1(fcall, $1), $2); %*/ } - | primary_value call_op operation2 + | primary_value call_op operation2 opt_paren_args { - /*%%%*/ - $$ = ruby_sourceline; - /*% %*/ + $$ = new_qcall($2, $1, $3, $4, &@3, &@$); + nd_set_line($$, @4.first_loc.lineno); } - opt_paren_args + | primary_value tCOLON2 operation2 paren_args { - $$ = new_qcall($2, $1, $3, $5, &@3, &@$); - nd_set_line($$, $4); - } - | primary_value tCOLON2 operation2 - { - /*%%%*/ - $$ = ruby_sourceline; - /*% %*/ - } - paren_args - { - $$ = new_qcall(ID2VAL(idCOLON2), $1, $3, $5, &@3, &@$); - nd_set_line($$, $4); + $$ = new_qcall(ID2VAL(idCOLON2), $1, $3, $4, &@3, &@$); + nd_set_line($$, @4.first_loc.lineno); } | primary_value tCOLON2 operation3 { $$ = new_qcall(ID2VAL(idCOLON2), $1, $3, Qnull, &@3, &@$); } - | primary_value call_op + | primary_value call_op paren_args { - /*%%%*/ - $$ = ruby_sourceline; - /*% %*/ + $$ = new_qcall($2, $1, ID2VAL(idCall), $3, &@2, &@$); + nd_set_line($$, @3.first_loc.lineno); } - paren_args + | primary_value tCOLON2 paren_args { - $$ = new_qcall($2, $1, ID2VAL(idCall), $4, &@2, &@$); - nd_set_line($$, $3); - } - | primary_value tCOLON2 - { - /*%%%*/ - $$ = ruby_sourceline; - /*% %*/ - } - paren_args - { - $$ = new_qcall(ID2VAL(idCOLON2), $1, ID2VAL(idCall), $4, &@2, &@$); - nd_set_line($$, $3); + $$ = new_qcall(ID2VAL(idCOLON2), $1, ID2VAL(idCall), $3, &@2, &@$); + nd_set_line($$, @3.first_loc.lineno); } | keyword_super paren_args { @@ -3681,34 +3621,22 @@ method_call : fcall paren_args } ; -brace_block : '{' +brace_block : '{' brace_body '}' { + $$ = $2; /*%%%*/ - $$ = ruby_sourceline; + $$->nd_body->nd_loc.first_loc = @1.first_loc; + $$->nd_body->nd_loc.last_loc = @3.last_loc; + nd_set_line($$, @1.first_loc.lineno); /*% %*/ } - brace_body '}' + | keyword_do do_body keyword_end { - $$ = $3; + $$ = $2; /*%%%*/ - $3->nd_body->nd_loc.first_loc = @1.first_loc; - $3->nd_body->nd_loc.last_loc = @4.last_loc; - nd_set_line($$, $2); - /*% %*/ - } - | keyword_do - { - /*%%%*/ - $$ = ruby_sourceline; - /*% %*/ - } - do_body keyword_end - { - $$ = $3; - /*%%%*/ - $3->nd_body->nd_loc.first_loc = @1.first_loc; - $3->nd_body->nd_loc.last_loc = @4.last_loc; - nd_set_line($$, $2); + $$->nd_body->nd_loc.first_loc = @1.first_loc; + $$->nd_body->nd_loc.last_loc = @3.last_loc; + nd_set_line($$, @1.first_loc.lineno); /*% %*/ } ;