diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-01-06 20:26:11 +0900 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2023-01-06 13:13:07 +0100 |
commit | cee5beab1d7bf6f99530957494ab9775696d42ce (patch) | |
tree | 0217d37b9ef7531c0cd11524d17a6476aff15f39 /parse.y | |
parent | d9520bf2debaad471f68bd74001967eee3e6d51e (diff) | |
download | ruby-cee5beab1d7bf6f99530957494ab9775696d42ce.tar.gz |
[Bug #19312] Return end-of-input at `__END__`
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 12 |
1 files changed, 5 insertions, 7 deletions
@@ -9813,7 +9813,7 @@ parser_yylex(struct parser_params *p) #endif /* Set location for end-of-input because dispatch_scan_event is not called. */ RUBY_SET_YYLLOC(*p->yylloc); - return 0; + return END_OF_INPUT; /* white spaces */ case '\r': @@ -9986,7 +9986,7 @@ parser_yylex(struct parser_params *p) c = nextc(p); if (c == -1) { compile_error(p, "embedded document meets end of file"); - return 0; + return END_OF_INPUT; } if (c == '=' && word_match_p(p, "end", 3)) { break; @@ -10466,13 +10466,11 @@ parser_yylex(struct parser_params *p) if (was_bol(p) && whole_match_p(p, "__END__", 7, 0)) { p->ruby__end__seen = 1; p->eofp = 1; -#ifndef RIPPER - return -1; -#else +#ifdef RIPPER lex_goto_eol(p); dispatch_scan_event(p, k__END__); - return 0; #endif + return END_OF_INPUT; } newtok(p); break; @@ -10504,7 +10502,7 @@ yylex(YYSTYPE *lval, YYLTYPE *yylloc, struct parser_params *p) if (has_delayed_token(p)) dispatch_delayed_token(p, t); - else if (t != 0) + else if (t != END_OF_INPUT) dispatch_scan_event(p, t); return t; |