1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Add rb_parser_set_pos function

Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Marivaldo Cavalheiro <marivaldo@gmail.com>
This commit is contained in:
S.H 2021-12-16 20:03:44 +09:00 committed by GitHub
parent 41d4902c27
commit 9b187fec58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: git 2021-12-16 20:04:03 +09:00
Merged: https://github.com/ruby/ruby/pull/5089

Merged-By: nobu <nobu@ruby-lang.org>

38
parse.y
View file

@ -10835,14 +10835,9 @@ rb_parser_fatal(struct parser_params *p, const char *fmt, ...)
p->debug = TRUE;
}
YYLTYPE *
rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
static YYLTYPE *
rb_parser_set_pos(YYLTYPE *yylloc, int sourceline, int beg_pos, int end_pos)
{
int sourceline = here->sourceline;
int beg_pos = (int)here->offset - here->quote
- (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;
@ -10850,24 +10845,33 @@ rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_
return yylloc;
}
YYLTYPE *
rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
{
int sourceline = here->sourceline;
int beg_pos = (int)here->offset - here->quote
- (rb_strlen_lit("<<-") - !(here->func & STR_FUNC_INDENT));
int end_pos = (int)here->offset + here->length + here->quote;
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 */