CARVIEW |
Select Language
HTTP/2 200
x-amz-id-2: WeNeIZo5d3qlILYdHXm3/Yk2rbUN7GqM3IYd1zOkGonq3TNedNHGw70uncoXhckDqKX+XOetD4I=
x-amz-request-id: T4BQ0412RX4A31K7
last-modified: Wed, 04 Jun 2025 19:41:24 GMT
etag: "0d930139b54093f49d99ea8c251b2e4f"
x-amz-server-side-encryption: AES256
server: AmazonS3
content-encoding: gzip
via: 1.1 varnish, 1.1 varnish
content-type: text/plain; charset=utf-8
accept-ranges: bytes
age: 0
date: Wed, 23 Jul 2025 16:37:55 GMT
x-served-by: cache-tyo11966-TYO, cache-bom-vanm7210097-BOM
x-cache: MISS, MISS
x-cache-hits: 0, 0
x-timer: S1753288675.424538,VS0,VE387
vary: Accept-Encoding
content-length: 730
From: "tenderlovemaking (Aaron Patterson) via ruby-core"
Date: 2025-06-04T19:31:21+00:00
Subject: [ruby-core:122411] [Ruby Bug#21396] Set#initialize should call Set#add on items passed in
Issue #21396 has been reported by tenderlovemaking (Aaron Patterson).
----------------------------------------
Bug #21396: Set#initialize should call Set#add on items passed in
https://bugs.ruby-lang.org/issues/21396
* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
```ruby
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]
#
true
```
On Ruby master the output is this:
```
> make run
./miniruby -I./lib -I. -I.ext/common -r./arm64-darwin24-fake ./test.rb
#
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
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/