Skip to content

Compiler crash when attempt to write async unfold signature with incorrect number of parameters #12640

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
rssh opened this issue May 28, 2021 · 2 comments · Fixed by #14873
Closed

Comments

@rssh
Copy link
Contributor

rssh commented May 28, 2021

Compiler version

3.0.0

Minimized code

package x

trait CpsMonad[F[_]]:
  def pure[A](x:A): F[A]
  def flatMap[A,B](fa:F[A])(f: A=>F[B]): F[B]

abstract sealed class CpsStream[-F[_],+T]

case class Cons[F[_],T](head:T, tailFun: ()=>F[CpsStream[F,T]]) extends CpsStream[F,T]

case class Empty[F[_]]() extends CpsStream[F,Nothing]

def unfold[S,F[_]:CpsMonad,T](s0:S)(f:S => F[Option[(S,T)]]):F[CpsStream[F,T]] =
      summon[CpsMonad[F]].flatMap(f(s0)){
         case Some(s1,a) => Cons(a, () => unfold(s1,f))
         case None => summon[CpsMonad[F]].pure(Empty[F]())
      }

Output (click arrow to expand)

[info] welcome to sbt 1.5.2 (N/A Java 15.0.2)
[info] loading global plugins from /Users/rssh/.sbt/1.0/plugins
[info] loading project definition from /Users/rssh/tests/dotty/crash-asyncstream/project
[info] loading settings for project root from build.sbt ...
[info] set current project to incorrect-notfound (in build file:/Users/rssh/tests/dotty/crash-asyncstream/)
[info] Executing in batch mode. For better performance use sbt's shell
[info] compiling 1 Scala source to /Users/rssh/tests/dotty/crash-asyncstream/target/scala-3.0.0/classes ...
java.lang.StackOverflowError while compiling /Users/rssh/tests/dotty/crash-asyncstream/src/main/scala/x/X.scala
[error] ## Exception when compiling 1 sources to /Users/rssh/tests/dotty/crash-asyncstream/target/scala-3.0.0/classes
[error] java.lang.StackOverflowError
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5628)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5654)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:191)
[error] dotty.tools.dotc.typer.Inferencing$IsFullyDefinedAccumulator.apply(Inferencing.scala:168)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy22$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$1(Types.scala:5640)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:5644)
[error] dotty.tools.dotc.typer.Inferencing
....
@rssh
Copy link
Contributor Author

rssh commented May 28, 2021

Note, that 'unfold(s1,f)' is incorrect. (shoulf be unfold(s1)(f), then not crashed)

@rssh rssh changed the title Compiler crash when attempt to write async unfold signature with context bound Compiler crash when attempt to write async unfold signature with incorrect number of parameters May 28, 2021
odersky added a commit to dotty-staging/dotty that referenced this issue May 30, 2021
@odersky
Copy link
Contributor

odersky commented May 30, 2021

With #12649 we see a bit more:

-- Error: i12640.scala:15:42 ---------------------------------------------------
15 |         case Some(s1,a) => Cons(a, () => unfold(s1,f))
   |                                          ^
   |Recursion limit exceeded.
   |Maybe there is an illegal cyclic reference?
   |If that's not the case, you could also try to increase the stacksize using the -Xss JVM option.
   |A recurring operation is (inner to outer):
   |
   |  traverse  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |  Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |]
   |  traverse  ((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |  traverse  (((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |) => R
   |  traverse  ([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R)
   |  traverse  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |  Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |]
   |  traverse  ((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |  traverse  (((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |) => R
   |  traverse  ([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R)
   |  traverse  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |  Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |]
   |  traverse  ((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |  ...
   |
   |  traverse  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |  Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |]
   |  traverse  ((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |  traverse  (((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |) => R
   |  traverse  [R] =>> (((S, S => F[Option[(S, T)]])) => 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), 
   |    Option[((S, S => F[Option[(S, T)]]), Nothing)]
   |  ]
   |) => R
   |  traverse  ([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R)
   |  traverse  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), T]
   |  traverse  [T] =>> 
   |  x.CpsStream[([R] =>> (((S, S => F[Option[(S, T)]])) => Nothing) => R), T]
   |  traverse  Nothing
   |  traverse  Nothing[Option[((S, S => F[Option[(S, T)]]), Nothing)]]
   |  traverse  ((S, S => F[Option[(S, T)]])) => 
   |  Nothing[Option[((S, S => F[Option[(S, T)]]), Nothing)]]

I suspect these crazily complex types arise from partial higher-kinded type inference, but can't dig further. Maybe @smarter or @milessabin have an idea what might go wrong here?

odersky added a commit to dotty-staging/dotty that referenced this issue Apr 7, 2022
michelou pushed a commit to michelou/scala3 that referenced this issue Apr 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants