-
Notifications
You must be signed in to change notification settings - Fork 22
Compiler crashes when using a combination of by name parameter, default parameter, and empty argument list #13162
Copy link
Copy link
Open
Labels
Milestone
Description
Reproduction steps
Scala version: 2.13.18
trait Task {
def run(x: Int = 0): Bar
}
trait Foo {
def foo(): Task
}
trait Bar {
def bar(right: Unit): Unit
}
class Test {
def in(testFun: => Any): Unit = ???
in {
val f: Foo = ???
val r = f.foo()
r.run().bar() // good
f.foo().run().bar(()) // good
f.foo().run().bar() // exception
}
}Problem
java.lang.IllegalArgumentException: Could not find proxy for <triedcooking> val f: ShouldEqualbug.this.Foo
Details
rror: java.lang.IllegalArgumentException: Could not find proxy for val f: ShouldEqualbug.Foo in List(value f, method $anonfun$new$1, value <local TestCompilerFail>, class TestCompilerFail, package ShouldEqualbug, package <root>) (currentOwner= value qual$1 )
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:324)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:329)
at scala.Option.getOrElse(Option.scala:201)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:329)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:329)
at scala.Option.getOrElse(Option.scala:201)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:329)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:329)
at scala.Option.getOrElse(Option.scala:201)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:329)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:329)
at scala.Option.getOrElse(Option.scala:201)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:329)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:329)
at scala.Option.getOrElse(Option.scala:201)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:329)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$proxy$4(LambdaLift.scala:329)
at scala.Option.getOrElse(Option.scala:201)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.searchIn$1(LambdaLift.scala:329)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.proxy(LambdaLift.scala:338)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.proxyRef(LambdaLift.scala:378)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.postTransform(LambdaLift.scala:529)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Select.transform(Trees.scala:879)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Apply.transform(Trees.scala:813)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$ValDef.$anonfun$transform$4(Trees.scala:435)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
at scala.reflect.internal.Trees$ValDef.transform(Trees.scala:434)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2625)
at scala.collection.immutable.List.loop$3(List.scala:462)
at scala.collection.immutable.List.mapConserve(List.scala:487)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2623)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:577)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Block.transform(Trees.scala:582)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Select.transform(Trees.scala:879)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Apply.transform(Trees.scala:813)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Block.transform(Trees.scala:582)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.internal.Trees$DefDef.$anonfun$transform$5(Trees.scala:455)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
at scala.reflect.internal.Trees$DefDef.transform(Trees.scala:453)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2625)
at scala.collection.immutable.List.loop$3(List.scala:462)
at scala.collection.immutable.List.mapConserve(List.scala:487)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2623)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:577)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Block.transform(Trees.scala:582)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.api.Trees$Transformer.$anonfun$transformTrees$1(Trees.scala:2594)
at scala.collection.immutable.List.loop$3(List.scala:462)
at scala.collection.immutable.List.mapConserve(List.scala:487)
at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2594)
at scala.reflect.internal.Trees$Apply.transform(Trees.scala:813)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.api.Trees$Transformer.$anonfun$transformStats$2(Trees.scala:2624)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
at scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2624)
at scala.collection.immutable.List.loop$3(List.scala:462)
at scala.collection.immutable.List.mapConserve(List.scala:487)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2623)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:577)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:60)
at scala.reflect.internal.Trees$Template.transform(Trees.scala:570)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.$anonfun$transform$1(TypingTransformers.scala:53)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:53)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2598)
at scala.reflect.internal.Trees$ClassDef.$anonfun$transform$2(Trees.scala:363)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
at scala.reflect.internal.Trees$ClassDef.transform(Trees.scala:362)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:57)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:60)
at scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2625)
at scala.collection.immutable.List.loop$3(List.scala:462)
at scala.collection.immutable.List.mapConserve(List.scala:487)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2623)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:577)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:60)
at scala.reflect.internal.Trees$PackageDef.$anonfun$transform$1(Trees.scala:344)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:32)
at scala.reflect.internal.Trees$PackageDef.transform(Trees.scala:344)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.$anonfun$transform$2(TypingTransformers.scala:55)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:43)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:38)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:55)
at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:309)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:551)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:559)
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:182)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.super$transformUnit(LambdaLift.scala:583)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.$anonfun$transformUnit$1(LambdaLift.scala:583)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:292)
at scala.reflect.internal.SymbolTable.exitingPhase(SymbolTable.scala:314)
at scala.tools.nsc.SubComponent.afterOwnPhase(SubComponent.scala:74)
at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformUnit(LambdaLift.scala:583)
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:32)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:485)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:432)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1559)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1543)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1535)
at scala.tools.nsc.Global$Run.compile(Global.scala:1672)
at scala.tools.nsc.Driver.doCompile(Driver.scala:48)
at scala.tools.nsc.MainClass.doCompile(Main.scala:30)
at scala.tools.nsc.Driver.process(Driver.scala:68)
at scala.tools.nsc.Driver.main(Driver.scala:82)
at scala.tools.nsc.Main.main(Main.scala)
Reactions are currently unavailable