Project

General

Profile

Actions

Bug #21256

open

`it` value is wrapped in an array when that doesn't happen with numbered parameter

Added by Earlopain (Earlopain _) 7 days ago. Updated 2 days ago.

Status:
Assigned
Assignee:
Target version:
-
ruby -v:
ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux]
[ruby-core:121592]

Description

I have the following script:

require "bundler/inline"

gemfile do
  source "https://rubygems.org"

  gem "rspec-core", "3.13.3"
  gem "rspec-expectations", "3.13.3"
end

require "rspec/autorun"
require "rspec/expectations"

RSpec::Matchers.define :example do
  chain(:foo) { pp _1 }
  chain(:bar) { pp it }
end

RSpec.describe "demo" do
  it do
    example.foo(1)
    example.bar(2)
  end
end

It calls two methods were the only difference is that one accesses the argument with _1, the other with it. It prints the following:

1
[2]

So, it for some reason wraps it in an array. I appologise for the reproduction script, it uses rspec and the amount of metaprogramming it uses makes it impossible for me to reduce this further.

When running with parser=parse.y, the expected output is returned (just 2, no array). I also tested against current ruby-dev and it also happens there.

Actions

Also available in: Atom PDF

Like1
Like2Like0