File tree 2 files changed +12
-1
lines changed
compiler/src/dotty/tools/dotc/core 2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -2222,13 +2222,15 @@ class TypeComparer(initctx: Context) extends ConstraintHandling[AbsentContext] w
2222
2222
/** Returns last check's debug mode, if explicitly enabled. */
2223
2223
def lastTrace (): String = " "
2224
2224
2225
+ /** Does `tycon` have a field with type `tparam`? Special cased for `scala.*:`
2226
+ * as that type is artificially added to tuples. */
2225
2227
private def typeparamCorrespondsToField (tycon : Type , tparam : TypeParamInfo ): Boolean =
2226
2228
productSelectorTypes(tycon, null ).exists {
2227
2229
case tp : TypeRef =>
2228
2230
tp.designator.eq(tparam) // Bingo!
2229
2231
case _ =>
2230
2232
false
2231
- }
2233
+ } || tycon.derivesFrom(defn. PairClass )
2232
2234
2233
2235
/** Is `tp` an empty type?
2234
2236
*
Original file line number Diff line number Diff line change
1
+ object Test {
2
+ type DU [A <: Tuple ] <: Tuple = A match {
3
+ case Unit => Unit
4
+ case Unit *: tl => DU [tl]
5
+ case hd *: tl => hd *: DU [tl]
6
+ }
7
+
8
+ (1 , 2 ): DU [Int *: Int *: Unit ]
9
+ }
You can’t perform that action at this time.
0 commit comments