summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/prism/translation/ruby_parser.rb2
-rw-r--r--test/prism/fixtures/it.txt2
-rw-r--r--test/prism/ruby/parser_test.rb6
3 files changed, 8 insertions, 2 deletions
diff --git a/lib/prism/translation/ruby_parser.rb b/lib/prism/translation/ruby_parser.rb
index 3808cd3130..1ac394b9f1 100644
--- a/lib/prism/translation/ruby_parser.rb
+++ b/lib/prism/translation/ruby_parser.rb
@@ -1151,7 +1151,7 @@ module Prism
def visit_lambda_node(node)
parameters =
case node.parameters
- when nil, NumberedParametersNode
+ when nil, ItParametersNode, NumberedParametersNode
s(node, :args)
else
visit(node.parameters)
diff --git a/test/prism/fixtures/it.txt b/test/prism/fixtures/it.txt
index 76deb68028..5410b01e71 100644
--- a/test/prism/fixtures/it.txt
+++ b/test/prism/fixtures/it.txt
@@ -1,3 +1,5 @@
x do
it
end
+
+-> { it }
diff --git a/test/prism/ruby/parser_test.rb b/test/prism/ruby/parser_test.rb
index cd52758f2e..2396f4186c 100644
--- a/test/prism/ruby/parser_test.rb
+++ b/test/prism/ruby/parser_test.rb
@@ -181,9 +181,13 @@ module Prism
actual_ast = Prism::Translation::Parser34.new.tokenize(buffer)[0]
it_block_parameter_sexp = parse_sexp {
+ s(:begin,
s(:itblock,
s(:send, nil, :x), :it,
- s(:lvar, :it))
+ s(:lvar, :it)),
+ s(:itblock,
+ s(:lambda), :it,
+ s(:lvar, :it)))
}
assert_equal(it_block_parameter_sexp, actual_ast.to_sexp)