-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
Based on the OpenCB failure in sagifogel/proptics
coused by wrong semi-automatic migration using -rewrite -source:3.x-migration
- buid logs
Compiler version
All Scala 3.4+ version
Minimized code
//> using options -source:3.4-migration -rewrite
abstract class IndexedTraversal_[I, S, T, A, B]:
final def overF[F[_]](f: ((A, I)) => F[B])(s: S): F[T] = ???
type Id[A] = A
trait IndexedTraversalLaws[I, S, A] {
def indexedTraversal: IndexedTraversal_[I, S, S, A, A]
def consistentFoci(s: S, f: (A, I) => A, g: (A, I) => A) =
(indexedTraversal.overF[Id](f.tupled) _ compose indexedTraversal.overF[Id](g.tupled))(s)
???
}
Rewritte patch:
@@ -9,6 +9,6 @@ trait IndexedTraversalLaws[I, S, A] {
def indexedTraversal: IndexedTraversal_[I, S, S, A, A]
def consistentFoci(s: S, f: (A, I) => A, g: (A, I) => A) =
- (indexedTraversal.overF[Id](f.tupled) _ compose indexedTraversal.overF[Id](g.tupled))(s)
+ ((() => indexedTraversal.overF[Id](f.tupled)) compose indexedTraversal.overF[Id](g.tupled))(s)
???
}
Output on next compilation
Compiling project (Scala 3.7.3, JVM (21))
[error] ./test2.scala:12:6
[error] value compose is not a member of () => S => Id[S]
[error] ((() => indexedTraversal.overF[Id](f.tupled)) compose indexedTraversal.overF[Id](g.tupled))(s)
[error] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expectation
Rewrite should produce a code that compiles