Skip to content

Need specs for each_with_index + Enumerable method interaction #1283

@headius

Description

@headius

There are at least three cases from jruby/jruby#8345 where an interaction between an each_with_index Enumerator and an Enumerable method was or is broken in JRuby:

  • to_h
  • uniq
  • zip

Of these, we've fixed uniq and I have a fix in process for to_h but I'm not sure where to put specs for this kind of interaction.

My first thought was in Enumerable specs, since that's where I had to fix things, but I have not come up with a reproduction that doesn't use an each_with_index enumerator. All cases should be specified, though only a few exhibited this differing behavior between CRuby and JRuby.

Running the same example script against TruffleRuby shows similar issues, so I think getting these cases spec'ed would benefit all impls:

$ diff truffleruby_enum_args.txt ruby_enum_args.txt                  
1c1
< truffleruby 24.2.1, like ruby 3.3.7, Oracle GraalVM Native [arm64-darwin20]
---
> ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [arm64-darwin23]
25c25
< filter_map [[1, 2], 0]
---
> filter_map [1, 2]
65c65
< to_h [[1, 2], 0]
---
> to_h [1, 2]
67c67
< uniq [[1, 2], 0]
---
> uniq [1, 2]
70c70
< zip [[[1, 2], 0]]
---
> zip [[1, 2], 0]

It's also possible CRuby is wrong to have special behavior for these methods.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions