File tree 4 files changed +49
-2
lines changed
compiler/src/dotty/tools/dotc/core
4 files changed +49
-2
lines changed Original file line number Diff line number Diff line change @@ -1143,8 +1143,9 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
1143
1143
tl => otherTycon.appliedTo(bodyArgs(tl)))
1144
1144
else
1145
1145
otherTycon
1146
- (assumedTrue(tycon) || directionalIsSubType(tycon, adaptedTycon)) &&
1147
- directionalRecur(adaptedTycon.appliedTo(args), other)
1146
+ rollbackConstraintsUnless :
1147
+ (assumedTrue(tycon) || directionalIsSubType(tycon, adaptedTycon))
1148
+ && directionalRecur(adaptedTycon.appliedTo(args), other)
1148
1149
}
1149
1150
}
1150
1151
end compareAppliedTypeParamRef
Original file line number Diff line number Diff line change
1
+ class Box [T ](val value : T )
2
+
3
+ def boo [F [_], A ](e : F [Box [A ]]): F [A ] = ???
4
+
5
+ type Result [G [_], B ] = G [Box [B ]]
6
+
7
+ def main =
8
+ val b : Result [Option , Int ] = ???
9
+ val c = boo(b)
10
+ c : Option [Int ]
Original file line number Diff line number Diff line change
1
+ trait TCl [F [_]]
2
+
3
+ def boo [F [_], A ](e : F [Option [A ]], ev : TCl [F ]): Unit = ()
4
+
5
+ type Result [F [_], A ] = F [Option [A ]]
6
+
7
+ @ main def main =
8
+ summon[Result [Option , Int ] =:= Option [Option [Int ]]]
9
+
10
+ val ev = new TCl [Option ] {}
11
+
12
+ val b : Result [Option , Int ] = None
13
+ boo(b, ev)
14
+
15
+ val b2 : Option [Option [Int ]] = None
16
+ boo(b2, ev)
Original file line number Diff line number Diff line change
1
+ object Main {
2
+ trait TCl [F [_]]
3
+
4
+ implicit class Stx [F [_], A ](e : F [Option [A ]]) {
5
+ def boo (implicit ev : TCl [F ]): Unit = ()
6
+ }
7
+
8
+ type Result [F [_], A ] = F [Option [A ]]
9
+
10
+ implicit val t : TCl [Option ] = new TCl [Option ] {}
11
+
12
+ def main (args : Array [String ]): Unit = {
13
+ val b : Result [Option , Int ] = None
14
+ b.boo
15
+
16
+ // works without the alias:
17
+ val b2 : Option [Option [Int ]] = None
18
+ b2.boo
19
+ }
20
+ }
You can’t perform that action at this time.
0 commit comments