summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-08-17 08:32:34 -0700
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2012-08-17 08:32:34 -0700
commit722fc004732aca0b1d6b9143b960e5a8268c31a0 (patch)
tree0bc3ed1dd99c3b1b63870982c40298081de910f2
parent82f0bcc779b80c9ebfbad043ed5c496f9661d469 (diff)
parent5c6d6f4095555e9f791d9d56fd3be20d48dd3b8a (diff)
downloadscala-722fc004732aca0b1d6b9143b960e5a8268c31a0.tar.gz
scala-722fc004732aca0b1d6b9143b960e5a8268c31a0.tar.bz2
scala-722fc004732aca0b1d6b9143b960e5a8268c31a0.zip
Merge pull request #1149 from paulp/topic/substmap210
Topic/substmap210
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala
index 657b6b0517..9514898ce5 100644
--- a/src/reflect/scala/reflect/internal/Types.scala
+++ b/src/reflect/scala/reflect/internal/Types.scala
@@ -3715,10 +3715,11 @@ trait Types extends api.Types { self: SymbolTable =>
case TypeRef(_, SingletonClass, _) =>
AnyClass.tpe
case tp1 @ RefinedType(parents, decls) =>
- var parents1 = parents filter (_.typeSymbol != SingletonClass)
- if (parents1.isEmpty) parents1 = List(AnyClass.tpe)
- if (parents1.tail.isEmpty && decls.isEmpty) mapOver(parents1.head)
- else mapOver(copyRefinedType(tp1, parents1, decls))
+ parents filter (_.typeSymbol != SingletonClass) match {
+ case Nil => AnyClass.tpe
+ case p :: Nil if decls.isEmpty => mapOver(p)
+ case ps => mapOver(copyRefinedType(tp1, ps, decls))
+ }
case tp1 =>
mapOver(tp1)
}
@@ -4569,10 +4570,12 @@ trait Types extends api.Types { self: SymbolTable =>
tp match {
case TypeRef(pre, sym, args) if pre ne NoPrefix =>
val newSym = subst(sym, from, to)
+ // mapOver takes care of subst'ing in args
+ mapOver ( if (sym eq newSym) tp else copyTypeRef(tp, pre, newSym, args) )
// assert(newSym.typeParams.length == sym.typeParams.length, "typars mismatch in SubstSymMap: "+(sym, sym.typeParams, newSym, newSym.typeParams))
- mapOver(copyTypeRef(tp, pre, newSym, args)) // mapOver takes care of subst'ing in args
case SingleType(pre, sym) if pre ne NoPrefix =>
- mapOver(singleType(pre, subst(sym, from, to)))
+ val newSym = subst(sym, from, to)
+ mapOver( if (sym eq newSym) tp else singleType(pre, newSym) )
case _ =>
super.apply(tp)
}
@@ -5611,6 +5614,7 @@ trait Types extends api.Types { self: SymbolTable =>
false
}
+ @deprecated("The compiler doesn't use this so you shouldn't either - it will be removed", "2.10.0")
def instTypeVar(tp: Type): Type = tp match {
case TypeRef(pre, sym, args) =>
copyTypeRef(tp, instTypeVar(pre), sym, args)