diff options
author | Martin Odersky <odersky@gmail.com> | 2009-11-22 12:28:57 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-11-22 12:28:57 +0000 |
commit | 58a86b6e679fcd0b28d592279eccf27fb39adde8 (patch) | |
tree | 7e76f6f12e738c2f1c82a9439cb7dd3be1a53796 | |
parent | aa2c129e41318ef973327459706e65e50e0e6a3a (diff) | |
download | scala-58a86b6e679fcd0b28d592279eccf27fb39adde8.tar.gz scala-58a86b6e679fcd0b28d592279eccf27fb39adde8.tar.bz2 scala-58a86b6e679fcd0b28d592279eccf27fb39adde8.zip |
Closed #2635
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 6 | ||||
-rwxr-xr-x | test/files/pos/t2635.scala | 16 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 195219b9a3..78bfdaf446 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -3287,8 +3287,10 @@ A type's typeSymbol should never be inspected directly. class SubstWildcardMap(from: List[Symbol]) extends TypeMap { def apply(tp: Type): Type = try { tp match { - case TypeRef(_, sym, _) if (from contains sym) => WildcardType - case _ => mapOver(tp) + case TypeRef(_, sym, _) if (from contains sym) => + BoundedWildcardType(sym.info.bounds) + case _ => + mapOver(tp) } } catch { case ex: MalformedType => diff --git a/test/files/pos/t2635.scala b/test/files/pos/t2635.scala new file mode 100755 index 0000000000..7cd5531356 --- /dev/null +++ b/test/files/pos/t2635.scala @@ -0,0 +1,16 @@ +abstract class Base + +object Test +{ + def run(c: Class[_ <: Base]): Unit = { + } + + def main(args: Array[String]): Unit = + { + val sc: Option[Class[_ <: Base]] = Some(classOf[Base]) + sc match { + case Some(c) => run(c) + case None => + } + } +} |