ruby/prelude.rb
Jeremy Evans 0b07d2a1e3 Deprecate passing arguments to Set#to_set and Enumerable#to_set
Array#to_a, Hash#to_h, Enumerable#to_a, and Enumerable#to_h do not
allow you to specify subclasses.  This has undesired behavior when
passing non-Set subclasses.  All of these are currently allowed, and
none make sense:

```ruby
enum = [1,2,3].to_enum

enum.to_set(Hash)
enum.to_set(Struct.new("A", :a))
enum.to_set(ArgumentError)
enum.to_set(Thread){}
```

Users who want to create instances of a subclass of Set from an
enumerable should pass the enumerable to SetSubclass.new instead of
using to_set.
2025-06-06 01:24:05 +09:00

42 lines
769 B
Ruby

class Binding
# :nodoc:
def irb(...)
begin
require 'irb'
rescue LoadError, Gem::LoadError
Gem::BUNDLED_GEMS.force_activate 'irb'
require 'irb'
end
irb(...)
end
# suppress redefinition warning
alias irb irb # :nodoc:
end
module Kernel
def pp(*objs)
require 'pp'
pp(*objs)
end
# suppress redefinition warning
alias pp pp # :nodoc:
private :pp
end
module Enumerable
# Makes a set from the enumerable object with given arguments.
# Passing arguments to this method is deprecated.
def to_set(*args, &block)
klass = if args.empty?
Set
else
warn "passing arguments to Enumerable#to_set is deprecated", uplevel: 1
args.shift
end
klass.new(self, *args, &block)
end
end