Closed
Description
Compiler version
3.1.0-RC1-bin-20210820-68044a6-NIGHTLY
When using traverseTree
from Quotes TreeTraverser
trait I check the position of each tree I visit. For some reason accessing the pos
property, the execution fails. The stacktrace is leading to the assertion of the Span existence. The stacktrace is as follow:
Stacktrace
[error] Exception in thread "main" java.lang.AssertionError: assertion failed
[error] at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:11)
[error] at dotty.tools.dotc.util.Spans$Span$.start$extension(Spans.scala:44)
[error] at dotty.tools.dotc.util.SourcePosition.start(SourcePosition.scala:50)
[error] at dotty.tools.dotc.util.SourcePosition.startLine(SourcePosition.scala:51)
[error] at scala.quoted.runtime.impl.QuotesImpl$reflect$PositionMethods$.startLine(QuotesImpl.scala:2727)
[error] at scala.quoted.runtime.impl.QuotesImpl$reflect$PositionMethods$.startLine(QuotesImpl.scala:2727)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:73)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4329)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldOverTree(StacktracesInspector.scala:56)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTreeChildren(StacktracesInspector.scala:80)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:74)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4304)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldOverTree(StacktracesInspector.scala:56)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTreeChildren(StacktracesInspector.scala:80)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:74)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$$anonfun$1(Quotes.scala:4252)
[error] at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
[error] at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
[error] at scala.collection.immutable.List.foldLeft(List.scala:79)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees(Quotes.scala:4252)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTrees(StacktracesInspector.scala:56)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4307)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldOverTree(StacktracesInspector.scala:56)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTreeChildren(StacktracesInspector.scala:80)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:74)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$$anonfun$1(Quotes.scala:4252)
[error] at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
[error] at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
[error] at scala.collection.immutable.List.foldLeft(List.scala:79)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees(Quotes.scala:4252)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTrees(StacktracesInspector.scala:56)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4313)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldOverTree(StacktracesInspector.scala:56)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTreeChildren(StacktracesInspector.scala:80)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:74)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$$anonfun$1(Quotes.scala:4252)
[error] at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
[error] at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
[error] at scala.collection.immutable.List.foldLeft(List.scala:79)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees(Quotes.scala:4252)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTrees(StacktracesInspector.scala:56)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4313)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldOverTree(StacktracesInspector.scala:56)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTreeChildren(StacktracesInspector.scala:80)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:74)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTree(StacktracesInspector.scala:78)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$$anonfun$1(Quotes.scala:4252)
[error] at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
[error] at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
[error] at scala.collection.immutable.List.foldLeft(List.scala:79)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees(Quotes.scala:4252)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldTrees(StacktracesInspector.scala:56)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4313)
[error] at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4247)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.foldOverTree(StacktracesInspector.scala:56)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTreeChildren(StacktracesInspector.scala:80)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$Traverser$1.traverseTree(StacktracesInspector.scala:74)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector.inspect$$anonfun$1(StacktracesInspector.scala:114)
[error] at scala.collection.immutable.List.foreach(List.scala:333)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector.inspect(StacktracesInspector.scala:119)
[error] at scala.tasty.inspector.TastyInspector$TastyInspectorPhase$1.runOn(TastyInspector.scala:67)
[error] at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:205)
[error] at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] at dotty.tools.dotc.Run.runPhases$5(Run.scala:216)
[error] at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:224)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
[error] at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:231)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:172)
[error] at dotty.tools.dotc.fromtasty.TASTYRun.compile(TASTYRun.scala:12)
[error] at dotty.tools.dotc.Driver.doCompile(Driver.scala:39)
[error] at dotty.tools.dotc.Driver.process(Driver.scala:199)
[error] at dotty.tools.dotc.Driver.process(Driver.scala:167)
[error] at dotty.tools.dotc.Driver.process(Driver.scala:179)
[error] at scala.tasty.inspector.TastyInspector$.inspectFiles(TastyInspector.scala:106)
[error] at scala.tasty.inspector.TastyInspector$.inspectAllTastyFiles(TastyInspector.scala:52)
[error] at org.virtuslab.stacktraces.core.StacktracesInspector$.inspectStackTrace(StacktracesInspector.scala:28)
[error] at org.virtuslab.stacktraces.core.Stacktraces$.convertToPrettyStackTrace(Stacktraces.scala:26)
[error] at org.virtuslab.stacktraces.TestExecutor$package$.convertToPrettyStackTraceWithStdlib(TestExecutor.scala:17)
[error] at org.virtuslab.stacktraces.TestExecutor$.executeTest(TestExecutor.scala:13)
[error] at org.virtuslab.stacktraces.tests.BasicTests$.nestedLambdas(BasicTest.scala:37)
[error] at org.virtuslab.stacktraces.tests.nestedLambdas.main(BasicTest.scala:27)
[error] Nonzero exit code returned from runner: 1
The trees that were accessed in the traverser callback that cause failure
Failing trees
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[HKTypeLambda(List(_$1), List(TypeBounds(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing),TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any))), TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any), List())]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[HKTypeLambda(List(_$1), List(TypeBounds(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing),TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any))), TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any), List())]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Nothing)]
[info] TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Any)]
There used to be the exists
function in Position
to check whether the Span
exists but IIRC was removed because accessing pos
should be safe now. I can provide a sample repo if necessary.