diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-02-04 14:41:52 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-02-04 14:41:52 +0900 |
commit | 9cdc964d075fc3d21b8ce8456ac88f57a5183ec0 (patch) | |
tree | 17437f09c0e18fdaa7d43f3bbc0ebcc547d2181f | |
parent | 7a51d979cf9c98209b7c1b1d54016348e8124904 (diff) |
Do not warn CR inside string literal
-rw-r--r-- | parse.y | 14 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 9 |
2 files changed, 15 insertions, 8 deletions
@@ -6260,11 +6260,6 @@ parser_cr(struct parser_params *p, int c) p->lex.pcur++; c = '\n'; } - else if (!p->cr_seen) { - p->cr_seen = TRUE; - /* carried over with p->lex.nextline for nextc() */ - rb_warn0("encountered \\r in middle of line, treated as a mere space"); - } return c; } @@ -8833,7 +8828,14 @@ parser_yylex(struct parser_params *p) return 0; /* white spaces */ - case ' ': case '\t': case '\f': case '\r': + case '\r': + if (!p->cr_seen) { + p->cr_seen = TRUE; + /* carried over with p->lex.nextline for nextc() */ + rb_warn0("encountered \\r in middle of line, treated as a mere space"); + } + /* fall through */ + case ' ': case '\t': case '\f': case '\13': /* '\v' */ space_seen = 1; #ifdef RIPPER diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 5591b7cb31..f92966fda9 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -949,9 +949,14 @@ eom def test_warning_for_cr feature8699 = '[ruby-core:56240] [Feature #8699]' - assert_warning(/encountered \\r/, feature8699) do - eval("\r""__id__\r") + s = assert_warning(/encountered \\r/, feature8699) do + eval("'\r'\r") end + assert_equal("\r", s) + s = assert_warning('') do + eval("'\r'\r\n") + end + assert_equal("\r", s) end def test_unexpected_fraction |