Skip to content

Commit

Permalink
Fix tests crashing under strict pattern binding warnings
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 May 11, 2022
1 parent 7eb227f commit 5d2f10e
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions compiler/src/dotty/tools/dotc/transform/patmat/Space.scala
Original file line number Diff line number Diff line change
Expand Up @@ -312,9 +312,9 @@ object SpaceEngine {
* @param unapp The unapply function tree
*/
def isIrrefutable(unapp: tpd.Tree, argLen: Int)(using Context): Boolean = {
val fun1 = tpd.funPart(unapp)
val funRef = fun1.tpe.asInstanceOf[TermRef]
isIrrefutable(funRef, argLen)
tpd.funPart(unapp).tpe match
case funRef: TermRef => isIrrefutable(funRef, argLen)
case _: ErrorType => false
}
}

Expand Down

0 comments on commit 5d2f10e

Please sign in to comment.