File tree 3 files changed +29
-4
lines changed
compiler/src/dotty/tools/dotc/core
3 files changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -1361,9 +1361,9 @@ object Types extends TypeUtils {
1361
1361
case tp =>
1362
1362
tp
1363
1363
1364
- /** Widen all top-level singletons reachable by dealiasing
1365
- * and going to the operands of & and |.
1366
- * Overridden and cached in OrType.
1364
+ /** Widen all top-level singletons reachable by dealiasing and going to the
1365
+ * operands of intersections and soft unions (only when `skipSoftUnions` is
1366
+ * `false`). Overridden and cached in [[ OrType ]] .
1367
1367
*/
1368
1368
def widenSingletons (skipSoftUnions : Boolean = false )(using Context ): Type = dealias match {
1369
1369
case tp : SingletonType =>
@@ -3543,7 +3543,7 @@ object Types extends TypeUtils {
3543
3543
myAtoms
3544
3544
3545
3545
override def widenSingletons (skipSoftUnions : Boolean )(using Context ): Type =
3546
- if isSoft && skipSoftUnions then this
3546
+ if ! isSoft || skipSoftUnions then this
3547
3547
else
3548
3548
if widenedRunId != ctx.runId then
3549
3549
myWidened = computeWidenSingletons()
Original file line number Diff line number Diff line change
1
+ type MonthNumber = 1 | 2
2
+
3
+ def main =
4
+ val x = 1 : MonthNumber
5
+ val y : MonthNumber = x
Original file line number Diff line number Diff line change
1
+ type MonthNumber =
2
+ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
3
+
4
+ def main =
5
+ List [(String , MonthNumber )](
6
+ " January" -> 1 ,
7
+ " February" -> 2 ,
8
+ " March" -> 3 ,
9
+ " April" -> 4 ,
10
+ " May" -> 5 ,
11
+ " June" -> 6 ,
12
+ " July" -> 7 ,
13
+ " August" -> 8 ,
14
+ " September" -> 9 ,
15
+ " October" -> 10 ,
16
+ " November" -> 11 ,
17
+ " December" -> 12
18
+ ).foreach { (name, number) =>
19
+ summon[number.type <:< MonthNumber ]
20
+ }
You can’t perform that action at this time.
0 commit comments