@@ -337,13 +337,6 @@ object SpaceEngine {
337
337
case pat : Ident if isBackquoted(pat) =>
338
338
Typ (pat.tpe, decomposed = false )
339
339
340
- case Ident (nme.WILDCARD ) =>
341
- val tp = pat.tpe.stripAnnots.widenSkolem
342
- val isNullable = tp.isInstanceOf [FlexibleType ] || tp.classSymbol.isNullableClass
343
- val tpSpace = Typ (erase(tp, isValue = true ), decomposed = false )
344
- if isNullable then Or (tpSpace :: nullSpace :: Nil )
345
- else tpSpace
346
-
347
340
case Ident (_) | Select (_, _) =>
348
341
Typ (erase(pat.tpe.stripAnnots.widenSkolem, isValue = true ), decomposed = false )
349
342
@@ -716,7 +709,6 @@ object SpaceEngine {
716
709
else NoType
717
710
}.filter(_.exists)
718
711
parts
719
- case tp : FlexibleType => List (tp.underlying, ConstantType (Constant (null )))
720
712
case _ => ListOfNoType
721
713
end rec
722
714
@@ -939,11 +931,15 @@ object SpaceEngine {
939
931
then project(OrType (selTyp, ConstantType (Constant (null )), soft = false ))
940
932
else project(selTyp)
941
933
var hadNullOnly = false
934
+ def projectPat (pat : Tree ): Space =
935
+ // Project toplevel wildcard pattern to nullable
936
+ if isNullable && isWildcardArg(pat) then Or (project(pat) :: nullSpace :: Nil )
937
+ else project(pat)
942
938
@ tailrec def recur (cases : List [CaseDef ], prevs : List [Space ], deferred : List [Tree ]): Unit =
943
939
cases match
944
940
case Nil =>
945
941
case CaseDef (pat, guard, _) :: rest =>
946
- val curr = trace(i " project( $pat) " )(project (pat))
942
+ val curr = trace(i " project( $pat) " )(projectPat (pat))
947
943
val covered = trace(" covered" )(simplify(intersect(curr, targetSpace)))
948
944
val prev = trace(" prev" )(simplify(Or (prevs)))
949
945
if prev == Empty && covered == Empty then // defer until a case is reachable
0 commit comments