summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-11-22 12:28:57 +0000
committerMartin Odersky <odersky@gmail.com>2009-11-22 12:28:57 +0000
commit58a86b6e679fcd0b28d592279eccf27fb39adde8 (patch)
tree7e76f6f12e738c2f1c82a9439cb7dd3be1a53796
parentaa2c129e41318ef973327459706e65e50e0e6a3a (diff)
downloadscala-58a86b6e679fcd0b28d592279eccf27fb39adde8.tar.gz
scala-58a86b6e679fcd0b28d592279eccf27fb39adde8.tar.bz2
scala-58a86b6e679fcd0b28d592279eccf27fb39adde8.zip
Closed #2635
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Types.scala6
-rwxr-xr-xtest/files/pos/t2635.scala16
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 =>
+ }
+ }
+}