Skip to content
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

"assertion failed: orphan parameter reference" when calling method with implicit parameters (one with and one without default value) #8424

Closed
ohze opened this issue Mar 3, 2020 · 9 comments · Fixed by #14862

Comments

@ohze
Copy link

ohze commented Mar 3, 2020

minimized code

git clone -b dotty-bug git@github.com:ohze/akka.git
cd akka
sbt "project akka-testkit" compile

:( I can't create a minimized code to reproduce the error.

Crash output (click arrow to expand)

Error while emitting TestActorRef.scala
[info] exception occurred while compiling /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala-3/akka/testkit/TestActorRef.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/ExplicitlyTriggeredScheduler.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/JavaSerializable.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/SocketUtil.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestActors.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestBarrier.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestEventListener.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestException.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestFSMRef.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestJavaSerializer.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestKit.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestKitExtension.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestLatch.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/javadsl/EventFilter.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/javadsl/TestKit.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/package.scala
java.util.NoSuchElementException: class Object while compiling /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala-3/akka/testkit/TestActorRef.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/ExplicitlyTriggeredScheduler.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/JavaSerializable.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/SocketUtil.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestActors.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestBarrier.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestEventListener.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestException.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestFSMRef.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestJavaSerializer.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestKit.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestKitExtension.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/TestLatch.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/javadsl/EventFilter.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/javadsl/TestKit.scala, /Users/thanhbv/ohze/oss/akka/akka-testkit/src/main/scala/akka/testkit/package.scala
[error] ## Exception when compiling 17 sources to /Users/thanhbv/ohze/oss/akka/akka-testkit/target/scala-0.23/classes
[error] java.util.NoSuchElementException: class Object
[error] scala.collection.mutable.AnyRefMap$ExceptionDefault.apply(AnyRefMap.scala:495)
[error] scala.collection.mutable.AnyRefMap$ExceptionDefault.apply(AnyRefMap.scala:494)
[error] scala.collection.mutable.AnyRefMap.apply(AnyRefMap.scala:205)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.load(BCodeSkelBuilder.scala:396)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:393)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments$$anonfun$1(BCodeBodyBuilder.scala:1052)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:305)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments(BCodeBodyBuilder.scala:1052)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:742)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:339)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:919)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:410)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:919)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:410)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.emitNormalMethodBody$1(BCodeSkelBuilder.scala:597)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:630)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:501)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen$$anonfun$1(BCodeSkelBuilder.scala:503)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:305)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:503)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genPlainClass(BCodeSkelBuilder.scala:109)
[error] dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:217)
[error] dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:184)
[error] dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:514)
[error] dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:480)
[error] dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:51)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:318)
[error] scala.collection.immutable.List.map(List.scala:219)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:319)
[error] dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:55)
[error] dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:167)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] dotty.tools.dotc.Run.runPhases$5(Run.scala:177)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:185)
[error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:64)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:192)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:129)
[error] dotty.tools.dotc.Run.compile(Run.scala:112)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:36)
[error] dotty.tools.dotc.Driver.process(Driver.scala:189)
[error] dotty.tools.dotc.Main.process(Main.scala)
[error] xsbt.CachedCompilerImpl.run(CachedCompilerImpl.java:69)
[error] xsbt.CompilerInterface.run(CompilerInterface.java:41)
[error] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.lang.reflect.Method.invoke(Method.java:498)
[error] sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:248)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:122)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:95)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:91)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:186)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3$adapted(MixedAnalyzingCompiler.scala:77)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:215)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:77)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:146)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:343)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:343)
[error] sbt.internal.inc.Incremental$.doCompile(Incremental.scala:120)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:100)
[error] sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:180)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:98)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:102)
[error] sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:155)
[error] sbt.internal.inc.Incremental$.compile(Incremental.scala:92)
[error] sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:75)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:348)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:301)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:168)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:248)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:74)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1762)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1735)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:67)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:281)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19)
[error] sbt.Execute.work(Execute.scala:290)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:281)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] java.lang.Thread.run(Thread.java:748)
@ohze
Copy link
Author

ohze commented Mar 3, 2020

maybe related to #5044

@anatoliykmetyuk anatoliykmetyuk added the stat:needs minimization Needs a self contained minimization label Mar 3, 2020
@smarter
Copy link
Member

smarter commented Mar 3, 2020

:( I can't create a minimized code to reproduce the error.

Is there anything in particular which is preventing you from minimizing it ? A good strategy is to replace the body of methods with ??? where possible, then start deleting code.

@giabao
Copy link

giabao commented Mar 4, 2020

I tried that way but the simplified code is compiled successfully 🤪

Edit: Oh. To clear, I am @ohze.
(I use 2 github accounts and just now, because a specific reason relate to vovid-19 😢😁, I have to use this account)

@griggt
Copy link
Collaborator

griggt commented Sep 26, 2020

Minimized:

trait T
trait U

class Test(x: Any)(using val t: T = ???)(using val u: U = ???, disregard: Any = ???)

object Test {
  def apply() = new Test(???)
}
[info] Compiling 1 Scala source to /src/dotty-issues/i8424/target/scala-0.23/classes ...
Error while emitting Main.scala
[info] exception occurred while compiling /src/dotty-issues/i8424/src/main/scala/Main.scala
java.util.NoSuchElementException: class Object while compiling /src/dotty-issues/i8424/src/main/scala/Main.scala
[error] ## Exception when compiling 1 sources to /src/dotty-issues/i8424/target/scala-0.23/classes
[error] java.util.NoSuchElementException: class Object
[error] scala.collection.mutable.AnyRefMap$ExceptionDefault.apply(AnyRefMap.scala:495)
[error] scala.collection.mutable.AnyRefMap$ExceptionDefault.apply(AnyRefMap.scala:494)
[error] scala.collection.mutable.AnyRefMap.apply(AnyRefMap.scala:205)
[error] dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.load(BCodeSkelBuilder.scala:396)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:393)
[error] dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadArguments$$anonfun$1(BCodeBodyBuilder.scala:1052)
...

The , disregard: Any = portion was taken verbatim from the reporting codebase, although a complex match expression was originally on the RHS.

Note that this issue was filed against Dotty 0.23.0-bin-20200301-d989caf-NIGHTLY. I have not yet tried more recent versions.

@griggt
Copy link
Collaborator

griggt commented Sep 26, 2020

Update: tested on newer versions up through 0.28.0-bin-20200924-7ee3a20-NIGHTLY. Still crashes, although the error message changed beginning with 0.25.0.

Output (click to expand)
error when pickling type A
error when pickling tree A
error when pickling tree $conforms[A]
error when pickling tree disregard = $conforms[A]
error when pickling tree new Test(x$1)(using t$1)(using Test.$lessinit$greater$default$3(x$1)(t$1), 
  disregard = $conforms[A]
)
error when pickling tree {
  val x$1: Nothing = ???
  val t$1: Nothing = Test.$lessinit$greater$default$2(x$1)
  new Test(x$1)(using t$1)(using Test.$lessinit$greater$default$3(x$1)(t$1), 
    disregard = $conforms[A]
  )
}
error when pickling tree def apply(): Test = 
  {
    val x$1: Nothing = ???
    val t$1: Nothing = Test.$lessinit$greater$default$2(x$1)
    new Test(x$1)(using t$1)(using Test.$lessinit$greater$default$3(x$1)(t$1), 
      disregard = $conforms[A]
    )
  }
