зеркало из https://github.com/github/ruby.git
parse.y: Fix locations of modifier_rescue
* parse.y: Fix to only include a range from modifier_rescue to stmt (or arg). e.g. The locations of the NODE_RESBODY is fixed: ``` a rescue 1 ``` * Before ``` NODE_RESBODY (line: 1, code_range: (1,0)-(1,10)) ``` * After ``` NODE_RESBODY (line: 1, code_range: (1,2)-(1,10)) ``` git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
3bc080bac9
Коммит
c6b31b76ee
15
parse.y
15
parse.y
|
@ -1453,7 +1453,10 @@ stmt : keyword_alias fitem {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);} fitem
|
||||||
| stmt modifier_rescue stmt
|
| stmt modifier_rescue stmt
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
NODE *resq = new_resbody(0, remove_begin($3), 0, &@$);
|
YYLTYPE location;
|
||||||
|
location.first_loc = @2.first_loc;
|
||||||
|
location.last_loc = @3.last_loc;
|
||||||
|
NODE *resq = new_resbody(0, remove_begin($3), 0, &location);
|
||||||
$$ = new_rescue(remove_begin($1), resq, 0, &@$);
|
$$ = new_rescue(remove_begin($1), resq, 0, &@$);
|
||||||
/*%
|
/*%
|
||||||
$$ = dispatch2(rescue_mod, $1, $3);
|
$$ = dispatch2(rescue_mod, $1, $3);
|
||||||
|
@ -1572,8 +1575,11 @@ command_rhs : command_call %prec tOP_ASGN
|
||||||
| command_call modifier_rescue stmt
|
| command_call modifier_rescue stmt
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
|
YYLTYPE location;
|
||||||
|
location.first_loc = @2.first_loc;
|
||||||
|
location.last_loc = @3.last_loc;
|
||||||
value_expr($1);
|
value_expr($1);
|
||||||
$$ = new_rescue($1, new_resbody(0, remove_begin($3), 0, &@$), 0, &@$);
|
$$ = new_rescue($1, new_resbody(0, remove_begin($3), 0, &location), 0, &@$);
|
||||||
/*%
|
/*%
|
||||||
$$ = dispatch2(rescue_mod, $1, $3);
|
$$ = dispatch2(rescue_mod, $1, $3);
|
||||||
%*/
|
%*/
|
||||||
|
@ -2423,8 +2429,11 @@ arg_rhs : arg %prec tOP_ASGN
|
||||||
| arg modifier_rescue arg
|
| arg modifier_rescue arg
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
|
YYLTYPE location;
|
||||||
|
location.first_loc = @2.first_loc;
|
||||||
|
location.last_loc = @3.last_loc;
|
||||||
value_expr($1);
|
value_expr($1);
|
||||||
$$ = new_rescue($1, new_resbody(0, remove_begin($3), 0, &@$), 0, &@$);
|
$$ = new_rescue($1, new_resbody(0, remove_begin($3), 0, &location), 0, &@$);
|
||||||
/*%
|
/*%
|
||||||
$$ = dispatch2(rescue_mod, $1, $3);
|
$$ = dispatch2(rescue_mod, $1, $3);
|
||||||
%*/
|
%*/
|
||||||
|
|
Загрузка…
Ссылка в новой задаче