Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ArrayIndexOutOfBoundsException in parser with -rewrite and -indent flags #19893

Open
Bersier opened this issue Mar 6, 2024 · 4 comments
Open

Comments

@Bersier
Copy link
Contributor

Bersier commented Mar 6, 2024

Settings

Scala version: 3.4.0
sbt version: 1.9.9
scalac options: -rewrite, -indent
jvm version: 21.0.2
dependencies: none

Compiler crash message

[info]   exception occurred while typechecking /mnt/c/<...>/Main.scala
[info]
[info]   An unhandled exception was thrown in the compiler.
[info]   Please file a crash report here:
[info]   https://github.com/lampepfl/dotty/issues/new/choose
[info]   For non-enriched exceptions, compile with -Yno-enrich-error-messages.
[info]
[info]      while compiling: /mnt/c/<...>/Main.scala
[info]         during phase: typer
[info]                 mode: Mode(ImplicitsEnabled)
[info]      library version: version 2.13.12
[info]     compiler version: version 3.4.0
[info]             settings: -bootclasspath /home/bersier/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.4.0/scala3-library_3-3.4.0.jar:/home/bersier/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar -classpath /mnt/c/<...>/target/scala-3.4.0/classes -d /mnt/c/<...>/target/scala-3.4.0/classes -indent true -rewrite Some(dotty.tools.dotc.rewrites.Rewrites@6c1ffd76)
[error] ## Exception when compiling 52 sources to /mnt/c/<...>/target/scala-3.4.0/classes
[error] java.lang.ArrayIndexOutOfBoundsException: Index -3 out of bounds for length 228
[error] dotty.tools.dotc.parsing.Parsers$Parser.testChar(Parsers.scala:705)
[error] dotty.tools.dotc.parsing.Parsers$Parser.testChars(Parsers.scala:710)
[error] dotty.tools.dotc.parsing.Parsers$Parser.bracesToIndented(Parsers.scala:826)
[error] dotty.tools.dotc.parsing.Parsers$Parser.inBracesOrIndented(Parsers.scala:621)
[error] dotty.tools.dotc.parsing.Parsers$Parser.inDefScopeBraces(Parsers.scala:625)
[error] dotty.tools.dotc.parsing.Parsers$Parser.blockExpr(Parsers.scala:2742)
[error] dotty.tools.dotc.parsing.Parsers$Parser.simpleExpr(Parsers.scala:2583)
[error] dotty.tools.dotc.parsing.Parsers$Parser.$init$$$anonfun$9(Parsers.scala:2536)
[error] dotty.tools.dotc.parsing.Parsers$Parser.postfixExpr(Parsers.scala:2512)
[error] dotty.tools.dotc.parsing.Parsers$Parser.expr1(Parsers.scala:2354)
[error] dotty.tools.dotc.parsing.Parsers$Parser.expr(Parsers.scala:2244)
[error] dotty.tools.dotc.parsing.Parsers$Parser.blockStatSeq$$anonfun$1(Parsers.scala:4396)
[error] dotty.tools.dotc.parsing.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:525)
[error] dotty.tools.dotc.parsing.Parsers$Parser.blockStatSeq(Parsers.scala:4408)
[error] dotty.tools.dotc.printing.SyntaxHighlighting$.highlight(SyntaxHighlighting.scala:128)
[error] dotty.tools.dotc.reporting.MessageRendering.sourceLines(MessageRendering.scala:66)
[error] dotty.tools.dotc.reporting.MessageRendering.messageAndPos(MessageRendering.scala:245)
[error] dotty.tools.dotc.reporting.MessageRendering.messageAndPos$(MessageRendering.scala:20)
[error] dotty.tools.dotc.reporting.AbstractReporter.messageAndPos(AbstractReporter.scala:8)
[error] dotty.tools.xsbt.DelegatingReporter.doReport(DelegatingReporter.java:57)
[error] dotty.tools.dotc.reporting.Reporter.issueUnconfigured(Reporter.scala:171)
[error] dotty.tools.dotc.reporting.Reporter.go$1(Reporter.scala:186)
[error] dotty.tools.dotc.reporting.Reporter.issueIfNotSuppressed(Reporter.scala:200)
[error] dotty.tools.dotc.Run.reportSuspendedMessages$$anonfun$2$$anonfun$1(Run.scala:109)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:128)
[error] dotty.tools.dotc.Run.dotty$tools$dotc$Run$suppressions$$$_$reportSuspendedMessages$$anonfun$2(Run.scala:109)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.Option.foreach(Option.scala:437)
[error] dotty.tools.dotc.Run$suppressions$.reportSuspendedMessages(Run.scala:109)
[error] dotty.tools.dotc.typer.TyperPhase.typeCheck$$anonfun$1(TyperPhase.scala:51)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] dotty.tools.dotc.core.Phases$Phase.monitor(Phases.scala:477)
[error] dotty.tools.dotc.typer.TyperPhase.typeCheck(TyperPhase.scala:53)
[error] dotty.tools.dotc.typer.TyperPhase.$anonfun$4(TyperPhase.scala:99)
[error] scala.collection.Iterator$$anon$6.hasNext(Iterator.scala:479)
[error] scala.collection.Iterator$$anon$9.hasNext(Iterator.scala:583)
[error] scala.collection.immutable.List.prependedAll(List.scala:155)
[error] scala.collection.immutable.List$.from(List.scala:684)
[error] scala.collection.immutable.List$.from(List.scala:681)
[error] scala.collection.IterableOps$WithFilter.map(Iterable.scala:898)
[error] dotty.tools.dotc.typer.TyperPhase.runOn(TyperPhase.scala:100)
[error] dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] dotty.tools.dotc.Run.runPhases$1(Run.scala:337)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:348)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:357)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:71)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:357)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:261)
[error] dotty.tools.dotc.Run.compile(Run.scala:246)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
[error] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
[error] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2371)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2321)
[error] sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
[error] sbt.internal.io.Retry$.apply(Retry.scala:47)
[error] sbt.internal.io.Retry$.apply(Retry.scala:29)
[error] sbt.internal.io.Retry$.apply(Retry.scala:24)
[error] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2319)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error] sbt.Execute.work(Execute.scala:292)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error] java.base/java.lang.Thread.run(Thread.java:1583)
[error]
[error] java.lang.ArrayIndexOutOfBoundsException: Index -3 out of bounds for length 228
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.testChar(Parsers.scala:705)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.testChars(Parsers.scala:710)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.bracesToIndented(Parsers.scala:826)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.inBracesOrIndented(Parsers.scala:621)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.inDefScopeBraces(Parsers.scala:625)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.blockExpr(Parsers.scala:2742)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.simpleExpr(Parsers.scala:2583)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.$init$$$anonfun$9(Parsers.scala:2536)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.postfixExpr(Parsers.scala:2512)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.expr1(Parsers.scala:2354)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.expr(Parsers.scala:2244)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.blockStatSeq$$anonfun$1(Parsers.scala:4396)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:525)
[error]         at dotty.tools.dotc.parsing.Parsers$Parser.blockStatSeq(Parsers.scala:4408)
[error]         at dotty.tools.dotc.printing.SyntaxHighlighting$.highlight(SyntaxHighlighting.scala:128)
[error]         at dotty.tools.dotc.reporting.MessageRendering.sourceLines(MessageRendering.scala:66)
[error]         at dotty.tools.dotc.reporting.MessageRendering.messageAndPos(MessageRendering.scala:245)
[error]         at dotty.tools.dotc.reporting.MessageRendering.messageAndPos$(MessageRendering.scala:20)
[error]         at dotty.tools.dotc.reporting.AbstractReporter.messageAndPos(AbstractReporter.scala:8)
[error]         at dotty.tools.xsbt.DelegatingReporter.doReport(DelegatingReporter.java:57)
[error]         at dotty.tools.dotc.reporting.Reporter.issueUnconfigured(Reporter.scala:171)
[error]         at dotty.tools.dotc.reporting.Reporter.go$1(Reporter.scala:186)
[error]         at dotty.tools.dotc.reporting.Reporter.issueIfNotSuppressed(Reporter.scala:200)
[error]         at dotty.tools.dotc.Run.reportSuspendedMessages$$anonfun$2$$anonfun$1(Run.scala:109)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error]         at scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:128)
[error]         at dotty.tools.dotc.Run.dotty$tools$dotc$Run$suppressions$$$_$reportSuspendedMessages$$anonfun$2(Run.scala:109)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error]         at scala.Option.foreach(Option.scala:437)
[error]         at dotty.tools.dotc.Run$suppressions$.reportSuspendedMessages(Run.scala:109)
[error]         at dotty.tools.dotc.typer.TyperPhase.typeCheck$$anonfun$1(TyperPhase.scala:51)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error]         at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error]         at dotty.tools.dotc.core.Phases$Phase.monitor(Phases.scala:477)
[error]         at dotty.tools.dotc.typer.TyperPhase.typeCheck(TyperPhase.scala:53)
[error]         at dotty.tools.dotc.typer.TyperPhase.$anonfun$4(TyperPhase.scala:99)
[error]         at scala.collection.Iterator$$anon$6.hasNext(Iterator.scala:479)
[error]         at scala.collection.Iterator$$anon$9.hasNext(Iterator.scala:583)
[error]         at scala.collection.immutable.List.prependedAll(List.scala:155)
[error]         at scala.collection.immutable.List$.from(List.scala:684)
[error]         at scala.collection.immutable.List$.from(List.scala:681)
[error]         at scala.collection.IterableOps$WithFilter.map(Iterable.scala:898)
[error]         at dotty.tools.dotc.typer.TyperPhase.runOn(TyperPhase.scala:100)
[error]         at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
[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$1(Run.scala:337)
[error]         at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:348)
[error]         at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:357)
[error]         at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:71)
[error]         at dotty.tools.dotc.Run.compileUnits(Run.scala:357)
[error]         at dotty.tools.dotc.Run.compileSources(Run.scala:261)
[error]         at dotty.tools.dotc.Run.compile(Run.scala:246)
[error]         at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
[error]         at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
[error]         at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error]         at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error]         at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
[error]         at sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
[error]         at sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
[error]         at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
[error]         at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error]         at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error]         at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error]         at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error]         at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
[error]         at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
[error]         at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
[error]         at sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error]         at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2371)
[error]         at sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2321)
[error]         at sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
[error]         at sbt.internal.io.Retry$.apply(Retry.scala:47)
[error]         at sbt.internal.io.Retry$.apply(Retry.scala:29)
[error]         at sbt.internal.io.Retry$.apply(Retry.scala:24)
[error]         at sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error]         at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2319)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error]         at sbt.Execute.work(Execute.scala:292)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error]         at java.base/java.lang.Thread.run(Thread.java:1583)
[error] (Compile / compileIncremental) java.lang.ArrayIndexOutOfBoundsException: Index -3 out of bounds for length 228

