- Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
area:typeritype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore
Description
Based on the OpenCB failure in kasiamarek/tyre-scala
- build logs
Compiler version
Last good release: 3.8.0-RC1-bin-20250915-afbb66b-NIGHTLY
First bad release: 3.8.0-RC1-bin-20250916-eb1bb73-NIGHTLY
Bisect points to b1067d9 / #23923
Minimized code
class TyreCompiler[IN <: Tuple, R](val context: Context[R *: IN]): import context.* private class Loop[IS <: Tuple, T]( val context: Context[T *: IS], innerAutomaton: context.Automaton[IS] ) { lazy val fixableStates: List[RefinedInitNonAcceptingState[T, IS]] = innerAutomaton.initStates.map { case is: context.InitNonAcceptingState[?] => new RefinedInitNonAcceptingState[T, IS] { type Tail = is.OS type OS = List[T] *: Tail lazy val state = new NonAcceptingState: val next: List[Transition[OS]] = is.state.next.flatMap(fixTransition[is.OS](fixableStates, _)) } } private def fixTransition[S <: Tuple]( initStates: List[RefinedInitNonAcceptingState[T, IS]], transition: context.Transition[S] ): List[Transition[List[T] *: S]] = ??? private trait RefinedInitNonAcceptingState[T, IS <: Tuple] extends InitNonAcceptingState[IS]: type Tail <: Tuple type OS = List[T] *: Tail lazy val state: NonAcceptingState[OS] } private class Context[R <: Tuple]: sealed trait State[S <: Tuple]: val next: List[Transition[S]] trait NonAcceptingState[S <: Tuple] extends State[S] sealed trait Transition[IS <: Tuple]: def state: State[?] sealed trait InitState[-IS <: Tuple]: type OS <: Tuple def state: State[?] trait InitNonAcceptingState[-IS <: Tuple] extends InitState[IS]: lazy val state: NonAcceptingState[OS] trait Automaton[-IS <: Tuple]: val initStates: List[InitState[IS]]
Output
-- [E007] Type Mismatch Error: /Users/wmazur/projects/scala/community-build3/test.scala:16:74 ----------------------------------------------------------------------------------------------- 16 | is.state.next.flatMap(fixTransition[is.OS](fixableStates, _)) | ^ | Found: (_$1 : Context.this.Transition[? >: Context.this.State[?]#S | is.OS <: Context.this.State[?]#S & is.OS]) | Required: Loop.this.context.Transition[is.OS] | | longer explanation available when compiling with `-explain`
Expectation
Should compile
Metadata
Metadata
Assignees
Labels
area:typeritype:bugregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymore