-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
area:inferarea:typeritype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore
Description
Based on Open CB failure for apache/incubator-pekko - build logs
Compiler version
Since 3.4.0-RC1-bin-20231113-0dfe593-NIGHTLY
Bisect points to a196167
Minimized code
import java.util.concurrent.CompletionStage
import scala.concurrent.Future
trait ActorRef[-T]{
def ask[Res](replyTo: ActorRef[Res] => T): Future[Res] = ???
}
implicit final class FutureOps[T](private val f: Future[T]) extends AnyVal {
def asJava: CompletionStage[T] = ???
}
class AskPattern[Req, Res] {
val actor: ActorRef[Req] = ???
val messageFactory: ActorRef[Res] => Req = ???
def failing(): CompletionStage[Res] = actor.ask(messageFactory.apply).asJava
def workaround1(): CompletionStage[Res] = actor.ask[Res](messageFactory.apply).asJava
def workaround2(): CompletionStage[Res] = actor.ask(messageFactory).asJava
val jMessageFactory: java.util.function.Function[ActorRef[Res], Req] = ???
def originalFailingCase(): CompletionStage[Res] = actor.ask(jMessageFactory.apply).asJava
}
Output
-- [E007] Type Mismatch Error: /Users/wmazur/projects/dotty/bisect/main.scala:18:72
18 | def failing(): CompletionStage[Res] = actor.ask(messageFactory.apply).asJava
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Found: java.util.concurrent.CompletionStage[Any]
| Required: java.util.concurrent.CompletionStage[Res]
|
| longer explanation available when compiling with `-explain`
-- [E007] Type Mismatch Error: /Users/wmazur/projects/dotty/bisect/main.scala:23:84
23 | def originalFailingCase(): CompletionStage[Res] = actor.ask(messageFactory.apply).asJava
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| Found: java.util.concurrent.CompletionStage[Any]
| Required: java.util.concurrent.CompletionStage[Res]
|
Expectation
Should compile
Metadata
Metadata
Assignees
Labels
area:inferarea:typeritype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore