Skip to content

Ambiguous given causes "already owned by committable" assertion #23176

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

Open
mattjacobus opened this issue May 16, 2025 · 2 comments
Open

Ambiguous given causes "already owned by committable" assertion #23176

mattjacobus opened this issue May 16, 2025 · 2 comments

Comments

@mattjacobus
Copy link

mattjacobus commented May 16, 2025

Compiler version

3.7.0, 3.3.5, 3.3.6

Minimized code

//> using dep com.lihaoyi::upickle:4.2.1
import upickle.default.*

trait DataTypeModule(val typeName: String):
  type T
  // evidence that T has a ReadWriter, defined in subtypes
  given readWriterT: ReadWriter[T]

  case class DataTyped(data: Data[T])

  object DataTyped:
    given rw: ReadWriter[DataTyped] =
      readwriter[ujson.Value].bimap[DataTyped](
        // x => writeJs(x.data).obj.value.addOne("type" -> typeName),
        // replacing below line with one above hides the ambiguous error, causing hours of hunting
        x => writeJs(x.data),
        json => DataTyped(read[Data[T]](json))
      )

case class Data[+A](value: A) derives ReadWriter

object Data:
  given [A: ReadWriter]: ReadWriter[Data[A]] =
    readwriter[ujson.Value].bimap[Data[A]](
      a => ujson.Obj("value" -> writeJs(a.value)),
      json => Data(read[A](json("value")))
    )

Output (click arrow to expand)

