Skip to content

Commit 1ed2031

Browse files
committed
Refactor enumerateSubtypes
- reorder to make "unenumerable" the last case - reunite an orphaned comment with its loved ones.
1 parent ad9d87b commit 1ed2031

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/compiler/scala/tools/nsc/transform/patmat/MatchAnalysis.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ trait TreeAndTypeAnalysis extends Debugging {
104104
// TODO case _ if tp.isTupleType => // recurse into component types
105105
case modSym: ModuleClassSymbol =>
106106
Some(List(tp))
107-
// make sure it's not a primitive, else (5: Byte) match { case 5 => ... } sees no Byte
108107
case sym: RefinementClassSymbol =>
109108
val parentSubtypes: List[Option[List[Type]]] = tp.parents.map(parent => enumerateSubtypes(parent))
110109
if (parentSubtypes exists (_.isDefined))
@@ -115,10 +114,8 @@ trait TreeAndTypeAnalysis extends Debugging {
115114
parentSubtypes flatMap (_.getOrElse(Nil)) filter (_ <:< tp)
116115
)
117116
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) =>
122119
val subclasses = debug.patmatResult(s"enum $sym sealed, subclasses")(
123120
// symbols which are both sealed and abstract need not be covered themselves, because
124121
// all of their children must be and they cannot otherwise be created.
@@ -146,6 +143,9 @@ trait TreeAndTypeAnalysis extends Debugging {
146143
else None
147144
}
148145
})
146+
case sym =>
147+
debug.patmat("enum unsealed "+ ((tp, sym, sym.isSealed, isPrimitiveValueClass(sym))))
148+
None
149149
}
150150

151151
// approximate a type to the static type that is fully checkable at run time,

0 commit comments

Comments
 (0)