scala / scala3

The Scala 3 compiler, also known as Dotty.
https://dotty.epfl.ch
Apache License 2.0
5.81k stars 1.05k forks source link

Infinite recursion when matching a function in an enum case with the same name as a method of that enum #19641

Closed kyouko-taiga closed 7 months ago

kyouko-taiga commented 7 months ago

Compiler version

3.3.1

Minimized code

type DiagnosticConsturctor = (Int) => DiagnosticSet

final class Diagnostic

final class DiagnosticSet(elements: List[Diagnostic] = List())

enum Result:
  case Success extends Result
  case Failure(diagnose: DiagnosticConsturctor) extends Result
  def diagnose(n: Int): DiagnosticSet =
    this match
      case Success => DiagnosticSet()
      case Failure(d) => d(n)

@main def drive(): Unit =
  val r : Result = Result.Failure((n) => DiagnosticSet(List(Diagnostic())))
  r.diagnose(1)

Output

Stack overflow

Expectation

The program should run to completion.

My understanding of the issue is that the compiler resolves d to the method defined as member of Result rather than the case value of Failure. The stack trace is very confusing, though, as it reports a ping pong between the call in the match expression and the definition of the Failure case.

Note that a compile-time error is produced if the domain of diagnose is empty:

type DiagnosticConsturctor = () => DiagnosticSet

enum Result:
  case Success extends Result
  case Failure(diagnose: DiagnosticConsturctor) extends Result
  def diagnose(): DiagnosticSet = ???

In this case, the compiler complains that:

overriding method diagnose in class Result of type (): DiagnosticSet; value diagnose of type DiagnosticConsturctor needs override modifier

The reported issue can be fixed by renaming either the case value or the method.

Although this reproducer shows bad class design in Scala (buggy behavior aside), it is representative of a very reasonable setup for developers coming from Swift. Hence it might serve as a reference in the future to remember how Swift users can get intro trouble.

bishabosha commented 7 months ago

in 3.4.0-RC3 this actually causes a compiler crash with -Ysafe-init-global if you copy the code into the repl, press enter, then the second command calls drive() - so maybe we were on the way to catching this? @liufengyun

