File tree Expand file tree Collapse file tree 2 files changed +27
-3
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Original file line number Diff line number Diff line change @@ -6507,7 +6507,7 @@ object Types extends TypeUtils {
6507
6507
protected def range (lo : Type , hi : Type ): Type =
6508
6508
if variance > 0 then hi
6509
6509
else if variance < 0 then
6510
- if (lo eq defn.NothingType ) && hi.hasSimpleKind then
6510
+ if (lo eq defn.NothingType ) then
6511
6511
// Approximate by Nothing & hi instead of just Nothing, in case the
6512
6512
// approximated type is used as the prefix of another type (this would
6513
6513
// lead to a type with a `NoDenotation` denot and a possible
@@ -6518,8 +6518,14 @@ object Types extends TypeUtils {
6518
6518
// example if Nothing is the type of a parameter being depended on in
6519
6519
// a MethodType)
6520
6520
//
6521
- // Test case in tests/pos/i23530.scala
6522
- AndType (lo, hi)
6521
+ // Test case in tests/pos/i23530.scala (and tests/pos/i23627.scala for
6522
+ // the higher-kinded case which requires eta-expansion)
6523
+ hi.etaExpand match
6524
+ case expandedHi : HKTypeLambda =>
6525
+ expandedHi.derivedLambdaType(resType = AndType (lo, expandedHi.resType))
6526
+ case _ =>
6527
+ // simple-kinded case
6528
+ AndType (lo, hi)
6523
6529
else
6524
6530
lo
6525
6531
else if lo `eq` hi then lo
Original file line number Diff line number Diff line change
1
+ trait TestContainer :
2
+ trait TestPath [T ]:
3
+ type AbsMember
4
+
5
+ extension (path : TestPath [? ])
6
+ infix def ext (color : path.AbsMember ): Unit = ???
7
+ infix def ext (other : Int ): Unit = ???
8
+
9
+ object Repro :
10
+ val dc2 : TestContainer = ???
11
+ import dc2 .TestPath
12
+
13
+ def transition (path : TestPath [? ])(using DummyImplicit ): TestPath [? ] = ???
14
+
15
+ def test : Unit =
16
+ val di : TestPath [? ] = ???
17
+ // error
18
+ val z1 = transition(di).ext(1 )
You can’t perform that action at this time.
0 commit comments