[#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
[#87570] [Ruby trunk Feature#14859] [PATCH] implement Timeout in VM — eregontp@...
Issue #14859 has been updated by Eregon (Benoit Daloze).
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:87445] [Ruby trunk Feature#14833] Add RubyVM::AST::Node#pretty_print
From:
kuwabara@...
Date:
2018-06-07 14:44:16 UTC
List:
ruby-core #87445
Issue #14833 has been reported by pocke (Masataka Kuwabara).
----------------------------------------
Feature #14833: Add RubyVM::AST::Node#pretty_print
https://bugs.ruby-lang.org/issues/14833
* Author: pocke (Masataka Kuwabara)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
# Abstract
This patch adds `RubyVM::AST::Node#pretty_print` for `pp`.
# Background
`RubyVM::AST::Node#inspect` does not print children, so I cannot understand structure of a ast by `p` method.
For example:
```
$ ruby -e 'p RubyVM::AST.parse("if cond then foo; bar else hoge; fuga end")'
#<RubyVM::AST::Node(NODE_SCOPE(0) 1:0, 1:41): >
```
It is not understandable.
BTW parser gem prints children.
```
$ ruby -rparser/current -e 'p Parser::CurrentRuby.parse("if cond then foo; bar else hoge; fuga end")'
s(:if,
s(:send, nil, :cond),
s(:begin,
s(:send, nil, :foo),
s(:send, nil, :bar)),
s(:begin,
s(:send, nil, :hoge),
s(:send, nil, :fuga)))
```
# Proposal
Add `RubyVM::AST::Node#pretty_print` for `pp` method and it displays children nodes.
```
$ ruby -e 'p RubyVM::AST.parse("if cond then foo; bar else hoge; fuga end")'
#<RubyVM::AST::Node(NODE_SCOPE(0) 1:0, 1:41): >
$ ruby -e 'pp RubyVM::AST.parse("if cond then foo; bar else hoge; fuga end")'
#<RubyVM::AST::Node(NODE_SCOPE(0) 1:0, 1:41
nil,
#<RubyVM::AST::Node(NODE_IF(2) 1:0, 1:41
#<RubyVM::AST::Node(NODE_VCALL(38) 1:3, 1:7 ): >,
#<RubyVM::AST::Node(NODE_BLOCK(1) 1:13, 1:21
#<RubyVM::AST::Node(NODE_VCALL(38) 1:13, 1:16 ): >,
#<RubyVM::AST::Node(NODE_VCALL(38) 1:18, 1:21 ): >): >,
#<RubyVM::AST::Node(NODE_BLOCK(1) 1:27, 1:37
#<RubyVM::AST::Node(NODE_VCALL(38) 1:27, 1:31 ): >,
#<RubyVM::AST::Node(NODE_VCALL(38) 1:33, 1:37 ): >): >): >): >
```
# Implementation
See `ast_node_pp.patch` from the attachment.
# Note
Probably this format of `pp` is not the best. We can improve the format. For example, maybe we can add braces for children node.
If you have any ideas, please tell me the ideas!
---Files--------------------------------
ast_node_pp.patch (2.08 KB)
--
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>