summaryrefslogtreecommitdiff
path: root/lib/prism/debug.rb
diff options
context:
space:
mode:
authorKevin Newton <[email protected]>2023-11-30 20:47:08 -0500
committerKevin Newton <[email protected]>2023-12-01 12:03:09 -0500
commitcdb74d74afb87a0d7048a53aaf12d32516033a3c (patch)
treeb90ab9a755b94de8e55f5f72a6552f3ea4aed3b5 /lib/prism/debug.rb
parent90d9c20a0c0df5565d5f95d5e14c58331fa5922f (diff)
[ruby/prism] Change numbered parameters
Previously numbered parameters were a field on blocks and lambdas that indicated the maximum number of numbered parameters in either the block or lambda, respectively. However they also had a parameters field that would always be nil in these cases. This changes it so that we introduce a NumberedParametersNode that goes in place of parameters, which has a single uint8_t maximum field on it. That field contains the maximum numbered parameter in either the block or lambda. As a part of the PR, I'm introducing a new UInt8Field type that can be used on nodes, which is just to make it a little more explicit what the maximum values can be (the maximum is actually 9, since it only goes up to _9). Plus we can do a couple of nice things in serialization like just read a single byte. https://github.com/ruby/prism/commit/2d87303903
Diffstat (limited to 'lib/prism/debug.rb')
-rw-r--r--lib/prism/debug.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/prism/debug.rb b/lib/prism/debug.rb
index adbc402f32..e275fe1dff 100644
--- a/lib/prism/debug.rb
+++ b/lib/prism/debug.rb
@@ -103,9 +103,14 @@ module Prism
case node
when BlockNode, DefNode, LambdaNode
names = node.locals
-
- params = node.parameters
- params = params&.parameters unless node.is_a?(DefNode)
+ params =
+ if node.is_a?(DefNode)
+ node.parameters
+ elsif node.parameters.is_a?(NumberedParametersNode)
+ nil
+ else
+ node.parameters&.parameters
+ end
# prism places parameters in the same order that they appear in the
# source. CRuby places them in the order that they need to appear