error when pickling tree () extends Object() { this: Test.type =>
  private def writeReplace(): AnyRef = 
    new scala.runtime.ModuleSerializationProxy(classOf[Test.type])
  def $lessinit$greater$default$2(x: Any): Nothing = ???
  def $lessinit$greater$default$3(x: Any)(using t: T): Nothing = ???
  def $lessinit$greater$default$4(x: Any)(using t: T): Nothing = ???
  def apply(): Test = 
    {
      val x$1: Nothing = ???
      val t$1: Nothing = Test.$lessinit$greater$default$2(x$1)
      new Test(x$1)(using t$1)(using Test.$lessinit$greater$default$3(x$1)(t$1)
        , 
      disregard = $conforms[A])
    }
}
error when pickling tree @scala.annotation.internal.SourceFile("Main.scala") final module class Test$()
   extends
 Object() { this: Test.type =>
  private def writeReplace(): AnyRef = 
    new scala.runtime.ModuleSerializationProxy(classOf[Test.type])
  def $lessinit$greater$default$2(x: Any): Nothing = ???
  def $lessinit$greater$default$3(x: Any)(using t: T): Nothing = ???
  def $lessinit$greater$default$4(x: Any)(using t: T): Nothing = ???
  def apply(): Test = 
    {
      val x$1: Nothing = ???
      val t$1: Nothing = Test.$lessinit$greater$default$2(x$1)
      new Test(x$1)(using t$1)(using Test.$lessinit$greater$default$3(x$1)(t$1)
        , 
      disregard = $conforms[A])
    }
}
error when pickling tree package <empty> {
  @scala.annotation.internal.SourceFile("Main.scala") class Test(x: Any)(using 
    t: T
  )(using u: U, disregard: Any) extends Object() {
    private[this] val x: Any
    given val t: T
    given val u: U
    private[this] given val disregard: Any
  }
  final lazy module val Test: Test$ = new Test$()
  @scala.annotation.internal.SourceFile("Main.scala") final module class Test$()
     extends
   Object() { this: Test.type =>
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(classOf[Test.type])
    def $lessinit$greater$default$2(x: Any): Nothing = ???
    def $lessinit$greater$default$3(x: Any)(using t: T): Nothing = ???
    def $lessinit$greater$default$4(x: Any)(using t: T): Nothing = ???
    def apply(): Test = 
      {
        val x$1: Nothing = ???
        val t$1: Nothing = Test.$lessinit$greater$default$2(x$1)
        new Test(x$1)(using t$1)(using 
          Test.$lessinit$greater$default$3(x$1)(t$1)
        , disregard = $conforms[A])
      }
  }
}
exception occurred while compiling Main.scala
java.lang.AssertionError: assertion failed: orphan parameter reference: TypeParamRef(A) while compiling Main.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: orphan parameter reference: TypeParamRef(A)
	at dotty.DottyPredef$.assertFail(DottyPredef.scala:17)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:300)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:175)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:599)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTpt(TreePickler.scala:327)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$38$$anonfun$1(TreePickler.scala:444)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$4(TreePickler.scala:444)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:445)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:471)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$37$$anonfun$1(TreePickler.scala:437)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$3(TreePickler.scala:437)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:438)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$9(TreePickler.scala:478)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:478)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTreeUnlessEmpty(TreePickler.scala:330)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:345)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:347)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:561)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:371)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:371)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$26(TreePickler.scala:587)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:588)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:342)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:347)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:563)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:371)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:371)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$28(TreePickler.scala:597)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:70)
	at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:597)
	at dotty.tools.dotc.core.tasty.TreePickler.pickle$$anonfun$1(TreePickler.scala:766)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:766)
	at dotty.tools.dotc.transform.Pickler.run$$anonfun$3$$anonfun$2(Pickler.scala:69)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.transform.Pickler.run$$anonfun$1(Pickler.scala:105)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.transform.Pickler.run(Pickler.scala:105)
	at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:296)
	at scala.collection.immutable.List.map(List.scala:246)
	at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:297)
	at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:110)
	at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:185)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
	at dotty.tools.dotc.Run.runPhases$5(Run.scala:195)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:203)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:63)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:210)
	at dotty.tools.dotc.Run.compileSources(Run.scala:147)
	at dotty.tools.dotc.Run.compile(Run.scala:129)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:38)
	at dotty.tools.dotc.Driver.process(Driver.scala:195)
	at dotty.tools.dotc.Driver.process(Driver.scala:164)
	at dotty.tools.dotc.Driver.process(Driver.scala:176)
	at dotty.tools.dotc.Driver.main(Driver.scala:203)
	at dotty.tools.dotc.Main.main(Main.scala)

@griggt
Copy link
Collaborator

griggt commented Sep 26, 2020

P.S. I hope not to make a habit of minimizing others' 75KLOC Akka codebases submitted as bug reports. 😬

To all bug reporters: it is very helpful to attempt to minimize your code before submitting! This example shows it can be done!

@griggt
Copy link
Collaborator

griggt commented Sep 26, 2020

Alternatively:

trait T

def test(x: Any)(using t: T = ???)(using u: T = ???, disregard: Any): Any = ???

val a = test(???)

@smarter smarter removed the stat:needs minimization Needs a self contained minimization label Sep 26, 2020
@smarter
Copy link
Member

smarter commented Sep 26, 2020

Amazing minimization @griggt 😅, in your last example we can go a bit further and still get the TreePickler crash:

object Test {
  def test(using u: String = ???, disregard: Any): Any = ???
  val a = test
}

The generated tree for a does look weird:

     val a: Any = Test.test(using Test.test$default$1, disregard = $conforms[A])

$conforms[A] doesn't make sense since there isn't any A in scope, somehow this problem doesn't appear if I do this:

object Test {
  def test(using u: Any = ???, disregard: Any): Any = ???
  val a = test
}

Now the generated tree for a is:

val a: Any = Test.test($conforms[Any], $conforms[Any])

as expected.

@smarter smarter changed the title BCodeSkelBuilder.PlainSkelBuilder.locals.load throw NoSuchElementException "assertion failed: orphan parameter reference" when calling method with implicit parameters (one with and one without default value) Sep 26, 2020
odersky added a commit to dotty-staging/dotty that referenced this issue Jan 7, 2021
odersky added a commit to dotty-staging/dotty that referenced this issue Apr 6, 2022
odersky added a commit that referenced this issue Apr 6, 2022
@griggt
Copy link
Collaborator

griggt commented Apr 6, 2022

It seems that the fix for this was in #13886.

michelou pushed a commit to michelou/dotty 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.

5 participants