@@ -104,7 +104,6 @@ trait TreeAndTypeAnalysis extends Debugging {
104
104
// TODO case _ if tp.isTupleType => // recurse into component types
105
105
case modSym : ModuleClassSymbol =>
106
106
Some (List (tp))
107
- // make sure it's not a primitive, else (5: Byte) match { case 5 => ... } sees no Byte
108
107
case sym : RefinementClassSymbol =>
109
108
val parentSubtypes : List [Option [List [Type ]]] = tp.parents.map(parent => enumerateSubtypes(parent))
110
109
if (parentSubtypes exists (_.isDefined))
@@ -115,10 +114,8 @@ trait TreeAndTypeAnalysis extends Debugging {
115
114
parentSubtypes flatMap (_.getOrElse(Nil )) filter (_ <:< tp)
116
115
)
117
116
else None
118
- case sym if ! sym.isSealed || isPrimitiveValueClass(sym) =>
119
- debug.patmat(" enum unsealed " + ((tp, sym, sym.isSealed, isPrimitiveValueClass(sym))))
120
- None
121
- case sym =>
117
+ // make sure it's not a primitive, else (5: Byte) match { case 5 => ... } sees no Byte
118
+ case sym if sym.isSealed && ! isPrimitiveValueClass(sym) =>
122
119
val subclasses = debug.patmatResult(s " enum $sym sealed, subclasses " )(
123
120
// symbols which are both sealed and abstract need not be covered themselves, because
124
121
// all of their children must be and they cannot otherwise be created.
@@ -146,6 +143,9 @@ trait TreeAndTypeAnalysis extends Debugging {
146
143
else None
147
144
}
148
145
})
146
+ case sym =>
147
+ debug.patmat(" enum unsealed " + ((tp, sym, sym.isSealed, isPrimitiveValueClass(sym))))
148
+ None
149
149
}
150
150
151
151
// approximate a type to the static type that is fully checkable at run time,
0 commit comments