summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y3
-rw-r--r--test/ruby/test_syntax.rb7
2 files changed, 10 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 0bda2d2db0..6d0564476d 100644
--- a/parse.y
+++ b/parse.y
@@ -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