@@ -337,13 +337,6 @@ object SpaceEngine {
337337    case  pat : Ident  if  isBackquoted(pat) => 
338338      Typ (pat.tpe, decomposed =  false )
339339
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- 
347340    case  Ident (_) |  Select (_, _) => 
348341      Typ (erase(pat.tpe.stripAnnots.widenSkolem, isValue =  true ), decomposed =  false )
349342
@@ -716,7 +709,6 @@ object SpaceEngine {
716709          else  NoType 
717710        }.filter(_.exists)
718711        parts
719-       case  tp : FlexibleType  =>  List (tp.underlying, ConstantType (Constant (null )))
720712      case  _ =>  ListOfNoType 
721713    end  rec 
722714
@@ -939,11 +931,15 @@ object SpaceEngine {
939931      then  project(OrType (selTyp, ConstantType (Constant (null )), soft =  false ))
940932      else  project(selTyp)
941933    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)
942938    @ tailrec def  recur (cases : List [CaseDef ], prevs : List [Space ], deferred : List [Tree ]):  Unit  = 
943939      cases match 
944940        case  Nil  => 
945941        case  CaseDef (pat, guard, _) ::  rest => 
946-           val  curr  =  trace(i " project( $pat) " )(project (pat))
942+           val  curr  =  trace(i " project( $pat) " )(projectPat (pat))
947943          val  covered  =  trace(" covered" 
948944          val  prev  =  trace(" prev" Or (prevs)))
949945          if  prev ==  Empty  &&  covered ==  Empty  then  //  defer until a case is reachable
0 commit comments