Skip to content

Span error caused by invalid match syntax #23729

@kyouko-taiga

Description

@kyouko-taiga

Compiler version

Scala compiler version 3.6.4 -- Copyright 2002-2025, LAMP/EPFL

Minimized code

trait Collection[Self, Element]: type Index extension (self: Self) def start: Index sealed trait Tree[+T] object Tree: case object Empty extends Tree[Nothing] case class Node[+T](value: T, lhs: Tree[T], rhs: Tree[T]) extends Tree[T] enum Direction: case Left, Right, Here given [T]: Collection[Tree[T], T] with type Index = List[Direction] extension (self: Tree[T]) def start: List[Direction] = match self case Empty => Nil case Node(_, l, _) => l.start :+ Left

Output

Exception in thread "main" java.lang.AssertionError: assertion failed: position error, parent span does not contain child span parent = [T] extends Collection[Tree[T], T] { type Index = List[Direction] extension (self: Tree[T]) { def start: List[Direction] = _root_.scala.Predef.??? def <error> = _root_.scala.Predef.??? def <error> = _root_.scala.Predef.??? } } # -1, parent span = <1682..1884>, child = extension (self: Tree[T]) { def start: List[Direction] = _root_.scala.Predef.??? def <error> = _root_.scala.Predef.??? def <error> = _root_.scala.Predef.??? } # -1, child span = [1747..2046]	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)	at dotty.tools.dotc.ast.Positioned.check$1(Positioned.scala:177)	at dotty.tools.dotc.ast.Positioned.check$1$$anonfun$3(Positioned.scala:207)	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)	at scala.collection.immutable.List.foreach(List.scala:334)	at dotty.tools.dotc.ast.Positioned.check$1(Positioned.scala:207)	at dotty.tools.dotc.ast.Positioned.checkPos(Positioned.scala:228)	at dotty.tools.dotc.ast.Positioned.check$1(Positioned.scala:202)	at dotty.tools.dotc.ast.Positioned.checkPos(Positioned.scala:228)	at dotty.tools.dotc.ast.Positioned.check$1(Positioned.scala:202)	at dotty.tools.dotc.ast.Positioned.check$1$$anonfun$3(Positioned.scala:207)	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)	at scala.collection.immutable.List.foreach(List.scala:334)	at dotty.tools.dotc.ast.Positioned.check$1(Positioned.scala:207)	at dotty.tools.dotc.ast.Positioned.checkPos(Positioned.scala:228)	at dotty.tools.dotc.parsing.Parser.parse$$anonfun$1(ParserPhase.scala:39)	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)	at dotty.tools.dotc.core.Phases$Phase.monitor(Phases.scala:510)	at dotty.tools.dotc.parsing.Parser.parse(ParserPhase.scala:40)	at dotty.tools.dotc.parsing.Parser.$anonfun$2(ParserPhase.scala:52)	at scala.collection.Iterator$$anon$6.hasNext(Iterator.scala:479)	at scala.collection.Iterator$$anon$9.hasNext(Iterator.scala:583)	at scala.collection.immutable.List.prependedAll(List.scala:152)	at scala.collection.immutable.List$.from(List.scala:685)	at scala.collection.immutable.List$.from(List.scala:682)	at scala.collection.IterableOps$WithFilter.map(Iterable.scala:900)	at dotty.tools.dotc.parsing.Parser.runOn(ParserPhase.scala:51)	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:343)	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$1(Run.scala:336)	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:383)	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:395)	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)	at dotty.tools.dotc.Run.compileUnits(Run.scala:395)	at dotty.tools.dotc.Run.compileSources(Run.scala:282)	at dotty.tools.dotc.Run.compile(Run.scala:267)	at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)	at dotty.tools.dotc.Driver.process(Driver.scala:201)	at dotty.tools.dotc.Driver.process(Driver.scala:169)	at dotty.tools.dotc.Driver.process(Driver.scala:181)	at dotty.tools.dotc.Driver.main(Driver.scala:211)	at dotty.tools.dotc.Main.main(Main.scala) Compilation failed

Expectation

Compiler should not crash.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions