Project

General

Profile

Actions

Bug #21396

open

Set#initialize should call Set#add on items passed in

Bug #21396: Set#initialize should call Set#add on items passed in

Added by tenderlovemaking (Aaron Patterson) 5 months ago. Updated 4 months ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:122411]

Description

class Foo < Set def add(item) = super(item.bytesize) end x = Foo.new(["foo"]) p x p x.include?(3) 

On Ruby 3.4 the output is this:

> ruby -v test.rb ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24] #<Foo: {3}> true 

On Ruby master the output is this:

> make run ./miniruby -I./lib -I. -I.ext/common -r./arm64-darwin24-fake ./test.rb #<Set: {"foo"}> false 

The bug is that initialize is not calling add for the elements passed in, so the subclass doesn't get a chance to change them.

I've sent a PR here: https://github.com/ruby/ruby/pull/13518


Related issues 1 (1 open0 closed)

Actions

Also available in: PDF Atom