Skip to content

Commit 3266593

Browse files
committed
Remove duplication in derivedSelect
1 parent 0462b45 commit 3266593

File tree

1 file changed

+27
-30
lines changed

1 file changed

+27
-30
lines changed

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

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1967,38 +1967,35 @@ object Types {
19671967
def derivedSelect(prefix: Type)(implicit ctx: Context): Type =
19681968
if (prefix eq this.prefix) this
19691969
else if (prefix.isBottomType) prefix
1970-
else if (prefix.isInstanceOf[WildcardType]) WildcardType
1971-
else if (isType) {
1972-
val res =
1973-
if (currentSymbol.is(ClassTypeParam)) argForParam(prefix)
1974-
else prefix.lookupRefined(name)
1975-
if (res.exists) res
1976-
else if (Config.splitProjections)
1977-
prefix match {
1978-
case prefix: AndType =>
1979-
def isMissing(tp: Type) = tp match {
1980-
case tp: TypeRef => !tp.info.exists
1981-
case _ => false
1982-
}
1983-
val derived1 = derivedSelect(prefix.tp1)
1984-
val derived2 = derivedSelect(prefix.tp2)
1985-
return (
1986-
if (isMissing(derived1)) derived2
1987-
else if (isMissing(derived2)) derived1
1988-
else prefix.derivedAndType(derived1, derived2))
1989-
case prefix: OrType =>
1990-
val derived1 = derivedSelect(prefix.tp1)
1991-
val derived2 = derivedSelect(prefix.tp2)
1992-
return prefix.derivedOrType(derived1, derived2)
1993-
case _ =>
1994-
withPrefix(prefix)
1995-
}
1970+
else {
1971+
if (isType) {
1972+
val res =
1973+
if (currentSymbol.is(ClassTypeParam)) argForParam(prefix)
1974+
else prefix.lookupRefined(name)
1975+
if (res.exists) return res
1976+
if (Config.splitProjections)
1977+
prefix match {
1978+
case prefix: AndType =>
1979+
def isMissing(tp: Type) = tp match {
1980+
case tp: TypeRef => !tp.info.exists
1981+
case _ => false
1982+
}
1983+
val derived1 = derivedSelect(prefix.tp1)
1984+
val derived2 = derivedSelect(prefix.tp2)
1985+
return (
1986+
if (isMissing(derived1)) derived2
1987+
else if (isMissing(derived2)) derived1
1988+
else prefix.derivedAndType(derived1, derived2))
1989+
case prefix: OrType =>
1990+
val derived1 = derivedSelect(prefix.tp1)
1991+
val derived2 = derivedSelect(prefix.tp2)
1992+
return prefix.derivedOrType(derived1, derived2)
1993+
case _ =>
1994+
}
1995+
}
1996+
if (prefix.isInstanceOf[WildcardType]) WildcardType
19961997
else withPrefix(prefix)
19971998
}
1998-
else prefix match {
1999-
case _: WildcardType => WildcardType
2000-
case _ => withPrefix(prefix)
2001-
}
20021999

20032000
/** A reference like this one, but with the given symbol, if it exists */
20042001
final def withSym(sym: Symbol)(implicit ctx: Context): ThisType =

0 commit comments

Comments
 (0)