| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
Restore `rescue`-context from the outer context.
`retry` targets the next outer block except for between `rescue` and
`else` or `ensure`, otherwise, if there is no enclosing block, it
should be syntax error.
|
|
|
|
|
|
All kind of AST nodes use same struct RNode, which has u1, u2, u3 union members
for holding different kind of data.
This has two problems.
1. Low flexibility of data structure
Some nodes, for example NODE_TRUE, don’t use u1, u2, u3. On the other hand,
NODE_OP_ASGN2 needs more than three union members. However they use same
structure definition, need to allocate three union members for NODE_TRUE and
need to separate NODE_OP_ASGN2 into another node.
This change removes the restriction so make it possible to
change data structure by each node type.
2. No compile time check for union member access
It’s developer’s responsibility for using correct member for each node type when it’s union.
This change clarifies which node has which type of fields and enables compile time check.
This commit also changes node_buffer_elem_struct buf management to handle
different size data with alignment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ripper dispatcher methods always escape `Qundef` by `get_value`.
|
|
|
|
|
|
|
|
NODE_ARGS, NODE_ARYPTN, NODE_FNDPTN manage memory of their
structure by imemo tmpbuf Object.
However rb_ast_struct has reference to NODE. Then these
memory can be freed directly when rb_ast_struct is freed.
This commit reduces parser's dependency on CRuby functions.
|
|
Remove tagging to the component for each reference.
|
|
Keep the other types, which not having setter macros for ripper.
|
|
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8440
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8440
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8440
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8440
|
|
|
|
|
|
So that it is not ncessary to specify the type each time.
Notes:
Merged: https://github.com/ruby/ruby/pull/8410
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8408
Merged-By: nobu <nobu@ruby-lang.org>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/7615
|
|
call
Allow compstmt in the first argument of command call wrapped with parenthesis
like following arguments with parenthesis.
Notes:
Merged: https://github.com/ruby/ruby/pull/8347
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8343
|
|
expression
Notes:
Merged: https://github.com/ruby/ruby/pull/8320
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8291
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8293
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8292
|
|
The token just after BOM needs to position at column 0, so that the
indentation matches closing line.
Notes:
Merged: https://github.com/ruby/ruby/pull/8281
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8289
|
|
This header defines several essential macros.
Notes:
Merged: https://github.com/ruby/ruby/pull/8274
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8267
|
|
Appreciation to the reporter, Huichiao Tsai <hctsai.cs10@nycu.edu.tw>.
|
|
[Bug #19836]
The parser does not free the chain of `struct vtable`, which causes
memory leaks.
The following script reproduces this issue:
```
10.times do
100_000.times do
Ripper.parse("-> {")
end
puts `ps -o rss= -p #{$$}`
end
```
Notes:
Merged: https://github.com/ruby/ruby/pull/8192
|
|
[Bug #19835]
The parser does not free the `tbl` of the `struct vtable` when there are
leftover `lvtbl` in the parser. This causes a memory leak.
The following script reproduces this issue:
```
10.times do
100_000.times do
Ripper.parse("class Foo")
end
puts `ps -o rss= -p #{$$}`
end
```
Notes:
Merged: https://github.com/ruby/ruby/pull/8192
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/8144
|