File tree 2 files changed +14
-2
lines changed
compiler/src/dotty/tools/dotc/core
2 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -327,13 +327,12 @@ object Types extends TypeUtils {
327
327
def isSingleton (using Context ): Boolean = dealias.isInstanceOf [SingletonType ]
328
328
329
329
/** Is this type a (possibly aliased) singleton type or a type proxy
330
- * or Or/And type known to be a singleton type ?
330
+ * or an AndType where one operand is effectively a singleton?
331
331
*/
332
332
def isEffectivelySingleton (using Context ): Boolean = dealias match
333
333
case tp : SingletonType => true
334
334
case tp : TypeProxy => tp.superType.isEffectivelySingleton
335
335
case AndType (tpL, tpR) => tpL.isEffectivelySingleton || tpR.isEffectivelySingleton
336
- case OrType (tpL, tpR) => tpL.isEffectivelySingleton && tpR.isEffectivelySingleton
337
336
case _ => false
338
337
339
338
/** Is this type of kind `AnyKind`? */
Original file line number Diff line number Diff line change
1
+ class A
2
+ class B extends A
3
+
4
+ def f (a : A , c : A ) =
5
+ val b1 : a.type = a
6
+ val b2 : a.type & B = a.asInstanceOf [a.type & B ]
7
+ val b3 : c.type & A = c
8
+ val b4 : a.type | c.type = c
9
+
10
+ val d1 : b1.type = a
11
+ val d2 : b2.type = a // ok
12
+ val d3 : b3.type = a // error
13
+ val d4 : b4.type = a // error
You can’t perform that action at this time.
0 commit comments