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)