Skip to content

3.7.3-RC1 regression: TS[...] attempted to take ownership of A which is already owned by committable TS[...] #23663

@Gedochao

Description

@Gedochao

Compiler version

3.7.3-RC1

Reproduction steps

Discovered during:

Checkout https://github.com/Gedochao/scala-cli/tree/update/scala-3.7.3-RC1
and run:

./mill -i 'build-module[3.7.3-RC1].test.compile'

Output

build-module[3.7.3-RC1].test.compile java.lang.AssertionError: assertion failed: TS[305296, 305295, 305294] attempted to take ownership of A which is already owned by committable TS[313668, 313654, 313652, 313629, 305296, 305295, 305294]
    scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
    dotty.tools.dotc.core.TyperState.includeVar(TyperState.scala:273)
    dotty.tools.dotc.core.TyperState.$anonfun$2$$anonfun$1(TyperState.scala:235)
    scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:334)
    dotty.tools.dotc.core.TyperState.$anonfun$2(TyperState.scala:234)
    scala.collection.immutable.List.forall(List.scala:387)
    dotty.tools.dotc.core.TyperState.mergeConstraintWith(TyperState.scala:229)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArgs(ProtoTypes.scala:528)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.fold(ProtoTypes.scala:615)
    dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6926)
    dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6964)
    dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:682)
    dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6963)
    dotty.tools.dotc.core.Types$TypeTraverser.apply(Types.scala:6963)
    dotty.tools.dotc.typer.ProtoTypes$ViewProto.fold(ProtoTypes.scala:676)
    dotty.tools.dotc.core.Types$TypeAccumulator.foldOver(Types.scala:6926)
    dotty.tools.dotc.core.Types$TypeTraverser.traverseChildren(Types.scala:6964)
    dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.traverse(Implicits.scala:682)
    dotty.tools.dotc.typer.ImplicitRunInfo$collectParts$2$.apply(Implicits.scala:688)
    dotty.tools.dotc.typer.ImplicitRunInfo.recur$1(Implicits.scala:764)
    dotty.tools.dotc.typer.ImplicitRunInfo.computeIScope(Implicits.scala:775)
    dotty.tools.dotc.typer.ImplicitRunInfo.$anonfun$1(Implicits.scala:855)
    dotty.tools.dotc.util.ReadOnlyMap.getOrElse(ReadOnlyMap.scala:23)
    dotty.tools.dotc.typer.ImplicitRunInfo.implicitScope(Implicits.scala:855)
    dotty.tools.dotc.typer.ImplicitRunInfo.implicitScope$(Implicits.scala:626)
    dotty.tools.dotc.Run.implicitScope(Run.scala:45)
    dotty.tools.dotc.typer.Implicits$ImplicitSearch.implicitScope(Implicits.scala:1805)
    dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1687)
    dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit$$anonfun$3(Implicits.scala:1774)
    dotty.tools.dotc.typer.Implicits$SearchResult.recoverWith(Implicits.scala:430)
    dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1760)
    dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1801)
    dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1115)
    dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:866)
    dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:155)
    dotty.tools.dotc.typer.Implicits.inferView(Implicits.scala:906)
    dotty.tools.dotc.typer.Implicits.inferView$(Implicits.scala:866)
    dotty.tools.dotc.typer.Typer.inferView(Typer.scala:155)
    dotty.tools.dotc.typer.Implicits.viewExists(Implicits.scala:879)
    dotty.tools.dotc.typer.Implicits.viewExists$(Implicits.scala:866)
    dotty.tools.dotc.typer.Typer.viewExists(Typer.scala:155)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.isCompatible(ProtoTypes.scala:45)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.isCompatible$(ProtoTypes.scala:32)
    dotty.tools.dotc.typer.Typer.isCompatible(Typer.scala:155)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.testCompat$1(ProtoTypes.scala:62)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.normalizedCompatible(ProtoTypes.scala:76)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.normalizedCompatible$(ProtoTypes.scala:32)
    dotty.tools.dotc.typer.Typer.normalizedCompatible(Typer.scala:155)
    dotty.tools.dotc.typer.ProtoTypes$SelectionProto.qualifies$1(ProtoTypes.scala:250)
    dotty.tools.dotc.typer.ProtoTypes$SelectionProto.isMatchedBy$$anonfun$1(ProtoTypes.scala:253)
    dotty.tools.dotc.core.Denotations$SingleDenotation.hasAltWith(Denotations.scala:644)
    dotty.tools.dotc.core.Denotations$MultiDenotation.hasAltWith(Denotations.scala:1287)
    dotty.tools.dotc.typer.ProtoTypes$SelectionProto.isMatchedBy(ProtoTypes.scala:253)
    dotty.tools.dotc.core.TypeComparer.isMatchedByProto(TypeComparer.scala:2312)
    dotty.tools.dotc.core.TypeComparer.firstTry$1(TypeComparer.scala:355)
    dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:1610)
    dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:225)
    dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:235)
    dotty.tools.dotc.core.TypeComparer.topLevelSubType(TypeComparer.scala:143)
    dotty.tools.dotc.core.TypeComparer.necessarySubType(TypeComparer.scala:154)
    dotty.tools.dotc.core.TypeComparer$.necessarySubType(TypeComparer.scala:3428)
    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:155)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult(ProtoTypes.scala:104)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult$(ProtoTypes.scala:32)
    dotty.tools.dotc.typer.Typer.constrainResult(Typer.scala:155)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult(ProtoTypes.scala:155)
    dotty.tools.dotc.typer.ProtoTypes$Compatibility.constrainResult$(ProtoTypes.scala:32)
    dotty.tools.dotc.typer.Typer.constrainResult(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:4374)
    dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:4440)
    dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:4505)
    dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:4707)
    dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:4994)
    dotty.tools.dotc.typer.Typer.adapt(Typer.scala:4216)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3952)
    dotty.tools.dotc.typer.Typer.typeSelectOnTerm$1(Typer.scala:1058)
    dotty.tools.dotc.typer.Typer.typedSelect(Typer.scala:1112)
    dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3646)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3758)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3952)
    dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1104)
    dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1331)
    dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3671)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.$anonfun$7(ProtoTypes.scala:543)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.cacheTypedArg(ProtoTypes.scala:466)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArg(ProtoTypes.scala:545)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$Application.addTyped$1(Applications.scala:731)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:809)
    dotty.tools.dotc.typer.Applications$Application.init(Applications.scala:610)
    dotty.tools.dotc.typer.Applications$TypedApply.<init>(Applications.scala:935)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.<init>(Applications.scala:1059)
    dotty.tools.dotc.typer.Applications.ApplyTo(Applications.scala:1357)
    dotty.tools.dotc.typer.Applications.ApplyTo$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.ApplyTo(Typer.scala:155)
    dotty.tools.dotc.typer.Applications.simpleApply$1(Applications.scala:1147)
    dotty.tools.dotc.typer.Applications.$anonfun$15(Applications.scala:1263)
    dotty.tools.dotc.typer.Typer$.tryEither(Typer.scala:128)
    dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1282)
    dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1331)
    dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3671)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedNamedArg(Typer.scala:1398)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3677)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.$anonfun$7(ProtoTypes.scala:543)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.cacheTypedArg(ProtoTypes.scala:466)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArg(ProtoTypes.scala:545)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$Application.addTyped$1(Applications.scala:731)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:809)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.init(Applications.scala:610)
    dotty.tools.dotc.typer.Applications$TypedApply.<init>(Applications.scala:935)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.<init>(Applications.scala:1059)
    dotty.tools.dotc.typer.Applications.ApplyTo(Applications.scala:1357)
    dotty.tools.dotc.typer.Applications.ApplyTo$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.ApplyTo(Typer.scala:155)
    dotty.tools.dotc.typer.Applications.simpleApply$1(Applications.scala:1147)
    dotty.tools.dotc.typer.Applications.$anonfun$15(Applications.scala:1263)
    dotty.tools.dotc.typer.Typer$.tryEither(Typer.scala:128)
    dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1282)
    dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1331)
    dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3671)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedNamedArg(Typer.scala:1398)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3677)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.$anonfun$7(ProtoTypes.scala:543)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.cacheTypedArg(ProtoTypes.scala:466)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArg(ProtoTypes.scala:545)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$Application.addTyped$1(Applications.scala:731)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:809)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:809)
    dotty.tools.dotc.typer.Applications$Application.tryDefault$1(Applications.scala:779)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:807)
    dotty.tools.dotc.typer.Applications$Application.init(Applications.scala:610)
    dotty.tools.dotc.typer.Applications$TypedApply.<init>(Applications.scala:935)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.<init>(Applications.scala:1059)
    dotty.tools.dotc.typer.Applications.ApplyTo(Applications.scala:1357)
    dotty.tools.dotc.typer.Applications.ApplyTo$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.ApplyTo(Typer.scala:155)
    dotty.tools.dotc.typer.Applications.simpleApply$1(Applications.scala:1147)
    dotty.tools.dotc.typer.Applications.$anonfun$15(Applications.scala:1263)
    dotty.tools.dotc.typer.Typer$.tryEither(Typer.scala:128)
    dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1282)
    dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1331)
    dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3671)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3952)
    dotty.tools.dotc.typer.Namer.typedAheadExpr$$anonfun$1(Namer.scala:1802)
    dotty.tools.dotc.typer.Namer.typedAhead(Namer.scala:1792)
    dotty.tools.dotc.typer.Namer.typedAheadExpr(Namer.scala:1802)
    dotty.tools.dotc.typer.Namer.typedAheadRhs$1$$anonfun$1(Namer.scala:2224)
    dotty.tools.dotc.inlines.PrepareInlineable$.dropInlineIfError(PrepareInlineable.scala:256)
    dotty.tools.dotc.typer.Namer.typedAheadRhs$1(Namer.scala:2224)
    dotty.tools.dotc.typer.Namer.rhsType$1(Namer.scala:2232)
    dotty.tools.dotc.typer.Namer.cookedRhsType$1(Namer.scala:2257)
    dotty.tools.dotc.typer.Namer.lhsType$1(Namer.scala:2258)
    dotty.tools.dotc.typer.Namer.inferredResultType(Namer.scala:2270)
    dotty.tools.dotc.typer.Namer.inferredType$1(Namer.scala:1845)
    dotty.tools.dotc.typer.Namer.valOrDefDefSig(Namer.scala:1851)
    dotty.tools.dotc.typer.Namer$Completer.typeSig(Namer.scala:837)
    dotty.tools.dotc.typer.Namer$Completer.completeInCreationContext(Namer.scala:1005)
    dotty.tools.dotc.typer.Namer$Completer.complete(Namer.scala:874)
    dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:175)
    dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:190)
    dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:192)
    dotty.tools.dotc.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:403)
    dotty.tools.dotc.typer.Typer.retrieveSym(Typer.scala:3618)
    dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3643)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3758)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3863)
    dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3909)
    dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1516)
    dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1520)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3679)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.$anonfun$7(ProtoTypes.scala:543)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.cacheTypedArg(ProtoTypes.scala:466)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArg(ProtoTypes.scala:545)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$Application.addTyped$1(Applications.scala:731)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:809)
    dotty.tools.dotc.typer.Applications$Application.init(Applications.scala:610)
    dotty.tools.dotc.typer.Applications$TypedApply.<init>(Applications.scala:935)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.<init>(Applications.scala:1059)
    dotty.tools.dotc.typer.Applications.ApplyTo(Applications.scala:1357)
    dotty.tools.dotc.typer.Applications.ApplyTo$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.ApplyTo(Typer.scala:155)
    dotty.tools.dotc.typer.Applications.simpleApply$1(Applications.scala:1147)
    dotty.tools.dotc.typer.Applications.$anonfun$15(Applications.scala:1263)
    dotty.tools.dotc.typer.Typer$.tryEither(Typer.scala:128)
    dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1282)
    dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1331)
    dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3671)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3952)
    dotty.tools.dotc.typer.Typer.caseRest$1(Typer.scala:2304)
    dotty.tools.dotc.typer.Typer.typedCase(Typer.scala:2324)
    dotty.tools.dotc.typer.Typer.typedCases$$anonfun$1(Typer.scala:2247)
    dotty.tools.dotc.core.Decorators$.loop$1(Decorators.scala:99)
    dotty.tools.dotc.core.Decorators$.mapconserve(Decorators.scala:115)
    dotty.tools.dotc.typer.Typer.typedCases(Typer.scala:2246)
    dotty.tools.dotc.typer.Typer.$anonfun$41(Typer.scala:2229)
    dotty.tools.dotc.typer.Applications.harmonic(Applications.scala:2733)
    dotty.tools.dotc.typer.Applications.harmonic$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.harmonic(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedMatchFinish(Typer.scala:2229)
    dotty.tools.dotc.typer.Typer.typedMatch(Typer.scala:2157)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3686)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3952)
    dotty.tools.dotc.typer.Namer.typedAheadExpr$$anonfun$1(Namer.scala:1802)
    dotty.tools.dotc.typer.Namer.typedAhead(Namer.scala:1792)
    dotty.tools.dotc.typer.Namer.typedAheadExpr(Namer.scala:1802)
    dotty.tools.dotc.typer.Namer.valOrDefDefSig(Namer.scala:1869)
    dotty.tools.dotc.typer.Namer.defDefSig(Namer.scala:1983)
    dotty.tools.dotc.typer.Namer$Completer.typeSig(Namer.scala:845)
    dotty.tools.dotc.typer.Namer$Completer.completeInCreationContext(Namer.scala:1005)
    dotty.tools.dotc.typer.Namer$Completer.complete(Namer.scala:874)
    dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:175)
    dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:190)
    dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:192)
    dotty.tools.dotc.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:403)
    dotty.tools.dotc.typer.Typer.retrieveSym(Typer.scala:3618)
    dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3643)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3758)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3863)
    dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3909)
    dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1516)
    dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1520)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3679)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedFunctionValue(Typer.scala:2002)
    dotty.tools.dotc.typer.Typer.typedFunction(Typer.scala:1735)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3681)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.$anonfun$7(ProtoTypes.scala:543)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.cacheTypedArg(ProtoTypes.scala:466)
    dotty.tools.dotc.typer.ProtoTypes$FunProto.typedArg(ProtoTypes.scala:545)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.typedArg(Applications.scala:1060)
    dotty.tools.dotc.typer.Applications$Application.addTyped$1(Applications.scala:731)
    dotty.tools.dotc.typer.Applications$Application.matchArgs(Applications.scala:809)
    dotty.tools.dotc.typer.Applications$Application.init(Applications.scala:610)
    dotty.tools.dotc.typer.Applications$TypedApply.<init>(Applications.scala:935)
    dotty.tools.dotc.typer.Applications$ApplyToUntyped.<init>(Applications.scala:1059)
    dotty.tools.dotc.typer.Applications.ApplyTo(Applications.scala:1357)
    dotty.tools.dotc.typer.Applications.ApplyTo$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.ApplyTo(Typer.scala:155)
    dotty.tools.dotc.typer.Applications.simpleApply$1(Applications.scala:1147)
    dotty.tools.dotc.typer.Applications.$anonfun$15(Applications.scala:1263)
    dotty.tools.dotc.typer.Typer$.tryEither(Typer.scala:128)
    dotty.tools.dotc.typer.Applications.realApply$1(Applications.scala:1282)
    dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1331)
    dotty.tools.dotc.typer.Applications.typedApply$(Applications.scala:470)
    dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:155)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3671)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3725)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3890)
    dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3909)
    dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:3328)
    dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:3659)
    dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:3663)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3758)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3863)
    dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3909)
    dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:3461)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:3705)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:3759)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3836)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3841)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3952)
    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:368)
    scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
    dotty.tools.dotc.Run.runPhases$1(Run.scala:361)
    dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:408)
    dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:408)
    scala.Function0.apply$mcV$sp(Function0.scala:42)
    dotty.tools.dotc.Run.showProgress(Run.scala:470)
    dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:408)
    dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:420)
    dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
    dotty.tools.dotc.Run.compileUnits(Run.scala:420)
    dotty.tools.dotc.Run.compileSources(Run.scala:307)
    dotty.tools.dotc.Run.compile(Run.scala:292)
    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:117)
    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:263)
    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)
    mill.scalalib.worker.ZincWorkerImpl.compileInternal(ZincWorkerImpl.scala:649)
    mill.scalalib.worker.ZincWorkerImpl.$anonfun$compileMixed$1(ZincWorkerImpl.scala:444)
    mill.scalalib.worker.ZincWorkerImpl.$anonfun$withCompilers$2(ZincWorkerImpl.scala:478)
    mill.api.CachedFactory.withValue(CachedFactory.scala:39)
    mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:477)
    mill.scalalib.worker.ZincWorkerImpl.compileMixed(ZincWorkerImpl.scala:443)
    mill.scalalib.ScalaModule.$anonfun$compile$2(ScalaModule.scala:266)
    mill.define.Task$TraverseCtx.evaluate(Task.scala:266)

Expectation

It should compile, as it does with 3.7.2 and before.
I haven't had time to try to minimize this just yet.

Extra context

Looks similar to:

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:typeritype:bugitype:crashregressionThis worked in a previous version but doesn't anymorestat:needs bisectionNeed to use nightly builds and git bisect to find out the commit where this issue was introducedstat:needs minimizationNeeds a self contained minimization

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions