aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-03-14 02:18:05 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-03-14 02:18:05 +0000
commit86c5806c6a3452a0b81595f8a306ec5c421a16a8 (patch)
tree4af0e75497ed236f9063035e9ea6de31e562f9c5 /parse.y
parente20aa14a82604db9a5e4d33d206aacfebfbb7d62 (diff)
downloadruby-86c5806c6a3452a0b81595f8a306ec5c421a16a8.tar.gz
More initializations of YYLTYPE
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y26
1 files changed, 16 insertions, 10 deletions
diff --git a/parse.y b/parse.y
index 4906eb55be..d1e6166f8c 100644
--- a/parse.y
+++ b/parse.y
@@ -71,6 +71,11 @@
rb_parser_set_location_of_none(p, &(Current))
#define RUBY_SET_YYLLOC(Current) \
rb_parser_set_location(p, &(Current))
+#define RUBY_INIT_YYLLOC() \
+ { \
+ {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
+ {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
+ }
enum lex_state_bits {
EXPR_BEG_bit, /* ignore newline, +/- is a sign. */
@@ -518,9 +523,9 @@ enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_stat
VALUE rb_parser_lex_state_name(enum lex_state_e state);
void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
-void rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
-void rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
-void rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
+YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
+YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
+YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
RUBY_SYMBOL_EXPORT_END
static void parser_token_value_print(struct parser_params *p, enum yytokentype type, const YYSTYPE *valp);
@@ -4674,8 +4679,7 @@ parser_yyerror(struct parser_params *p, const YYLTYPE *yylloc, const char *msg)
YYLTYPE current;
if (!yylloc) {
- RUBY_SET_YYLLOC(current);
- yylloc = &current;
+ yylloc = RUBY_SET_YYLLOC(current);
token_flush(p);
}
else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
@@ -5636,8 +5640,7 @@ regx_options(struct parser_params *p)
static const char sep[] = " - ";
const int mlen = (int)(sizeof(mesg) - 1 - (toklen(p) == 1));
const int seplen = (int)(sizeof(sep) - 1);
- YYLTYPE loc;
- RUBY_SET_YYLLOC(loc);
+ YYLTYPE loc = RUBY_INIT_YYLLOC();
tokfix(p);
tokspace(p, toklen(p) + mlen + seplen);
memmove(tok(p) + mlen + seplen, tok(p), toklen(p) + 1);
@@ -9159,7 +9162,7 @@ rb_parser_fatal(struct parser_params *p, const char *fmt, ...)
p->debug = TRUE;
}
-void
+YYLTYPE *
rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
{
const char *eos = RSTRING_PTR(here->term);
@@ -9169,24 +9172,27 @@ rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_
yylloc->beg_pos.column = (int)(here->u3.lastidx - term_len);
yylloc->end_pos.lineno = (int)here->sourceline;
yylloc->end_pos.column = (int)(here->u3.lastidx);
+ return yylloc;
}
-void
+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;
}
-void
+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;
}
#endif /* !RIPPER */