summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorS.H <gamelinks007@gmail.com>2021-12-16 20:03:44 +0900
committerGitHub <noreply@github.com>2021-12-16 20:03:44 +0900
commit9b187fec58daafc80164bc29c57dd306d053bcfe (patch)
tree7e253b1e11bfce1429f14bbd45ece3e608c60060 /parse.y
parent41d4902c2790983ba560db4eb0debcfc86e89b40 (diff)
Add `rb_parser_set_pos` function
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Marivaldo Cavalheiro <marivaldo@gmail.com>
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5089 Merged-By: nobu <nobu@ruby-lang.org>
Diffstat (limited to 'parse.y')
-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 */