Skip to content

Commit

Permalink
Fix tests crashing under stricter pattern binding rules
Browse files Browse the repository at this point in the history
Before this commit, the tests listed below would crash when the stricter
pattern binding rules were enforced (whether using `-source future` or
now enabled by default)

  - neg/parser-stability-14.scala
  - neg/i4453.scala
  - fuzzy/CCE-aafcaa9cd2611d22f63273738d637f5bec6e7152.scala
  - fuzzy/comment3.scala

with a common stack trace:

  dotty.tools.dotc.core.Types$PreviousErrorType cannot be cast to dotty.tools.dotc.core.Types$TermRef
  dotty.tools.dotc.transform.patmat.SpaceEngine$.isIrrefutable(Space.scala:316)
  dotty.tools.dotc.typer.Checking.recur$1(Checking.scala:828)
  dotty.tools.dotc.typer.Checking.checkIrrefutable(Checking.scala:843)
  dotty.tools.dotc.typer.Checking.checkIrrefutable$(Checking.scala:775)
  dotty.tools.dotc.typer.Typer.checkIrrefutable(Typer.scala:119)
    ...
  • Loading branch information
griggt committed Mar 3, 2022
1 parent a2c2458 commit 933bade
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions compiler/src/dotty/tools/dotc/transform/patmat/Space.scala
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,11 @@ object SpaceEngine {
*/
def isIrrefutable(unapp: tpd.Tree, argLen: Int)(using Context): Boolean = {
val fun1 = tpd.funPart(unapp)
val funRef = fun1.tpe.asInstanceOf[TermRef]
isIrrefutable(funRef, argLen)
fun1.tpe match
case funRef: TermRef =>
isIrrefutable(funRef, argLen)
case _ =>
false
}
}

Expand Down

0 comments on commit 933bade

Please sign in to comment.