@@ -880,7 +880,7 @@ object SpaceEngine {
880
880
case _ => tp
881
881
})
882
882
883
- def checkExhaustivity (m : Match )(using Context ): Unit = if exhaustivityCheckable(m.selector) then trace(i " checkExhaustivity( $m) " , debug) {
883
+ def checkExhaustivity (m : Match )(using Context ): Unit = trace(i " checkExhaustivity( $m) " , debug) {
884
884
val selTyp = toUnderlying(m.selector.tpe).dealias
885
885
debug.println(i " selTyp = $selTyp" )
886
886
@@ -903,7 +903,7 @@ object SpaceEngine {
903
903
report.warning(PatternMatchExhaustivity (showSpaces(deduped), m), m.selector)
904
904
}
905
905
906
- private def redundancyCheckable (sel : Tree )(using Context ): Boolean =
906
+ private def reachabilityCheckable (sel : Tree )(using Context ): Boolean =
907
907
// Ignore Expr[T] and Type[T] for unreachability as a special case.
908
908
// Quote patterns produce repeated calls to the same unapply method, but with different implicit parameters.
909
909
// Since we assume that repeated calls to the same unapply method overlap
@@ -913,7 +913,7 @@ object SpaceEngine {
913
913
&& ! sel.tpe.widen.isRef(defn.QuotedExprClass )
914
914
&& ! sel.tpe.widen.isRef(defn.QuotedTypeClass )
915
915
916
- def checkRedundancy (m : Match )(using Context ): Unit = if redundancyCheckable(m.selector) then trace(i " checkRedundancy ( $m) " , debug) {
916
+ def checkReachability (m : Match )(using Context ): Unit = trace(i " checkReachability ( $m) " , debug) {
917
917
val cases = m.cases.toIndexedSeq
918
918
919
919
val selTyp = toUnderlying(m.selector.tpe).dealias
@@ -965,4 +965,8 @@ object SpaceEngine {
965
965
i += 1
966
966
}
967
967
}
968
+
969
+ def checkMatch (m : Match )(using Context ): Unit =
970
+ if exhaustivityCheckable(m.selector) then checkExhaustivity(m)
971
+ if reachabilityCheckable(m.selector) then checkReachability(m)
968
972
}
0 commit comments