Unfortunately, I am not ready to minimize the code, and the project is private. So for now, this is mostly posted for statistical purposes. However, if someone wants to look into it, I'm open to helping by providing more information, if it is not too hard to do so.

@Bersier Bersier added itype:bug itype:crash stat:needs triage Every issue needs to have an "area" and "itype" label labels Mar 6, 2024
@SethTisue SethTisue changed the title Out-of-bounds exception with -rewrite and -indent flags ArrayIndexOutOfBoundsException in parser with -rewrite and -indent flags Mar 6, 2024
@SethTisue
Copy link
Member

It's notable that dotty.tools.dotc.printing.SyntaxHighlighting$.highlight(SyntaxHighlighting.scala:128) appears in the stack trace — that suggests this may be a meta-issue where the root cause of the problem is being obscured by an exception that occurs during error handling/reporting. Even without knowing the details of what's causing this, perhaps MessageRendering could react more robustly when something like this goes wrong.

@Gedochao Gedochao added area:rewriting tool area:parser and removed stat:needs triage Every issue needs to have an "area" and "itype" label labels Mar 12, 2024
@mbovel
Copy link
Member

mbovel commented Mar 25, 2024

@Bersier thanks for reporting!

Could you please try to compile the same code with --color never and report the error message? As Seth wrote, the error seems to happen when highlighting some code producing an error, so it would be useful to know which code that is.

@Bersier
Copy link
Contributor Author

Bersier commented Mar 27, 2024

@mbovel The crash does indeed go away with -color:never. Here is the error message that could not be printed before:

[error] -- Error: /mnt/c/<...>/graph/GraphImpl.scala:46:52
[error] 46 |  private[this] case class EdgeImpl(source: Vertex, label: E, target: Vertex) extends Edge
[error]    |                                                    ^^^^^^^^
[error]    |covariant type E occurs in contravariant position in type E of parameter label

@mbovel mbovel added stat:needs minimization Needs a self contained minimization exp:intermediate Spree Suitable for a future Spree labels Apr 8, 2024
@mbovel
Copy link
Member

mbovel commented Apr 26, 2024

I haven't been able to minimize this. I tried:

//> using scala 3.4.0
//> using options -rewrite -indent

sealed trait Vertex {}
sealed trait Edge {}

class Graph[+E] {
  private[this] case class EdgeImpl(source: Vertex, label: E, target: Vertex) extends Edge {}
}

class Graph2[+E] {
  private[this] case class EdgeImpl(source: Vertex, label: E, target: Vertex) extends Edge {
  }
}

But both compile successfully.

@Bersier do you have curly braces on the displayed line in your code?

Also, I noted that the error happens in bracesToIndented, which is only enabled if in.rewriteToIndent is true, which should probably not be the case when highlighting code.

@mbovel mbovel removed exp:intermediate Spree Suitable for a future Spree labels Apr 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants