Skip to content

#delete compatibility with from SortedSet from Stdlib #8

@themilkman

Description

@themilkman

Hi,

I run in the following issue using SortedSet as drop in replacement:

3.0.2 :001 > str = "foo";ss = SortedSet.new; ss << str; hsh = { enabled: ss}; hsh[:enabled].delete(nil)
/home/me/.rvm/gems/ruby-3.0.2/gems/set-1.0.2/lib/set.rb:540:in `delete': comparison of NilClass with String failed (ArgumentError)
  from /home/me/.rvm/gems/ruby-3.0.2/gems/set-1.0.2/lib/set.rb:540:in `delete'
  from (irb):1:in `<main>'
  from /home/me/.rvm/rubies/ruby-3.0.2/lib/ruby/gems/3.0.0/gems/irb-1.3.5/exe/irb:11:in `<top (required)>'
  from /home/me/.rvm/rubies/ruby-3.0.2/bin/irb:23:in `load'
  from /home/me/.rvm/rubies/ruby-3.0.2/bin/irb:23:in `<main>'

While with ruby 2.7.4:

2.7.4 :001 > str = "foo";ss = SortedSet.new; ss << str; hsh = { enabled: ss}; hsh[:enabled].delete(nil)
 => #<SortedSet: {"foo"}> 

If I debugged it correctly this is due to RBTree:

3.0.2 :002 >  rb = RBTree["", ""]; rb.delete(0)
(irb):4:in `delete': comparison of Integer with String failed (ArgumentError)
  from (irb):4:in `<main>'
  from /home/me/.rvm/rubies/ruby-3.0.2/lib/ruby/gems/3.0.0/gems/irb-1.3.5/exe/irb:11:in `<top (required)>'
  from /home/me/.rvm/rubies/ruby-3.0.2/bin/irb:23:in `load'
  from /home/me/.rvm/rubies/ruby-3.0.2/bin/irb:23:in `<main>'

Is this mismatch in functionality generally accepted or is it smth that should get solved in sorted_set?

Thanks and cheers!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions