diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-12 17:14:10 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-12 17:14:14 +0900 |
commit | a58b4eee25b79432d98a1c665edaf5ec0a054b2e (patch) | |
tree | e82cf71e5fb7b50fb185d954a0a33ae83eb5ab21 | |
parent | d1ae2bc27fd4183e6abb9e83691e192bfe1e5316 (diff) |
Warn on `...` at EOL
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 7 |
2 files changed, 10 insertions, 0 deletions
@@ -9235,6 +9235,9 @@ parser_yylex(struct parser_params *p) switch (c = nextc(p)) { case '.': if ((c = nextc(p)) == '.') { + if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) { + rb_warn0("... at EOL, should be parenthesized?"); + } return is_beg ? tBDOT3 : tDOT3; } pushback(p, c); diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index ba479fa459..622017be83 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -986,6 +986,13 @@ eom assert_syntax_error('0...%q.', /unterminated string/, bug10957) end + def test_range_at_eol + assert_warn(/\.\.\. at EOL/) {eval("1...\n2")} + assert_warn('') {eval("(1...)")} + assert_warn('') {eval("(1...\n2)")} + assert_warn('') {eval("{a: 1...\n2}")} + end + def test_too_big_nth_ref bug11192 = '[ruby-core:69393] [Bug #11192]' assert_warn(/too big/, bug11192) do |