Open
Description
Compiler version
3.0.0-RC1
Minimized code
Pre requirement:
- Download and unzip
scala3-compiler_3.0.0-RC1.jar
somewhere
import scala.quoted._
import scala.tasty.inspector._
@main def Test = {
val inspector = new Inspector {
def inspect(using Quotes)(tastys: List[Tasty[quotes.type]]): Unit = {
println("Size:" + tastys.size.toString)
for tasty <- tastys do
tasty.ast.show(using quotes.reflect.Printer.TreeStructure)
}
}
val brokenFile = "dotty/tools/dotc/core/classfile/ReusableDataReader.tasty"
TastyInspector.inspectTastyFiles(List(s"path/to/unzipped/jar/$brokenFile"))(inspector)
Output
java.lang.ArrayIndexOutOfBoundsException: Index 2987 out of bounds for length
Stacktrace
java.lang.ArrayIndexOutOfBoundsException: Index 2987 out of bounds for length 0
at dotty.tools.dotc.util.SourceFile.column(SourceFile.scala:199)
at dotty.tools.dotc.util.SourcePosition.column(SourcePosition.scala:48)
at dotty.tools.dotc.reporting.MessageRendering.posStr(MessageRendering.scala:118)
at dotty.tools.dotc.reporting.MessageRendering.posStr$(MessageRendering.scala:18)
at dotty.tools.dotc.reporting.AbstractReporter.posStr(AbstractReporter.scala:8)
at dotty.tools.dotc.reporting.MessageRendering.messageAndPos(MessageRendering.scala:148)
at dotty.tools.dotc.reporting.MessageRendering.messageAndPos$(MessageRendering.scala:18)
at dotty.tools.dotc.reporting.AbstractReporter.messageAndPos(AbstractReporter.scala:8)
at dotty.tools.dotc.reporting.ConsoleReporter.doReport(ConsoleReporter.scala:26)
at dotty.tools.dotc.reporting.Reporter.report(Reporter.scala:150)
at dotty.tools.dotc.report$.error(report.scala:71)
at dotty.tools.dotc.typer.ErrorReporting$.errorType(ErrorReporting.scala:34)
at dotty.tools.dotc.typer.TypeAssigner.assignType(TypeAssigner.scala:282)
at dotty.tools.dotc.typer.TypeAssigner.assignType$(TypeAssigner.scala:20)
at dotty.tools.dotc.typer.Typer.assignType(Typer.scala:102)
at dotty.tools.dotc.ast.tpd$.Apply(tpd.scala:46)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readLengthTerm$1(TreeUnpickler.scala:1126)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readTerm(TreeUnpickler.scala:1263)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readIndexedStat(TreeUnpickler.scala:984)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readIndexedStats$$anonfun$1(TreeUnpickler.scala:1022)
at dotty.tools.tasty.TastyReader.until(TastyReader.scala:125)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readIndexedStats(TreeUnpickler.scala:1022)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readStats(TreeUnpickler.scala:1026)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readLengthTerm$1(TreeUnpickler.scala:1138)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readTerm(TreeUnpickler.scala:1263)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readLengthTerm$1(TreeUnpickler.scala:1139)
at dotty.tools.dotc.core.tasty.TreeUnpickler$TreeReader.readTerm(TreeUnpickler.scala:1263)
at dotty.tools.dotc.core.tasty.TreeUnpickler.readRhs$2$$anonfun$2$$anonfun$1(TreeUnpickler.scala:807)
at dotty.tools.dotc.core.tasty.TreeUnpickler$LazyReader.complete(TreeUnpickler.scala:1400)
at dotty.tools.dotc.ast.Trees$WithLazyField.forceIfLazy(Trees.scala:955)
at dotty.tools.dotc.ast.Trees$WithLazyField.forceIfLazy$(Trees.scala:950)
at dotty.tools.dotc.ast.Trees$ValOrDefDef.forceIfLazy(Trees.scala:377)
at dotty.tools.dotc.ast.Trees$ValOrDefDef.rhs(Trees.scala:382)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1534)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1444)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1446)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1541)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1538)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1444)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1446)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1547)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1444)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1446)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1547)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1444)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1446)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1547)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1571)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1444)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1446)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1547)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1450)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1572)
at dotty.tools.dotc.CompilationUnit$Force.traverse(CompilationUnit.scala:141)
at dotty.tools.dotc.CompilationUnit$.apply(CompilationUnit.scala:105)
at dotty.tools.dotc.CompilationUnit$.apply(CompilationUnit.scala:96)
at dotty.tools.dotc.fromtasty.ReadTasty.compilationUnit$1(ReadTasty.scala:42)
at dotty.tools.dotc.fromtasty.ReadTasty.readTASTY(ReadTasty.scala:70)
at dotty.tools.dotc.fromtasty.ReadTasty.runOn$$anonfun$1(ReadTasty.scala:25)
at scala.collection.immutable.List.flatMap(List.scala:293)
at dotty.tools.dotc.fromtasty.ReadTasty.runOn(ReadTasty.scala:25)
at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:205)
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:1323)
at dotty.tools.dotc.Run.runPhases$5(Run.scala:215)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:223)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:67)
at dotty.tools.dotc.Run.compileUnits(Run.scala:230)
at dotty.tools.dotc.Run.compileUnits(Run.scala:172)
at dotty.tools.dotc.fromtasty.TASTYRun.compile(TASTYRun.scala:11)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:39)
at dotty.tools.dotc.Driver.process(Driver.scala:186)
at dotty.tools.dotc.Driver.process(Driver.scala:155)
at dotty.tools.dotc.Driver.process(Driver.scala:167)
at scala.tasty.inspector.TastyInspector$.inspectFiles(TastyInspector.scala:103)
at scala.tasty.inspector.TastyInspector$.inspectAllTastyFiles(TastyInspector.scala:52)
at scala.tasty.inspector.TastyInspector$.inspectTastyFiles(TastyInspector.scala:27)
at Main$package$.Test(Main.scala:42)
at Test.main(Main.scala:17)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)