diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2021-03-02 11:21:10 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2021-03-02 11:21:10 +0000 |
commit | dad70fa6a85990f61ec76a62456fde153e093af4 (patch) | |
tree | 01d9dffc167afe7f5f49f8a0e9f92408c15024fc | |
parent | e5bc1fea43b6694893d7cb6550401f7dcfd2b924 (diff) | |
download | ruby-dad70fa6a85990f61ec76a62456fde153e093af4.tar.gz |
merge revision(s) 263b9413: [Backport #16981]
[ripper] fix mismatched indentations warning [Bug #16981]
The scanner location has to be set from lex.ptok before it is
flushed by dispatching the scanner event.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | parse.y | 9 | ||||
-rw-r--r-- | test/ripper/test_parser_events.rb | 6 | ||||
-rw-r--r-- | version.h | 6 |
3 files changed, 14 insertions, 7 deletions
@@ -8314,16 +8314,17 @@ yylex(YYSTYPE *lval, YYLTYPE *yylloc, struct parser_params *p) p->lval = lval; lval->val = Qundef; t = parser_yylex(p); - if (has_delayed_token(p)) - dispatch_delayed_token(p, t); - else if (t != 0) - dispatch_scan_event(p, t); if (p->lex.strterm && (p->lex.strterm->flags & STRTERM_HEREDOC)) RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*yylloc); else RUBY_SET_YYLLOC(*yylloc); + if (has_delayed_token(p)) + dispatch_delayed_token(p, t); + else if (t != 0) + dispatch_scan_event(p, t); + return t; } diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index 95ec661fcf..1f2f960020 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -1498,4 +1498,10 @@ class TestRipper::ParserEvents < Test::Unit::TestCase assert_warn("") {fmt, = warn("\r;")} assert_match(/encountered/, fmt) end + + def test_warn_mismatched_indentations + fmt, tokend, tokbeg, line = assert_warning("") {break warn("if true\n end\n")} + assert_match(/mismatched indentations/, fmt) + assert_equal(["if", "end", 1], [tokbeg, tokend, line]) + end end if ripper_test @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.6.7" -#define RUBY_RELEASE_DATE "2021-03-01" -#define RUBY_PATCHLEVEL 165 +#define RUBY_RELEASE_DATE "2021-03-02" +#define RUBY_PATCHLEVEL 166 #define RUBY_RELEASE_YEAR 2021 #define RUBY_RELEASE_MONTH 3 -#define RUBY_RELEASE_DAY 1 +#define RUBY_RELEASE_DAY 2 #include "ruby/version.h" |