diff options
author | S.H <gamelinks007@gmail.com> | 2021-12-16 20:03:44 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-16 20:03:44 +0900 |
commit | 9b187fec58daafc80164bc29c57dd306d053bcfe (patch) | |
tree | 7e253b1e11bfce1429f14bbd45ece3e608c60060 /parse.y | |
parent | 41d4902c2790983ba560db4eb0debcfc86e89b40 (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.y | 34 |
1 files changed, 19 insertions, 15 deletions
@@ -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 */ |