Skip to content

IterableOnce.iterator not available in Scala 2.12.x #493

Closed
@borice

Description

@borice

Scala 2.12:

val t: TraversableOnce[Int] = List(1,2,3)
val tm = t.map(_ + 1)

migrating the above contrived example to Scala 2.13 (according to the @deprecated instructions) leads to:

Scala 2.13:

import scala.collection.compat.IterableOnce

val t: IterableOnce[Int] = List(1,2,3)
val tm = t.iterator.map(_ + 1)  // since t.map was deprecated, requiring t.iterator.map

Trying to cross-compile the Scala 2.13 version to 2.12 using scala-collection-compat, we get a compilation error complaining about .iterator not being a member of TraversableOnce[Int]. Indeed, .iterator is only available on IterableOnce, but not in TraversableOnce. However, TraversableOnce does have a .toIterator method (but it's deprecated in IterableOnce).

Adding a .iterator extension method to TraversableOnce in scala-collection-compat for Scala 2.12- that calls .toIterator would solve the problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions