Closed
Description
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