blob: 14d6dc2a70512081e33c71bbccbc02d486ababf7 (
plain) (
tree)
|
|
import scala.tools.nsc.interactive.tests._
import scala.reflect.internal.util._
object Test extends InteractiveTest {
import compiler._, definitions._
override def runDefaultTests() {
def resolveTypeTagHyperlink() {
val sym = compiler.askForResponse(() => compiler.currentRun.runDefinitions.TypeTagClass).get.left.get
val r = new Response[Position]
compiler.askLinkPos(sym, new BatchSourceFile("", source), r)
r.get
}
def checkTypeTagSymbolConsistent() {
compiler.askForResponse {
() => {
val runDefinitions = currentRun.runDefinitions
import runDefinitions._
assert(TypeTagsClass.map(sym => getMemberClass(sym, tpnme.TypeTag)) == TypeTagClass)
assert(TypeTagsClass.map(sym => getMemberClass(sym, tpnme.WeakTypeTag)) == WeakTypeTagClass)
assert(TypeTagsClass.map(sym => getMemberModule(sym, nme.WeakTypeTag)) == WeakTypeTagModule)
assert(getMemberMethod(ReflectPackage, nme.materializeClassTag) == materializeClassTag)
assert(ReflectApiPackage.map(sym => getMemberMethod(sym, nme.materializeWeakTypeTag)) == materializeWeakTypeTag)
assert(ReflectApiPackage.map(sym => getMemberMethod(sym, nme.materializeTypeTag)) == materializeTypeTag)
()
}
}.get match {
case Right(t) => t.printStackTrace
case Left(_) =>
}
}
resolveTypeTagHyperlink()
// The presentation compiler loads TypeTags from source; we'll get new symbols for its members.
// Need to make sure we didn't cache the old ones in Definitions.
checkTypeTagSymbolConsistent()
}
def source =
"""
|package scala
|package reflect
|package api
|
|trait TypeTags { self: Universe =>
| import definitions._
|
| @annotation.implicitNotFound(msg = "No WeakTypeTag available for ${T}")
| trait WeakTypeTag[T] extends Equals with Serializable {
| val mirror: Mirror
| def in[U <: Universe with Singleton](otherMirror: scala.reflect.api.Mirror[U]): U # WeakTypeTag[T]
| def tpe: Type
| }
| object WeakTypeTag
|
| trait TypeTag[T] extends WeakTypeTag[T] with Equals with Serializable {
| }
| object TypeTag
|
""".stripMargin
}
|