scala> drive()
Exception in thread "main" scala.MatchError: AnnotatedType(AppliedType(TypeRef(ThisType(TypeRef(NoPrefix,module class immutable)),class List),List(TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),module class rs$line$1$)),class Diagnostic))),ConcreteAnnotation(Apply(Select(New(TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class unchecked)),class uncheckedVariance)]),<init>),List()))) (of class dotty.tools.dotc.core.Types$CachedAnnotatedType)
    at dotty.tools.dotc.transform.init.Util$Call$.unapply(Util.scala:44)
    at dotty.tools.dotc.transform.init.Util$NewExpr$.unapply(Util.scala:64)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1084)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.evalArgs$$anonfun$1(Objects.scala:1535)
    at scala.collection.immutable.List.foreach(List.scala:333)
    at dotty.tools.dotc.transform.init.Objects$.evalArgs(Objects.scala:1554)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1086)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1199)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1216)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.evalExprs$$anonfun$1(Objects.scala:1062)
    at scala.collection.immutable.List.map(List.scala:246)
    at dotty.tools.dotc.transform.init.Objects$.evalExprs(Objects.scala:1062)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1203)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.evalExprs$$anonfun$1(Objects.scala:1062)
    at scala.collection.immutable.List.map(List.scala:250)
    at dotty.tools.dotc.transform.init.Objects$.evalExprs(Objects.scala:1062)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1198)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1224)
    at dotty.tools.dotc.transform.init.Objects$.$anonfun$9$$anonfun$1(Objects.scala:681)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:126)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.$anonfun$9(Objects.scala:684)
    at dotty.tools.dotc.transform.init.Objects$.call(Objects.scala:677)
    at dotty.tools.dotc.transform.init.Objects$.$anonfun$23(Objects.scala:1127)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1127)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.evalExprs$$anonfun$1(Objects.scala:1062)
    at scala.collection.immutable.List.map(List.scala:246)
    at dotty.tools.dotc.transform.init.Objects$.evalExprs(Objects.scala:1062)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1198)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1199)
    at dotty.tools.dotc.transform.init.Objects$.$anonfun$9$$anonfun$1(Objects.scala:681)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:126)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.$anonfun$9(Objects.scala:684)
    at dotty.tools.dotc.transform.init.Objects$.call(Objects.scala:677)
    at dotty.tools.dotc.transform.init.Objects$.$anonfun$28(Objects.scala:1142)
    at dotty.tools.dotc.transform.init.Objects$.cases(Objects.scala:1142)
    at dotty.tools.dotc.transform.init.Objects$.eval$$anonfun$1(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.dotty$tools$dotc$transform$init$Objects$Cache$Data$$_$_$$anonfun$5(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
    at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:519)
    at dotty.tools.dotc.transform.init.Objects$.eval(Objects.scala:1056)
    at dotty.tools.dotc.transform.init.Objects$.init$$anonfun$4(Objects.scala:1665)
    at scala.collection.immutable.List.foreach(List.scala:333)
    at dotty.tools.dotc.transform.init.Objects$.init(Objects.scala:1678)
    at dotty.tools.dotc.transform.init.Objects$State$.iterate$1(Objects.scala:260)
    at dotty.tools.dotc.transform.init.Objects$State$.doCheckObject(Objects.scala:275)
    at dotty.tools.dotc.transform.init.Objects$State$.checkObjectAccess(Objects.scala:302)
    at dotty.tools.dotc.transform.init.Objects$.accessObject(Objects.scala:1020)
    at dotty.tools.dotc.transform.init.Objects$.checkClasses$$anonfun$2(Objects.scala:1033)
    at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:576)
    at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:574)
    at scala.collection.AbstractIterable.foreach(Iterable.scala:933)
    at scala.collection.IterableOps$WithFilter.foreach(Iterable.scala:903)
    at dotty.tools.dotc.transform.init.Objects$.checkClasses(Objects.scala:1033)
    at dotty.tools.dotc.transform.init.Checker.runOn$$anonfun$1(Checker.scala:53)
    at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    at dotty.tools.dotc.core.Phases$Phase.cancellable(Phases.scala:495)
    at dotty.tools.dotc.transform.init.Checker.runOn(Checker.scala:54)
    at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
    at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
    at dotty.tools.dotc.Run.runPhases$1(Run.scala:337)
    at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:348)
    at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:357)
    at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:71)
    at dotty.tools.dotc.Run.compileUnits(Run.scala:357)
    at dotty.tools.dotc.Run.compileUnits(Run.scala:267)
    at dotty.tools.repl.ReplCompiler.compile(ReplCompiler.scala:88)
    at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:309)
    at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:271)
    at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:170)
    at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:173)
    at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:212)
    at dotty.tools.repl.ReplDriver.runBody$$anonfun$1(ReplDriver.scala:186)
    at dotty.tools.runner.ScalaClassLoader$.asContext(ScalaClassLoader.scala:80)
    at dotty.tools.repl.ReplDriver.runBody(ReplDriver.scala:186)
    at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:173)
    at dotty.tools.repl.ReplDriver.tryRunning(ReplDriver.scala:135)
    at dotty.tools.repl.Main$.main(Main.scala:7)
    at dotty.tools.repl.Main.main(Main.scala)
Gedochao commented 7 months ago

Seems like a regression, this runs fine with 3.3.0, I can replicate the StackOverflow with 3.3.1 and above.

The actual output is as follows:

scala-cli run --server=false replication.scala -S 3.3.1
Exception in thread "main" java.lang.StackOverflowError
        at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
        at Result$Failure._1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)
        at Result$Failure._1$$anonfun$adapted$1(replication.scala:9)
        at Result.diagnose(replication.scala:13)
        at Result$Failure._1$$anonfun$1(replication.scala:9)

(--server=false isn't actually necessary, getting the same output via Bloop) Btw. this happens when the code is being run, the actual compilation goes through.

Gedochao commented 7 months ago

Assuming this is a regression, as it runs fine on 3.3.0.

scala-cli run replication.scala -S 3.3.0
# Compiling project (Scala 3.3.0, JVM (17))
# Compiled project (Scala 3.3.0, JVM (17))

I'm tagging it as a compiler crash as well, even though that seems to only be replicable in the REPL.

odersky commented 7 months ago

It's probably an issue in Namer. We generate a binding

def _1 = diagnose

in class Failure. That's an untyped tree. When type-checking that tree we somehow resolve to the diagnose method that was inherited from Result. We should resolve to the diagnose in Failure instead. I am not sure why that happens. The diagnose in failure should be known when we typecheck the _1 accessor and should take precedence over the inherited diagnose.

odersky commented 7 months ago

Can we get a bisect on this?

odersky commented 7 months ago

It might be this PR:

https://github.com/lampepfl/dotty/pull/18286

At least when I turn off

        val compat0 = pt.dealias match
          case defn.FunctionNOf(args, resType, _) =>
            narrowByTypes(alts, args, resType)
          case _ =>
            Nil
        if (compat0.isEmpty) then

in Applications.scala the code compiles correctly.

Changes in overloading resolution are very very sensitive, since any wrong measure leads to wrong runtime code, as in this case here. I do not know the history of this change, it seems it was introduced to fix another regression. Before patching this further it would be good to get a sense for why this code is here and what it does.

@NicolasStucki, @jchyb Can you provide some detail on this?