Skip to content

TreeAccumulator misses a case for WhileDo #6518

Closed
@abgruszecki

Description

@abgruszecki

TreeAccumulator misses a case for WhileDo.

Reproduction: #6517

Top of the stack trace:

Caused by: scala.MatchError: WhileDo(Select(Select(Ident(pres),isEmpty),unary_!),Block(List(Assign(Ident(these),Block(List(ValDef(x$1,TypeTree[TypeRef(NoPrefix,type B)],Select(Ident(pres),head))),Apply(TypeApply(Select(Ident(these),::),List(TypeTree[TypeRef(NoPrefix,type B)])),List(Ident(x$1)))))),Assign(Ident(pres),Select(Ident(pres),tail)))) (of class dotty.tools.dotc.ast.Trees$WhileDo)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:95)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
Complete stack trace

Caused by: scala.MatchError: WhileDo(Select(Select(Ident(pres),isEmpty),unary_!),Block(List(Assign(Ident(these),Block(List(ValDef(x$1,TypeTree[TypeRef(NoPrefix,type B)],Select(Ident(pres),head))),Apply(TypeApply(Select(Ident(these),::),List(TypeTree[TypeRef(NoPrefix,type B)])),List(Ident(x$1)))))),Assign(Ident(pres),Select(Ident(pres),tail)))) (of class dotty.tools.dotc.ast.Trees$WhileDo)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:95)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
        at scala.collection.immutable.List.foldLeft(List.scala:89)
        at scala.collection.TraversableOnce.$div$colon(TraversableOnce.scala:154)
        at scala.collection.TraversableOnce.$div$colon$(TraversableOnce.scala:154)
        at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:108)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees(TreeUtils.scala:17)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:46)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
        at scala.collection.immutable.List.foldLeft(List.scala:89)
        at scala.collection.TraversableOnce.$div$colon(TraversableOnce.scala:154)
        at scala.collection.TraversableOnce.$div$colon$(TraversableOnce.scala:154)
        at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:108)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees(TreeUtils.scala:17)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:67)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
        at scala.collection.immutable.List.foldLeft(List.scala:89)
        at scala.collection.TraversableOnce.$div$colon(TraversableOnce.scala:154)
        at scala.collection.TraversableOnce.$div$colon$(TraversableOnce.scala:154)
        at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:108)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees(TreeUtils.scala:17)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:73)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:19)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
        at scala.collection.immutable.List.foldLeft(List.scala:89)
        at scala.collection.TraversableOnce.$div$colon(TraversableOnce.scala:154)
        at scala.collection.TraversableOnce.$div$colon$(TraversableOnce.scala:154)
        at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:108)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees(TreeUtils.scala:17)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:77)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
        at scala.collection.immutable.List.foldLeft(List.scala:89)
        at scala.collection.TraversableOnce.$div$colon(TraversableOnce.scala:154)
        at scala.collection.TraversableOnce.$div$colon$(TraversableOnce.scala:154)
        at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:108)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees(TreeUtils.scala:17)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:77)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.foldTree(TreeUtils.scala:115)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees$$anonfun$1(TreeUtils.scala:17)
        at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
        at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
        at scala.collection.immutable.List.foldLeft(List.scala:89)
        at scala.collection.TraversableOnce.$div$colon(TraversableOnce.scala:154)
        at scala.collection.TraversableOnce.$div$colon$(TraversableOnce.scala:154)
        at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:108)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldTrees(TreeUtils.scala:17)
        at scala.tasty.reflect.TreeUtils$TreeAccumulator.foldOverTree(TreeUtils.scala:77)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTreeChildren(TreeUtils.scala:118)
        at scala.tasty.reflect.TreeUtils$TreeTraverser.traverseTree(TreeUtils.scala:112)
        at DBConsumer$Traverser$1$.traverseTree(Test.scala:21)
        at DBConsumer.apply(Test.scala:25)
        at dotty.tools.dotc.consumetasty.TastyConsumerPhase.run(TastyConsumerPhase.scala:15)
        at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:316)
        at scala.collection.immutable.List.map(List.scala:286)
        at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:318)
        at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:158)
        at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
        at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
        at dotty.tools.dotc.Run.runPhases$5(Run.scala:170)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:178)
        at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:102)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:185)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:125)
        at dotty.tools.dotc.fromtasty.TASTYRun.compile(TASTYRun.scala:10)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:34)
        at dotty.tools.dotc.Driver.process(Driver.scala:172)
        at dotty.tools.dotc.Driver.process(Driver.scala:141)
        at dotty.tools.dotc.Driver.process(Driver.scala:153)
        at dotty.tools.dotc.consumetasty.ConsumeTasty$.apply(ConsumeTasty.scala:22)
        at dotty.tools.dotc.consumetasty.ConsumeTasty.apply(ConsumeTasty.scala)
        ... 13 more

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions