Skip to content

Don't pop outermost region when skipping#25738

Open
som-snytt wants to merge 1 commit intoscala:mainfrom
som-snytt:issue/25715-scanner-region-npe
Open

Don't pop outermost region when skipping#25738
som-snytt wants to merge 1 commit intoscala:mainfrom
som-snytt:issue/25715-scanner-region-npe

Conversation

@som-snytt
Copy link
Copy Markdown
Contributor

@som-snytt som-snytt commented Apr 8, 2026

Fixes #25683

When skipping on error, tokens are consumed and current region is adjusted. But don't blow past the outermost region. There is an existing guard for RBRACE.

On outdent, skip will drop until indented. Normally, on subsequent outdent, one expects a corresponding indent region, but that may have been stripped on error recovery.

How much have you relied on LLM-based tools in this contribution?

I forgot to again.

How was the solution tested?

After diagnosis, simplified the ticket example. Recovery from the first error sets up the crash.

Additional notes

I always wondered how regions worked.

@som-snytt
Copy link
Copy Markdown
Contributor Author

2nd try after #25712 (comment)

Exception thrown onComplete (probably by a reporter) in tests/debug/eval-i485.scala: class java.io.IOException
java.io.IOException: Failed getting JDI port of child JVM: got ERROR: transport error 202: send failed: Broken pipe
	at dotty.tools.vulpix.RunnerOrchestration$RunnerMonitor$RunnerProcess.getJdiPort(RunnerOrchestration.scala:113)
	at dotty.tools.vulpix.RunnerOrchestration$$anon$1.readJdiPort(RunnerOrchestration.scala:144)
	at dotty.tools.debug.DebugTests$DebugTest.verifyDebug$$anonfun$1(DebugTests.scala:60)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at dotty.tools.vulpix.RunnerOrchestration$RunnerMonitor$Runner.debugMain(RunnerOrchestration.scala:149)
	at dotty.tools.vulpix.RunnerOrchestration.dotty$tools$vulpix$RunnerOrchestration$RunnerMonitor$$_$debugMain$$anonfun$1(RunnerOrchestration.scala:93)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at dotty.tools.vulpix.RunnerOrchestration$RunnerMonitor.withRunner(RunnerOrchestration.scala:237)
	at dotty.tools.vulpix.RunnerOrchestration$RunnerMonitor.debugMain(RunnerOrchestration.scala:93)
	at dotty.tools.vulpix.RunnerOrchestration.debugMain(RunnerOrchestration.scala:72)
	at dotty.tools.vulpix.RunnerOrchestration.debugMain$(RunnerOrchestration.scala:38)
	at dotty.tools.debug.DebugTests$.debugMain(DebugTests.scala:24)
	at dotty.tools.debug.DebugTests$DebugTest.verifyDebug(DebugTests.scala:74)
	at dotty.tools.debug.DebugTests$DebugTest.onSuccess(DebugTests.scala:50)
	at dotty.tools.vulpix.ParallelTesting$CompilationLogic.dotty$tools$vulpix$ParallelTesting$CompilationLogic$$onComplete(ParallelTesting.scala:305)
	at dotty.tools.vulpix.ParallelTesting$$anon$3.checkTestSource$$anonfun$1(ParallelTesting.scala:292)
	at dotty.tools.vulpix.ParallelTesting$$anon$3.checkTestSource$$anonfun$adapted$1(ParallelTesting.scala:294)
	at scala.Function0.apply$mcV$sp(Function0.scala:42)
	at dotty.tools.vulpix.ParallelTesting$Test.tryCompile(ParallelTesting.scala:478)
	at dotty.tools.vulpix.ParallelTesting$$anon$3.checkTestSource(ParallelTesting.scala:294)
	at dotty.tools.vulpix.ParallelTesting$Test$LoggedRunnable.run(ParallelTesting.scala:374)
	at dotty.tools.vulpix.ParallelTesting$Test$LoggedRunnable.run$(ParallelTesting.scala:356)
	at dotty.tools.vulpix.ParallelTesting$$anon$3.run(ParallelTesting.scala:289)
	at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1375)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)

@som-snytt som-snytt marked this pull request as ready for review April 9, 2026 04:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NPE in Scanner

1 participant