diff options
author | Martin Odersky <odersky@gmail.com> | 2011-03-07 07:54:48 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-03-07 07:54:48 +0000 |
commit | 2edab8991bc07ce0eecb3a85d8317e31f98df840 (patch) | |
tree | 53d44728bf4af30631b2635dd0f3a9efd66edfc3 | |
parent | 1ff7cd53e3045a62f2bea37a83b4dbc37ee380e9 (diff) | |
download | scala-2edab8991bc07ce0eecb3a85d8317e31f98df840.tar.gz scala-2edab8991bc07ce0eecb3a85d8317e31f98df840.tar.bz2 scala-2edab8991bc07ce0eecb3a85d8317e31f98df840.zip |
Closes #3987. Review by extempore.
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 2 | ||||
-rw-r--r-- | test/files/neg/t3987.check | 6 | ||||
-rw-r--r-- | test/files/neg/t3987.scala | 13 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 17898393ed..8cc977fa65 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -4557,7 +4557,7 @@ A type's typeSymbol should never be inspected directly. val pre1 = tr1.pre val pre2 = tr2.pre (((if (sym1 == sym2) phase.erasedTypes || pre1 <:< pre2 - else (sym1.name == sym2.name && + else (sym1.name == sym2.name && !sym1.isModuleClass && !sym2.isModuleClass && (isUnifiable(pre1, pre2) || isSameSpecializedSkolem(sym1, sym2, pre1, pre2)))) && isSubArgs(tr1.args, tr2.args, sym1.typeParams)) || diff --git a/test/files/neg/t3987.check b/test/files/neg/t3987.check new file mode 100644 index 0000000000..d72e2d4828 --- /dev/null +++ b/test/files/neg/t3987.check @@ -0,0 +1,6 @@ +t3987.scala:11: error: type mismatch; + found : Gox + required: Test.GoxZed + val y: GoxZed = x + ^ +one error found diff --git a/test/files/neg/t3987.scala b/test/files/neg/t3987.scala new file mode 100644 index 0000000000..1226d80228 --- /dev/null +++ b/test/files/neg/t3987.scala @@ -0,0 +1,13 @@ +class Gox { + object Zed { } + class Zed { } +} + +object Test { + type GoxZed = t#Zed forSome { type t <: Gox } + + def main(args: Array[String]): Unit = { + val x = new Gox + val y: GoxZed = x + } +} |