[#87467] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — mofezilla@...
Issue #14841 has been reported by hirura (Hiroyuki URANISHI).
3 messages
2018/06/10
[#87515] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — hirura@...
Issue #14841 has been updated by hirura (Hiroyuki URANISHI).
7 messages
2018/06/19
[#87516] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura@gmail.com wrote:
[#87517] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
Sorry, I left this out: If you can reproduce it again, can you
[#87519] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— hirura <hirura@...>
2018/06/19
Hi Eric,
[#87521] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura <hirura@gmail.com> wrote:
[#87541] [Ruby trunk Feature#14859] [PATCH] implement Timeout in VM — normalperson@...
Issue #14859 has been reported by normalperson (Eric Wong).
4 messages
2018/06/21
[#87605] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been reported by k0kubun (Takashi Kokubun).
3 messages
2018/06/23
[#87614] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — normalperson@...
Issue #14867 has been updated by normalperson (Eric Wong).
4 messages
2018/06/23
[#87631] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been updated by k0kubun (Takashi Kokubun).
5 messages
2018/06/25
[#87635] Re: [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process
— Eric Wong <normalperson@...>
2018/06/25
takashikkbn@gmail.com wrote:
[#87665] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — eregontp@...
Issue #14867 has been updated by Eregon (Benoit Daloze).
4 messages
2018/06/28
[#87710] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — Greg.mpls@...
Issue #14867 has been updated by MSP-Greg (Greg L).
3 messages
2018/06/30
[ruby-core:87356] [Ruby trunk Feature#14808][Rejected] Last token of endless range should have EXPR_END
From:
nobu@...
Date:
2018-06-02 04:33:02 UTC
List:
ruby-core #87356
Issue #14808 has been updated by nobu (Nobuyoshi Nakada).
Status changed from Open to Rejected
That code is valid syntax in both versions, and it is *not* an endless range in the trunk as well as 2.5.
As `..` is an infix operator and requires the RHS, newlines following it are just ignored.
So it equals to:
```ruby
case 5
when (3..puts(true))
end
```
It results in an error at runtime in 2.5, not a syntax error.
```
$ ruby2.5 -rripper -e 'case 5' -e 'when 3..' -e 'puts(true)' -e end
true
Traceback (most recent call last):
-e:3:in `<main>': bad value for range (ArgumentError)
```
To put an endless range there, use parentheses.
----------------------------------------
Feature #14808: Last token of endless range should have EXPR_END
https://bugs.ruby-lang.org/issues/14808#change-72347
* Author: aycabta (aycabta .)
* Status: Rejected
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
In 2.5.1:
```ruby
irb(main):001:0> require 'ripper'
irb(main):002:0> pp Ripper.lex("case 5\nwhen 3..\n puts(true)\nend\n")
[[[1, 0], :on_kw, "case", EXPR_BEG],
[[1, 4], :on_sp, " ", EXPR_BEG],
[[1, 5], :on_int, "5", EXPR_END|EXPR_ENDARG],
[[1, 6], :on_nl, "\n", EXPR_BEG],
[[2, 0], :on_kw, "when", EXPR_BEG],
[[2, 4], :on_sp, " ", EXPR_BEG],
[[2, 5], :on_int, "3", EXPR_END|EXPR_ENDARG],
[[2, 6], :on_op, "..", EXPR_BEG],
[[2, 8], :on_ignored_nl, "\n", EXPR_BEG],
[[3, 0], :on_sp, " ", EXPR_BEG],
[[3, 2], :on_ident, "puts", EXPR_ARG],
[[3, 6], :on_lparen, "(", EXPR_BEG|EXPR_LABEL],
[[3, 7], :on_kw, "true", EXPR_END],
[[3, 11], :on_rparen, ")", EXPR_ENDFN],
[[3, 12], :on_nl, "\n", EXPR_BEG],
[[4, 0], :on_kw, "end", EXPR_END],
[[4, 3], :on_nl, "\n", EXPR_BEG]]
```
This is invalid code in 2.5.1, so I understand this result.
In 63451:
```ruby
irb(main):001:0> require 'ripper'
irb(main):002:0> pp Ripper.lex("case 5\nwhen 3..\n puts(true)\nend\n")
[[[1, 0], :on_kw, "case", EXPR_BEG],
[[1, 4], :on_sp, " ", EXPR_BEG],
[[1, 5], :on_int, "5", EXPR_END],
[[1, 6], :on_nl, "\n", EXPR_BEG],
[[2, 0], :on_kw, "when", EXPR_BEG],
[[2, 4], :on_sp, " ", EXPR_BEG],
[[2, 5], :on_int, "3", EXPR_END],
[[2, 6], :on_op, "..", EXPR_BEG],
[[2, 8], :on_ignored_nl, "\n", EXPR_BEG],
[[3, 0], :on_sp, " ", EXPR_BEG],
[[3, 2], :on_ident, "puts", EXPR_ARG],
[[3, 6], :on_lparen, "(", EXPR_BEG|EXPR_LABEL],
[[3, 7], :on_kw, "true", EXPR_END],
[[3, 11], :on_rparen, ")", EXPR_ENDFN],
[[3, 12], :on_nl, "\n", EXPR_BEG],
[[4, 0], :on_kw, "end", EXPR_END],
[[4, 3], :on_nl, "\n", EXPR_BEG]]
```
This is correct code in this revision.
I think that lex_state of the last token of endless range, `[[2, 6], :on_op, "..", EXPR_BEG]`, it should be EXPR_END. Because it's the end of an argument. It's important for REPL, RDoc, and so on.
But lex_state is parser matter in parse.y. How about this for the parser of Ruby compiler?
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>