File tree 1 file changed +5
-1
lines changed
compiler/src/dotty/tools/dotc/core
1 file changed +5
-1
lines changed Original file line number Diff line number Diff line change @@ -5886,14 +5886,18 @@ object Types {
5886
5886
if (distributeArgs(args, tp.tyconTypeParams))
5887
5887
range(tp.derivedAppliedType(tycon, loBuf.toList),
5888
5888
tp.derivedAppliedType(tycon, hiBuf.toList))
5889
- else if tycon.isLambdaSub then
5889
+ else if tycon.isLambdaSub || args.exists(isRangeOfNonTermTypes) then
5890
5890
range(defn.NothingType , defn.AnyType )
5891
5891
else
5892
5892
// See lampepfl/dotty#14152
5893
5893
range(defn.NothingType , tp.derivedAppliedType(tycon, args.map(rangeToBounds)))
5894
5894
else tp.derivedAppliedType(tycon, args)
5895
5895
}
5896
5896
5897
+ private def isRangeOfNonTermTypes (tp : Type ): Boolean = tp match
5898
+ case Range (lo, hi) => ! lo.isInstanceOf [TermType ] || ! hi.isInstanceOf [TermType ]
5899
+ case _ => false
5900
+
5897
5901
override protected def derivedAndType (tp : AndType , tp1 : Type , tp2 : Type ): Type =
5898
5902
if (isRange(tp1) || isRange(tp2)) range(lower(tp1) & lower(tp2), upper(tp1) & upper(tp2))
5899
5903
else tp.derivedAndType(tp1, tp2)
You can’t perform that action at this time.
0 commit comments