summaryrefslogtreecommitdiff
path: root/test/files/run/t6992
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-02-13 12:28:06 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-02-13 18:53:06 -0800
commit33fc68171105bb8d884219381c220076c5651316 (patch)
treed09484d6b415d5877e6dde5a3ead189ec6952414 /test/files/run/t6992
parentc83e01d47d941265fa5415c0f29a884c904fdfa0 (diff)
downloadscala-33fc68171105bb8d884219381c220076c5651316.tar.gz
scala-33fc68171105bb8d884219381c220076c5651316.tar.bz2
scala-33fc68171105bb8d884219381c220076c5651316.zip
SI-8177 specializeSym must use memberInfo on high side
When determining whether member `symLo` of `tpLo` has a stronger type than member `symHi` of `tpHi`, should we use memberType or memberInfo? Well, memberType transforms (using `asSeenFrom`) `sym.tpe`, whereas memberInfo performs the same transform on `sym.info`. For term symbols, this ends up being the same thing (`sym.tpe == sym.info`). For type symbols, however, the `.info` of an abstract type member is defined by its bounds, whereas its `.tpe` is a `TypeRef` to that type symbol, so that `sym.tpe <:< sym.info`, but not the other way around. Thus, for the strongest (correct) result, we should use `memberType` on the low side. On the high side, we should use the result appropriate for the right side of the `<:<` above (`memberInfo`). I also optimized the method a little bit by avoiding calling memberType if the symbol on the high side isn't eligble (e.g., it's a class). PS: I had to add a workaround to reifyType, because we now dealias a little less eagerly, which means a type selection on refinement class symbols makes it to reify this broke the t8104 tests. I also had to update the run/t6992 test, which should now test the right thing. Tests should be commented and/or use sensible names. What is it testing? What is the expected outcome? We should not be left guessing.
Diffstat (limited to 'test/files/run/t6992')
-rw-r--r--test/files/run/t6992/Test_2.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/test/files/run/t6992/Test_2.scala b/test/files/run/t6992/Test_2.scala
index 05282d6f5b..0f226b01ce 100644
--- a/test/files/run/t6992/Test_2.scala
+++ b/test/files/run/t6992/Test_2.scala
@@ -2,7 +2,7 @@ import scala.language.reflectiveCalls
object Test extends App {
val foo = Macros.foo("T")
- println(scala.reflect.runtime.universe.weakTypeOf[foo.T].typeSymbol.typeSignature)
+ println(scala.reflect.runtime.universe.weakTypeOf[foo.T])
val bar = Macros.bar("test")
println(bar.test)