Consider: ``` @pub trait Iterator { fun next(): Option[Int32]; // this should be made generic } ``` Ideally we would have: ``` @pub trait Iterator[T] { fun next(): Option[T]; } ``` Which compiles, but a trait impls like ... ``` impl Iterator[Int32] for NoInt32Iterator { fun next(): Option[Int32] = None[Int32]; } ``` ... fails compilation with: ``` return types `Option[Int32]` and `Option[T]` do not match ``` Feels like we forget specializing the return type.
Consider:
Ideally we would have:
Which compiles, but a trait impls like ...
... fails compilation with:
Feels like we forget specializing the return type.