Kevin Newton
cb9a47f2ac
[PRISM] Fix branchif ADD_INSN1
2024-01-26 16:46:31 -05:00
Peter Zhu
a120529020
[PRISM] Fix loop in rescue blocks
...
Fixes ruby/prism#2250 .
Co-Authored-By: Kevin Newton <kddnewton@gmail.com>
2024-01-26 16:07:24 -05:00
Peter Zhu
59bb78ebd0
[PRISM] Fix for s390x
...
On s390x, a long is 8 bytes. st_data_t is an unsigned long but
pm_constant_id_t is a 4 byte integer. We need to cast it to st_data_t
when passing it to ST functions.
2024-01-26 15:41:06 -05:00
Peter Zhu
3d996e827f
[PRISM] Keyword arguments incorrectly passed as mutable
...
Fixes ruby/prism#2279 .
2024-01-26 14:58:29 -05:00
Matt Valentine-House
e452caac10
[PRISM] Fix next inside rescue
2024-01-25 15:10:52 -05:00
Kevin Newton
1301422dfe
[PRISM] Fix VM_CALL_ARGS_SPLAT_MUT failures
2024-01-25 11:11:50 -05:00
Peter Zhu
f769d68a69
[PRISM] Fix getblockparamproxy for forwarding arguments
2024-01-24 17:32:43 -05:00
Peter Zhu
7d61454f2e
[PRISM] Fix method calls in keyword arguments
...
Fixes ruby/prism#2248 .
2024-01-24 15:18:06 -05:00
Aaron Patterson
94f3f9502c
Fix repeated block param
...
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Aaron Patterson
1817af5074
Fix local table size / index for repeated kwrest
...
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Aaron Patterson
13c76e40d3
Fix local table size and variable offset for repeated keywords
...
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Aaron Patterson
8b7e78f156
Fix local table size and index for required post underscore
...
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Aaron Patterson
bb6af9287b
Fix local table space for *_
...
We need to make sure there is enough room in the local table for
repeated `*_` parameters
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Aaron Patterson
03f76f098a
Fix repeated optional _ parameters
...
Ensure there is enough space in the local table for repeated optional
parameters.
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Aaron Patterson
29c3ec3d49
Fix required positional repeated _ parameters
...
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 12:04:44 -08:00
Kevin Newton
44c337a397
[PRISM] Support __LINE__, __FILE__, and __ENCODING__ in patterns, fix pinned expressions
2024-01-24 15:02:32 -05:00
Kevin Newton
c888b8d63b
[PRISM] Handle implicit lvar write in hash pattern
2024-01-24 14:18:33 -05:00
Peter Zhu
020fe6e0ca
[PRISM] Fix forwarding from within block
...
Fixes ruby/prism#2253 .
2024-01-24 14:18:25 -05:00
Peter Zhu
dc8fb7d97f
[PRISM] Fix crash in anonymous block with forwarding arguments
...
Fixes ruby/prism#2262 .
2024-01-24 13:42:21 -05:00
Aaron Patterson
578ff32611
Move filling in the rest of the locals to the end
2024-01-24 09:40:30 -08:00
Aaron Patterson
7a33a1aee2
Insert all locals in the locals index table
...
Prism provides an index (local_body_index) which is supposed to point at
the start of locals declared in the method body. Prism assumed that
method body locals would only occur _after_ parameter names.
Unfortunately this assumption is not correct, which meant that we would
in some cases not insert all locals in the local table. This commit
iterates over locals a second time, inserting any that didn't get
inserted on the first pass.
Fixes: https://github.com/ruby/prism/issues/2245
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
2024-01-24 09:40:30 -08:00
Peter Zhu
927928badb
[PRISM] Fix anonymous keyword arguments
...
Fixes ruby/prism#2256 .
2024-01-24 11:41:08 -05:00
Kevin Newton
4220bdba39
[PRISM] Remove dead code from prism_compile.c
...
Previously, we were using the main pm_compile_node switch to compile
target nodes. Eventually we switched to pm_compile_target_node and
updated all the call sites. As such, all of this has become dead
code.
However, the multi target code was reused for both parameters and
multi writes (it was just incorrect for multi writes). So that code
has now been moved into its own function that is more specific to
destructured parameters (and has more assertions to that effect).
Overall now you should not see target nodes when you call into
pm_compile_node, since they are more specialized and require more
special handling.
2024-01-24 11:18:58 -05:00
Kevin Newton
767f5d045f
[PRISM] Use lvar depths for starting
2024-01-24 10:37:08 -05:00
Peter Zhu
529700d314
[PRISM] Nested MultiWriteNode with method calls
...
Fixes ruby/prism#2247 .
2024-01-24 10:08:25 -05:00
Peter Zhu
909a710a69
[PRISM] Fix anonymous splat nodes
...
Fixes ruby/prism#2257 .
2024-01-23 17:45:51 -05:00
Peter Zhu
cecf42601a
[PRISM] Fix block fowarding
2024-01-23 15:23:13 -05:00
Peter Zhu
333f4b4930
[PRISM] Support block parameters with no name
...
Fixes ruby/prism#2249 .
2024-01-23 15:23:13 -05:00
Aaron Patterson
cfa15bb173
Handle trailing commas on blocks
...
We need to set a special flag on block iseqs when there is a trailing
comma.
Fixes: https://github.com/ruby/prism/issues/2244
2024-01-22 16:35:58 -08:00
Aaron Patterson
270a46e392
Check keyword parameters correctly
...
We weren't checking the right offsets when compiling methods with
keyword parameters that had complex code.
Fixes: https://github.com/ruby/prism/issues/2228
2024-01-22 16:02:41 -08:00
Peter Zhu
708fa77404
[PRISM] Fix keyword arguments in IndexOrWriteNode
...
Fixes ruby/prism#2236 .
2024-01-22 15:07:52 -08:00
Peter Zhu
1838dbf6e7
[PRISM] Fix splat and block in aset
2024-01-22 15:07:39 -08:00
Peter Zhu
1847192366
[PRISM] Fix block in aset
...
Fixes ruby/prism#2223 .
2024-01-22 15:07:39 -08:00
Peter Zhu
8065672d99
[PRISM] Force semicolon at the end of PM macros
2024-01-22 15:22:12 -05:00
Peter Zhu
2630941696
[PRISM] Use PM_SWAP macro
2024-01-22 15:21:09 -05:00
Peter Zhu
789de5972b
[PRISM] Use PM_POP macro
2024-01-22 15:16:14 -05:00
Aaron Patterson
7db6832225
Fix compiling rescue + ensure
...
When we're compiling begin / rescue / ensure nodes, we need to "wrap"
the code in the begin statements correctly. The wrapping is like this:
(ensure code (rescue code (begin code)))
This patch pulls the each leg in to its own function, then calls the
appropriate wrapping function depending on whether there are ensure /
rescue legs.
Fixes: https://github.com/ruby/prism/issues/2221
2024-01-22 12:02:03 -08:00
Peter Zhu
dbd76d9101
[PRISM] Fix keyword splat in IndexAndWriteNode and IndexOrWriteNode
...
Fixes ruby/prism#2232 and ruby/prism#2234 .
2024-01-22 12:56:43 -05:00
Kevin Newton
ab99ce910c
[PRISM] Insert concatarray for index targets with splat
2024-01-22 12:55:06 -05:00
Kevin Newton
e5f8585a29
[PRISM] Fix line for leave instructions
2024-01-22 12:54:32 -05:00
Peter Zhu
a7af34fa8b
[PRISM] Fix keywords arguments in IndexAndWriteNode
...
Fixes ruby/prism#2233 .
2024-01-22 11:26:21 -05:00
Kevin Newton
6401f282d2
[PRISM] Fix up source line for 1-indexed line numbers
2024-01-22 11:21:04 -05:00
Kevin Newton
d68aaa6672
[PRISM] Freeze regex literals in iseqs
2024-01-22 11:12:38 -05:00
Peter Zhu
580429d27c
[PRISM] Fix incorrect ordering of MultiTargetNode
...
Fixes ruby/prism#2218 .
2024-01-22 10:51:43 -05:00
Matt Valentine-House
2abf153016
[PRISM] Add TP call/return events to method ISEQs
2024-01-22 09:40:52 -05:00
Kevin Newton
99d6e2f1ee
[PRISM] Revisit target nodes
2024-01-19 20:12:07 -05:00
eileencodes
ed50161bd6
[PRISM] Fix ensure code running twice
...
Fixes : ruby/prism#2212
2024-01-19 13:04:01 -08:00
Aaron Patterson
4778b0eeda
Fix kwarg ordering
...
Required keyword arguments need to come first.
Fixes: https://github.com/ruby/prism/issues/2158
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
2024-01-19 12:32:20 -08:00
Peter Zhu
740f0b52e0
[PRISM] Fix typo with pm_scope_node_destroy
...
We need to run the pm_scope_node_destroy after compiling the iseq.
2024-01-19 14:09:32 -05:00
Aaron Patterson
efe4b8ac0f
Fix ensure code when running break in a while loop
...
We need to run ensure code when breaking from a while loop
Co-authored-by: John Hawthorn <jhawthorn@github.com>
Co-authored-by: Kevin Newton <kddnewton@gmail.com>
2024-01-19 09:35:36 -08:00