summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y34
1 files changed, 19 insertions, 15 deletions
diff --git a/parse.y b/parse.y
index 0bf7b9c9af..7555d0db16 100644
--- a/parse.y
+++ b/parse.y
@@ -10835,6 +10835,16 @@ rb_parser_fatal(struct parser_params *p, const char *fmt, ...)
p->debug = TRUE;
}
+static YYLTYPE *
+rb_parser_set_pos(YYLTYPE *yylloc, int sourceline, int beg_pos, int end_pos)
+{
+ yylloc->beg_pos.lineno = sourceline;
+ yylloc->beg_pos.column = beg_pos;
+ yylloc->end_pos.lineno = sourceline;
+ yylloc->end_pos.column = end_pos;
+ return yylloc;
+}
+
YYLTYPE *
rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
{
@@ -10843,31 +10853,25 @@ rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_
- (rb_strlen_lit("<<-") - !(here->func & STR_FUNC_INDENT));
int end_pos = (int)here->offset + here->length + here->quote;
- yylloc->beg_pos.lineno = sourceline;
- yylloc->beg_pos.column = beg_pos;
- yylloc->end_pos.lineno = sourceline;
- yylloc->end_pos.column = end_pos;
- return yylloc;
+ return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
}
YYLTYPE *
rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc)
{
- yylloc->beg_pos.lineno = p->ruby_sourceline;
- yylloc->beg_pos.column = (int)(p->lex.ptok - p->lex.pbeg);
- yylloc->end_pos.lineno = p->ruby_sourceline;
- yylloc->end_pos.column = (int)(p->lex.ptok - p->lex.pbeg);
- return yylloc;
+ int sourceline = p->ruby_sourceline;
+ int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
+ int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
+ return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
}
YYLTYPE *
rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
{
- yylloc->beg_pos.lineno = p->ruby_sourceline;
- yylloc->beg_pos.column = (int)(p->lex.ptok - p->lex.pbeg);
- yylloc->end_pos.lineno = p->ruby_sourceline;
- yylloc->end_pos.column = (int)(p->lex.pcur - p->lex.pbeg);
- return yylloc;
+ int sourceline = p->ruby_sourceline;
+ int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
+ int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
+ return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
}
#endif /* !RIPPER */