Skip to content

Infinite CapToFresh.apply cycle during tree printing in setupCC phase #23509

Open
@noti0na1

Description

@noti0na1

Compiler version

3.7.3-RC1-bin-SNAPSHOT-nonbootstrapped-git-01447df

Minimized code

import language.experimental.captureChecking

trait A
case class B(x: A, y: String) extends A

def f(x: A^): A =
  x match
    case b @ B(b1, b2) => b
    case _ => ???
> scalac -Xprint:setupCC Test.scala

Output (click arrow to expand)

...
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$CapToFresh.apply(Capability.scala:703)
        at dotty.tools.dotc.cc.Capabilities$.op$proxy3$1(Capability.scala:745)
        at dotty.tools.dotc.cc.Capabilities$.capToFresh(Capability.scala:745)
        at dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformExplicitType(Setup.scala:471)
        at dotty.tools.dotc.cc.Setup.mappedInfo$1(Setup.scala:147)
        at dotty.tools.dotc.cc.Setup.transformSym(Setup.scala:154)
        at dotty.tools.dotc.core.DenotTransformers$SymTransformer.transform(DenotTransformers.scala:72)
        at dotty.tools.dotc.core.DenotTransformers$SymTransformer.transform$(DenotTransformers.scala:67)
        at dotty.tools.dotc.cc.Setup.transform(Setup.scala:81)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:835)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:2476)
        at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:2439)
        at dotty.tools.dotc.ast.Trees$DenotingTree.denot(Trees.scala:261)
        at dotty.tools.dotc.ast.Trees$Tree.symbol(Trees.scala:150)
        at dotty.tools.dotc.printing.RefinedPrinter.mods(RefinedPrinter.scala:937)
        at dotty.tools.dotc.printing.RefinedPrinter.paramsText(RefinedPrinter.scala:986)
        at dotty.tools.dotc.printing.RefinedPrinter.addParamssText$$anonfun$1(RefinedPrinter.scala:992)
        at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
        at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
        at scala.collection.immutable.List.foldLeft(List.scala:79)
        at dotty.tools.dotc.printing.RefinedPrinter.addParamssText(RefinedPrinter.scala:992)
        at dotty.tools.dotc.printing.RefinedPrinter.defDefToText$$anonfun$1$$anonfun$1(RefinedPrinter.scala:1054)
        at dotty.tools.dotc.printing.RefinedPrinter.withEnclosingDef(RefinedPrinter.scala:53)
        at dotty.tools.dotc.printing.RefinedPrinter.defDefToText$$anonfun$1(RefinedPrinter.scala:1059)
        at dotty.tools.dotc.printing.RefinedPrinter.dclTextOr(RefinedPrinter.scala:979)
        at dotty.tools.dotc.printing.RefinedPrinter.defDefToText(RefinedPrinter.scala:1060)
        at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:660)
        at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:862)
        at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
        at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:50)
        at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:933)
        at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:193)
        at dotty.tools.dotc.printing.Printer.toText$$anonfun$1(Printer.scala:192)
        at scala.collection.immutable.List.map(List.scala:251)
        at scala.collection.immutable.List.map(List.scala:79)
        at dotty.tools.dotc.printing.Printer.toText(Printer.scala:192)
        at dotty.tools.dotc.printing.Printer.toTextGlobal$$anonfun$2(Printer.scala:200)
        at dotty.tools.dotc.printing.Printer.atPrec(Printer.scala:45)
        at dotty.tools.dotc.printing.Printer.toTextGlobal(Printer.scala:200)
        at dotty.tools.dotc.printing.RefinedPrinter.toTextTemplate(RefinedPrinter.scala:1115)
        at dotty.tools.dotc.printing.RefinedPrinter.templateText$$anonfun$1(RefinedPrinter.scala:1126)
        at dotty.tools.dotc.printing.RefinedPrinter.withEnclosingDef(RefinedPrinter.scala:53)
        at dotty.tools.dotc.printing.RefinedPrinter.templateText(RefinedPrinter.scala:1126)
        at dotty.tools.dotc.printing.RefinedPrinter.recur$2(RefinedPrinter.scala:670)
        at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:680)
        at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:862)
        at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
        at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:50)
        at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:933)
        at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:193)
        at dotty.tools.dotc.printing.Printer.toText$$anonfun$1(Printer.scala:192)
        at scala.collection.immutable.List.map(List.scala:251)
        at scala.collection.immutable.List.map(List.scala:79)
        at dotty.tools.dotc.printing.Printer.toText(Printer.scala:192)
        at dotty.tools.dotc.printing.Printer.toTextGlobal$$anonfun$2(Printer.scala:200)
        at dotty.tools.dotc.printing.Printer.atPrec(Printer.scala:45)
        at dotty.tools.dotc.printing.Printer.toTextGlobal(Printer.scala:200)
        at dotty.tools.dotc.printing.RefinedPrinter.packageDefText(RefinedPrinter.scala:1138)
        at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:690)
        at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:862)
        at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
        at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:50)
        at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:933)
        at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:193)
        at dotty.tools.dotc.printing.Showable.show(Showable.scala:23)
        at dotty.tools.dotc.printing.Showable.show$(Showable.scala:9)
        at dotty.tools.dotc.ast.Trees$Tree.show(Trees.scala:55)
        at dotty.tools.dotc.core.Phases$Phase.show(Phases.scala:400)
        at dotty.tools.dotc.Run.printTree(Run.scala:488)
        at dotty.tools.dotc.Run.runPhases$1$$anonfun$1$$anonfun$1(Run.scala:374)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.immutable.List.foreach(List.scala:334)
        at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:371)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
        at dotty.tools.dotc.Run.runPhases$1(Run.scala:361)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:408)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:408)
        at scala.Function0.apply$mcV$sp(Function0.scala:42)
        at dotty.tools.dotc.Run.showProgress(Run.scala:470)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:408)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:420)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:420)
        at dotty.tools.dotc.Run.compileSources(Run.scala:307)
        at dotty.tools.dotc.Run.compile(Run.scala:292)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
        at dotty.tools.dotc.Driver.process(Driver.scala:201)
        at dotty.tools.dotc.Driver.process(Driver.scala:169)
        at dotty.tools.dotc.Driver.process(Driver.scala:181)
        at dotty.tools.dotc.Driver.main(Driver.scala:211)
        at dotty.tools.dotc.Main.main(Main.scala)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions