-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
itype:bugitype:crashstat:needs triageEvery issue needs to have an "area" and "itype" labelEvery issue needs to have an "area" and "itype" label
Description
Compiler version
3.8.0-RC1
Minimized code
Modified code from issue #23751
trait TC[X]
object TC {
given t2[T]: TC[T] = ???
given t1[T]: TC[T] = ???
}
class Seq2[T] {
def sorted(using TC[T]): Seq2[T] = ???
}
extension [T](s: Seq2[T])
def f[G](c: Seq2[G]): Unit = ???
object Crash {
val s: Seq2[Int] = ???
s.sorted.f(Seq2())
}Output
assertion failed: wildApprox failed to remove uninstantiated T
Details
scala: ## Exception when compiling 18 sources to /home/alex/scala3-test/target/scala-3.6.4/classes
java.lang.AssertionError: assertion failed: `wildApprox` failed to remove uninstantiated T
scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:672)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6723)
dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6796)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:680)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeAccumulator.op$proxy26$1(Types.scala:6706)
dotty.tools.dotc.core.Types$TypeAccumulator.foldArgs$3(Types.scala:6706)
dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6710)
dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6796)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:680)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6788)
dotty.tools.dotc.typer.ProtoTypes$FunProto.fold(ProtoTypes.scala:614)
dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6758)
dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6796)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:680)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.typer.ProtoTypes$SelectionProto.fold(ProtoTypes.scala:288)
dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6758)
dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6796)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:680)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6795)
dotty.tools.dotc.typer.ProtoTypes$ViewProto.fold(ProtoTypes.scala:671)
dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6758)
dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6796)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:680)
dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.apply(Implicits.scala:686)
dotty.tools.dotc.typer.ImplicitRunInfo.recur$1(Implicits.scala:762)
dotty.tools.dotc.typer.ImplicitRunInfo.computeIScope(Implicits.scala:773)
dotty.tools.dotc.typer.ImplicitRunInfo.implicitScope(Implicits.scala:850)
dotty.tools.dotc.typer.ImplicitRunInfo.implicitScope$(Implicits.scala:624)
dotty.tools.dotc.Run.implicitScope(Run.scala:43)
dotty.tools.dotc.typer.Implicits$ImplicitSearch.implicitScope(Implicits.scala:1795)
dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1680)
dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit$$anonfun$2(Implicits.scala:1764)
dotty.tools.dotc.typer.Implicits$SearchResult.recoverWith(Implicits.scala:430)
dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1750)
dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1791)
dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1113)
dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:864)
dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:151)
dotty.tools.dotc.typer.Implicits.inferView(Implicits.scala:904)
dotty.tools.dotc.typer.Implicits.inferView$(Implicits.scala:864)
dotty.tools.dotc.typer.Typer.inferView(Typer.scala:151)
dotty.tools.dotc.typer.Implicits.viewExists(Implicits.scala:877)
dotty.tools.dotc.typer.Implicits.viewExists$(Implicits.scala:864)
dotty.tools.dotc.typer.Typer.viewExists(Typer.scala:151)
dotty.tools.dotc.typer.ProtoTypes$Compatibility.necessarilyCompatible(ProtoTypes.scala:53)
dotty.tools.dotc.typer.ProtoTypes$Compatibility.necessarilyCompatible$(ProtoTypes.scala:32)
dotty.tools.dotc.typer.Typer.necessarilyCompatible(Typer.scala:151)
dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult(ProtoTypes.scala:111)
dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult$(ProtoTypes.scala:32)
dotty.tools.dotc.typer.Typer.constrainResult(Typer.scala:151)
dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult(ProtoTypes.scala:162)
dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult$(ProtoTypes.scala:32)
dotty.tools.dotc.typer.Typer.constrainResult(Typer.scala:151)
dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:4208)
dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:4276)
dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:4332)
dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:4539)
dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:4825)
dotty.tools.dotc.typer.Typer.adapt(Typer.scala:4065)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3685)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3690)
dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3801)
dotty.tools.dotc.typer.Typer.typeSelectOnTerm$1(Typer.scala:1001)
dotty.tools.dotc.typer.Typer.typedSelect(Typer.scala:1043)
dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3498)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3607)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3685)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3690)
dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3801)
dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1089)
dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1287)
dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:465)
dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:151)
dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3523)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3608)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3685)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3690)
dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3739)
dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3758)
dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:3187)
dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:3511)
dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3515)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3607)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3685)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3690)
dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3712)
dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3758)
dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:3187)
dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:3511)
dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3515)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3607)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3685)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3690)
dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3712)
dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3758)
dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:3320)
dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3557)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3608)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3685)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:3690)
dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3801)
dotty.tools.dotc.typer.TyperPhase.typeCheck$$anonfun$1(TyperPhase.scala:47)
scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
dotty.tools.dotc.core.Phases$Phase.monitor(Phases.scala:510)
dotty.tools.dotc.typer.TyperPhase.typeCheck(TyperPhase.scala:53)
dotty.tools.dotc.typer.TyperPhase.$anonfun$4(TyperPhase.scala:99)
scala.collection.Iterator$$anon$6.hasNext(Iterator.scala:479)
scala.collection.Iterator$$anon$9.hasNext(Iterator.scala:583)
scala.collection.immutable.List.prependedAll(List.scala:155)
scala.collection.immutable.List$.from(List.scala:685)
scala.collection.immutable.List$.from(List.scala:682)
scala.collection.IterableOps$WithFilter.map(Iterable.scala:900)
dotty.tools.dotc.typer.TyperPhase.runOn(TyperPhase.scala:98)
dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:343)
scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
dotty.tools.dotc.Run.runPhases$1(Run.scala:336)
dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:383)
dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:395)
dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
dotty.tools.dotc.Run.compileUnits(Run.scala:395)
dotty.tools.dotc.Run.compileSources(Run.scala:282)
dotty.tools.dotc.Run.compile(Run.scala:267)
dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:196)
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:252)
sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:186)
sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:166)
sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:241)
sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:166)
sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:214)
sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:542)
sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:542)
sbt.internal.inc.Incremental$.$anonfun$apply$3(Incremental.scala:182)
sbt.internal.inc.Incremental$.$anonfun$apply$3$adapted(Incremental.scala:180)
sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:458)
sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:264)
sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:413)
sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:500)
sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:400)
sbt.internal.inc.Incremental$.apply(Incremental.scala:208)
sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:542)
sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:496)
sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:433)
sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
org.jetbrains.jps.incremental.scala.local.SbtCompiler.$anonfun$doCompile$3(SbtCompiler.scala:87)
scala.util.Try$.apply(Try.scala:217)
org.jetbrains.jps.incremental.scala.local.SbtCompiler.doCompile(SbtCompiler.scala:85)
org.jetbrains.jps.incremental.scala.local.SbtCompiler.compile(SbtCompiler.scala:17)
org.jetbrains.jps.incremental.scala.local.LocalServer.doCompile(LocalServer.scala:47)
org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:26)
org.jetbrains.jps.incremental.scala.remote.Main$.compileLogic(Main.scala:209)
org.jetbrains.jps.incremental.scala.remote.Main$.$anonfun$handleCommand$1(Main.scala:190)
org.jetbrains.jps.incremental.scala.remote.Main$.decorated$1(Main.scala:177)
org.jetbrains.jps.incremental.scala.remote.Main$.handleCommand(Main.scala:187)
org.jetbrains.jps.incremental.scala.remote.Main$.serverLogic(Main.scala:160)
org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:100)
org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala)
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
java.base/java.lang.reflect.Method.invoke(Method.java:580)
com.facebook.nailgun.NGSession.runImpl(NGSession.java:312)
com.facebook.nailgun.NGSession.run(NGSession.java:198)Probable cause
In wildApprox, in case of FunProto, FunProtoTyped is returned, but if args and resultType have not changed, then the unchanged FunProto is returned. This results in typedArgs being called during fold on FunProto, which may return types with uninstantiated type variables.
If only FunProtoTyped is returned, then the crash does not occur.
Metadata
Metadata
Assignees
Labels
itype:bugitype:crashstat:needs triageEvery issue needs to have an "area" and "itype" labelEvery issue needs to have an "area" and "itype" label