[info]   exception occurred while typechecking /Users/mjacobus/src/scala/scalaassert/scalaassert/src/main/scala/DataTypeModule.scala
[info] 
[info]   An unhandled exception was thrown in the compiler.
[info]   Please file a crash report here:
[info]   https://github.com/scala/scala3/issues/new/choose
[info]   For non-enriched exceptions, compile with -Xno-enrich-error-messages.
[info] 
[info] 
[info]      while compiling: /Users/mjacobus/src/scala/scalaassert/scalaassert/src/main/scala/DataTypeModule.scala
[info]         during phase: typer
[info]                 mode: Mode(ImplicitsEnabled,ReadPositions)
[info]      library version: version 2.13.16
[info]     compiler version: version 3.7.0
[info]             settings: -Xsemanticdb true -classpath /Users/mjacobus/src/scala/scalaassert/scalaassert/target/scala-3.7.0/classes:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.7.0/scala3-library_3-3.7.0.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_3/4.1.0/upickle_3-4.1.0.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/sourcegraph/semanticdb-javac/0.10.4/semanticdb-javac-0.10.4.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_3/4.1.0/ujson_3-4.1.0.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_3/4.1.0/upack_3-4.1.0.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_3/4.1.0/upickle-implicits_3-4.1.0.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_3/4.1.0/upickle-core_3-4.1.0.jar:/Users/mjacobus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_3/1.1.1/geny_3-1.1.1.jar -d /Users/mjacobus/src/scala/scalaassert/scalaassert/target/scala-3.7.0/classes -semanticdb-target /Users/mjacobus/src/scala/scalaassert/scalaassert/target/scala-3.7.0/meta
[error] ## Exception when compiling 2 sources to /Users/mjacobus/src/scala/scalaassert/scalaassert/target/scala-3.7.0/classes
[error] java.lang.AssertionError: assertion failed: TS[80257, 80256, 80255] attempted to take ownership of A which is already owned by committable TS[81065, 80257, 80256, 80255]
[error] scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
[error] dotty.tools.dotc.core.TyperState.includeVar(TyperState.scala:273)
[error] dotty.tools.dotc.core.TyperState.$anonfun$2$$anonfun$1(TyperState.scala:235)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:334)
[error] dotty.tools.dotc.core.TyperState.$anonfun$2(TyperState.scala:234)
[error] scala.collection.immutable.List.forall(List.scala:387)
[error] dotty.tools.dotc.core.TyperState.mergeConstraintWith(TyperState.scala:229)
[error] dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArgs(ProtoTypes.scala:521)
[error] dotty.tools.dotc.typer.ProtoTypes$FunProto.fold(ProtoTypes.scala:607)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6760)
[error] dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6798)
[error] dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:682)
[error] dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6797)
[error] dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6797)
[error] dotty.tools.dotc.typer.ProtoTypes$SelectionProto.fold(ProtoTypes.scala:281)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6760)
[error] dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6798)
[error] dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:682)
[error] dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6797)
[error] dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6797)
[error] dotty.tools.dotc.typer.ProtoTypes$SelectionProto.fold(ProtoTypes.scala:281)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6760)
[error] dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6798)
[error] dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:682)
[error] dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6797)
[error] dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6797)
[error] dotty.tools.dotc.typer.ProtoTypes$ViewProto.fold(ProtoTypes.scala:664)
[error] dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6760)
[error] dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6798)
[error] dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:682)
[error] dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.apply(Implicits.scala:688)
[error] dotty.tools.dotc.typer.ImplicitRunInfo.recur$1(Implicits.scala:764)
[error] dotty.tools.dotc.typer.ImplicitRunInfo.computeIScope(Implicits.scala:775)
[error] dotty.tools.dotc.typer.ImplicitRunInfo.$anonfun$1(Implicits.scala:855)
[error] dotty.tools.dotc.util.ReadOnlyMap.getOrElse(ReadOnlyMap.scala:23)
[error] dotty.tools.dotc.typer.ImplicitRunInfo.implicitScope(Implicits.scala:855)
[error] dotty.tools.dotc.typer.ImplicitRunInfo.implicitScope$(Implicits.scala:626)
[error] dotty.tools.dotc.Run.implicitScope(Run.scala:45)
[error] dotty.tools.dotc.typer.Implicits$ImplicitSearch.implicitScope(Implicits.scala:1801)
[error] dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1683)
[error] dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit$$anonfun$3(Implicits.scala:1770)
[error] dotty.tools.dotc.typer.Implicits$SearchResult.recoverWith(Implicits.scala:430)
[error] dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1756)
[error] dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1797)
[error] dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1115)
[error] dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:866)
[error] dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:154)
[error] dotty.tools.dotc.typer.Implicits.inferView(Implicits.scala:906)
[error] dotty.tools.dotc.typer.Implicits.inferView$(Implicits.scala:866)
[error] dotty.tools.dotc.typer.Typer.inferView(Typer.scala:154)
[error] dotty.tools.dotc.typer.Implicits.viewExists(Implicits.scala:879)
[error] dotty.tools.dotc.typer.Implicits.viewExists$(Implicits.scala:866)
[error] dotty.tools.dotc.typer.Typer.viewExists(Typer.scala:154)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.isCompatible(ProtoTypes.scala:45)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.isCompatible$(ProtoTypes.scala:32)
[error] dotty.tools.dotc.typer.Typer.isCompatible(Typer.scala:154)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.testCompat$1(ProtoTypes.scala:62)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.normalizedCompatible(ProtoTypes.scala:76)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.normalizedCompatible$(ProtoTypes.scala:32)
[error] dotty.tools.dotc.typer.Typer.normalizedCompatible(Typer.scala:154)
[error] dotty.tools.dotc.typer.ProtoTypes$SelectionProto.qualifies$1(ProtoTypes.scala:250)
[error] dotty.tools.dotc.typer.ProtoTypes$SelectionProto.isMatchedBy$$anonfun$1(ProtoTypes.scala:253)
[error] dotty.tools.dotc.core.Denotations$SingleDenotation.hasAltWith(Denotations.scala:644)
[error] dotty.tools.dotc.typer.ProtoTypes$SelectionProto.isMatchedBy(ProtoTypes.scala:253)
[error] dotty.tools.dotc.core.TypeComparer.isMatchedByProto(TypeComparer.scala:2237)
[error] dotty.tools.dotc.core.TypeComparer.firstTry$1(TypeComparer.scala:359)
[error] dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:1599)
[error] dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:229)
[error] dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:239)
[error] dotty.tools.dotc.core.TypeComparer.topLevelSubType(TypeComparer.scala:147)
[error] dotty.tools.dotc.core.TypeComparer.necessarySubType(TypeComparer.scala:158)
[error] dotty.tools.dotc.core.TypeComparer$.necessarySubType(TypeComparer.scala:3394)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.necessarilyCompatible(ProtoTypes.scala:53)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.necessarilyCompatible$(ProtoTypes.scala:32)
[error] dotty.tools.dotc.typer.Typer.necessarilyCompatible(Typer.scala:154)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult(ProtoTypes.scala:104)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult$(ProtoTypes.scala:32)
[error] dotty.tools.dotc.typer.Typer.constrainResult(Typer.scala:154)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult(ProtoTypes.scala:155)
[error] dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult$(ProtoTypes.scala:32)
[error] dotty.tools.dotc.typer.Typer.constrainResult(Typer.scala:154)
[error] dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:4255)
[error] dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:4317)
[error] dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:4382)
[error] dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:4589)
[error] dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:4875)
[error] dotty.tools.dotc.typer.Typer.adapt(Typer.scala:4105)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.Typer.typeSelectOnTerm$1(Typer.scala:1046)
[error] dotty.tools.dotc.typer.Typer.typedSelect(Typer.scala:1088)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3535)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.Typer.typeSelectOnTerm$1(Typer.scala:1046)
[error] dotty.tools.dotc.typer.Typer.typedSelect(Typer.scala:1088)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3535)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.Typer.typeSelectOnTerm$1(Typer.scala:1046)
[error] dotty.tools.dotc.typer.Typer.typedSelect(Typer.scala:1088)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3535)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1090
[error] dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1287)
[error] dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:465)
[error] dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:154)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3560)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3648)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.Typer.$anonfun$66(Typer.scala:2952)
[error] dotty.tools.dotc.inlines.PrepareInlineable$.dropInlineIfError(PrepareInlineable.scala:256)
[error] dotty.tools.dotc.typer.Typer.typedDefDef(Typer.scala:2952)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3542)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3752)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3798)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1486)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1490)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3568)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3648)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedFunctionValue(Typer.scala:1968)
[error] dotty.tools.dotc.typer.Typer.typedFunction(Typer.scala:1705)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3570)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3648)
[error] dotty.tools.dotc.typer.ProtoTypes$FunProto.$anonfun$7(ProtoTypes.scala:536)
[error] dotty.tools.dotc.typer.ProtoTypes$FunProto.cacheTypedArg(ProtoTypes.scala:459)
[error] dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArg(ProtoTypes.scala:537)
[error] dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1046)
[error] dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1046)
[error] dotty.tools.dotc.typer.Applications$Application.addTyped$1(Applications.scala:726)
[error] dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:795)
[error] dotty.tools.dotc.typer.Applications$Application.init(Applications.scala:605)
[error] dotty.tools.dotc.typer.Applications$TypedApply.<init>(Applications.scala:921)
[error] dotty.tools.dotc.typer.Applications$ApplyToUntyped.<init>(Applications.scala:1045)
[error] dotty.tools.dotc.typer.Applications.ApplyTo(Applications.scala:1313)
[error] dotty.tools.dotc.typer.Applications.ApplyTo$(Applications.scala:465)
[error] dotty.tools.dotc.typer.Typer.ApplyTo(Typer.scala:154)
[error] dotty.tools.dotc.typer.Applications.simpleApply$1(Applications.scala:1118)
[error] dotty.tools.dotc.typer.Applications.$anonfun$15(Applications.scala:1227
[error] dotty.tools.dotc.typer.Typer$.tryEither(Typer.scala:127)
[error] dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1242
[error] dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1287)
[error] dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:465)
[error] dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:154)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3560)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3648)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2888)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3539)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3752)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3798)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:3220)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:3548)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3552)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3752)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3798)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:3220)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:3548)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3552)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3647)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3752)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3798)
[error] dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:3353)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3594)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3648)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3725)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3730)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3841)
[error] dotty.tools.dotc.typer.TyperPhase.typeCheck$$anonfun$1(TyperPhase.scala:47)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] dotty.tools.dotc.core.Phases$Phase.monitor(Phases.scala:510)
[error] dotty.tools.dotc.typer.TyperPhase.typeCheck(TyperPhase.scala:53)
[error] dotty.tools.dotc.typer.TyperPhase.$anonfun$4(TyperPhase.scala:99)
[error] scala.collection.Iterator$$anon$6.hasNext(Iterator.scala:479)
[error] scala.collection.Iterator$$anon$9.hasNext(Iterator.scala:583)
[error] scala.collection.immutable.List.prependedAll(List.scala:152)
[error] scala.collection.immutable.List$.from(List.scala:685)
[error] scala.collection.immutable.List$.from(List.scala:682)
[error] scala.collection.IterableOps$WithFilter.map(Iterable.scala:900)
[error] dotty.tools.dotc.typer.TyperPhase.runOn(TyperPhase.scala:98)
[error] dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:367)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
[error] dotty.tools.dotc.Run.runPhases$1(Run.scala:360)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:407)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:407)
[error] scala.Function0.apply$mcV$sp(Function0.scala:42)
[error] dotty.tools.dotc.Run.showProgress(Run.scala:469)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:407)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:419)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:419)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:306)
[error] dotty.tools.dotc.Run.compile(Run.scala:291)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
[error] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141
[error] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:196)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:252)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:186)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:166)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:241)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:166)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:214)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:542)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:542)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$3(Incremental.scala:182)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$3$adapted(Incremental.scala:180)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:458)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:264)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:413)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:500)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:400)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:208)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:542)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:496)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:433)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2471)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2421)
[error] sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:41)
[error] sbt.internal.io.Retry$.sbt$internal$io$Retry$$impl(Retry.scala:114)
[error] sbt.internal.io.Retry$.io(Retry.scala:102)
[error] sbt.internal.io.Retry$.io(Retry.scala:78)
[error] sbt.internal.io.Retry$.io(Retry.scala:67)
[error] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:41)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2419)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error] sbt.Execute.work(Execute.scala:292)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[error] java.base/java.lang.Thread.run(Thread.java:840)
[error]            
[error] stack trace is suppressed; run last Compile / compileIncremental for the full output
[error] (Compile / compileIncremental) java.lang.AssertionError: assertion failed: TS[80257, 80256, 80255] attempted to take ownership of A which is already owned by committable TS[81065, 80257, 80256, 80255]
[error] Total time: 1 s, completed May 16, 2025, 3:11:40 PM
[info] 22. Monitoring source files for root/run...
[info]     Press <enter> to interrupt or '?' for more options.
[info] Received input event: CancelWatch.
@mattjacobus mattjacobus added itype:bug itype:crash stat:needs triage Every issue needs to have an "area" and "itype" label labels May 16, 2025
@Gedochao
Copy link
Contributor

The repro was missing the dependency declaration.
Reproduced with upickle 4.2.1 and added the directive to the original post.

//> using dep com.lihaoyi::upickle:4.2.1

@Gedochao Gedochao added area:typer and removed stat:needs triage Every issue needs to have an "area" and "itype" label labels May 21, 2025
@Gedochao
Copy link
Contributor

Note: optimally, we'd like to minimize the crash without the dependency.

@Gedochao Gedochao added the stat:needs minimization Needs a self contained minimization label May 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants