Skip to content

Commit 7c902e5

Browse files
oderskytgodzik
authored andcommitted
More careful ClassTag instantiation
We now use a blend of the new scheme and backwards compatible special case if type variables as ClassTag arguments are constrained by further type variables. Fixes scala#23611 [Cherry-picked b677f97]
1 parent 2eb4a9f commit 7c902e5

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

compiler/src/dotty/tools/dotc/core/Types.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4985,11 +4985,17 @@ object Types extends TypeUtils {
49854985
*/
49864986
private def currentEntry(using Context): Type = ctx.typerState.constraint.entry(origin)
49874987

4988+
/** For uninstantiated type variables: the lower bound */
4989+
def lowerBound(using Context): Type = currentEntry.loBound
4990+
4991+
/** For uninstantiated type variables: the upper bound */
4992+
def upperBound(using Context): Type = currentEntry.hiBound
4993+
49884994
/** For uninstantiated type variables: Is the lower bound different from Nothing? */
4989-
def hasLowerBound(using Context): Boolean = !currentEntry.loBound.isExactlyNothing
4995+
def hasLowerBound(using Context): Boolean = !lowerBound.isExactlyNothing
49904996

49914997
/** For uninstantiated type variables: Is the upper bound different from Any? */
4992-
def hasUpperBound(using Context): Boolean = !currentEntry.hiBound.isTopOfSomeKind
4998+
def hasUpperBound(using Context): Boolean = !upperBound.isTopOfSomeKind
49934999

49945000
/** Unwrap to instance (if instantiated) or origin (if not), until result
49955001
* is no longer a TypeVar

0 commit comments

Comments
 (0)