File tree Expand file tree Collapse file tree 2 files changed +7
-6
lines changed
compiler/src/dotty/tools/dotc Expand file tree Collapse file tree 2 files changed +7
-6
lines changed Original file line number Diff line number Diff line change @@ -689,7 +689,8 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
689
689
tvar =>
690
690
! (ctx.typerState.constraint.entry(tvar.origin) `eq` tvar.origin.underlying) ||
691
691
(tvar `eq` removeThisType.prefixTVar),
692
- minimizeAll = false
692
+ minimizeAll = false ,
693
+ maximizeAll = true
693
694
)
694
695
695
696
// If parent contains a reference to an abstract type, then we should
Original file line number Diff line number Diff line change @@ -114,7 +114,7 @@ object Inferencing {
114
114
else {
115
115
val minimize =
116
116
force.minimizeAll ||
117
- variance >= 0 && ! (
117
+ ! force.maximizeAll && variance >= 0 && ! (
118
118
force == ForceDegree .noBottom &&
119
119
defn.isBottomType(ctx.typeComparer.approximation(tvar.origin, fromBelow = true )))
120
120
if (minimize) instantiate(tvar, fromBelow = true )
@@ -466,9 +466,9 @@ trait Inferencing { this: Typer =>
466
466
467
467
/** An enumeration controlling the degree of forcing in "is-dully-defined" checks. */
468
468
@ sharable object ForceDegree {
469
- class Value (val appliesTo : TypeVar => Boolean , val minimizeAll : Boolean )
470
- val none = new Value (_ => false , minimizeAll = false )
471
- val all = new Value (_ => true , minimizeAll = false )
472
- val noBottom = new Value (_ => true , minimizeAll = false )
469
+ class Value (val appliesTo : TypeVar => Boolean , val minimizeAll : Boolean , val maximizeAll : Boolean = false )
470
+ val none = new Value (_ => false , minimizeAll = false , maximizeAll = false )
471
+ val all = new Value (_ => true , minimizeAll = false , maximizeAll = false )
472
+ val noBottom = new Value (_ => true , minimizeAll = false , maximizeAll = false )
473
473
}
474
474
You can’t perform that action at this time.
0 commit comments