Removed dead package
git-svn-id: http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk@25701 5e8d7ff9-d8ef-0310-90f0-a4852d11357a
This commit is contained in:
parent
ffaf970b55
commit
b660971c29
|
|
@ -25,6 +25,7 @@ abstract class SymbolTable extends api.Universe
|
|||
with TreePrinters
|
||||
with Positions
|
||||
with TypeDebugging
|
||||
with Importers
|
||||
with Required
|
||||
{
|
||||
def rootLoader: LazyType
|
||||
|
|
|
|||
|
|
@ -2770,7 +2770,7 @@ A type's typeSymbol should never be inspected directly.
|
|||
override def kind = "LazyType"
|
||||
}
|
||||
|
||||
class LazyPolyType(override val typeParams: List[Symbol]) extends LazyType {
|
||||
abstract class LazyPolyType(override val typeParams: List[Symbol]) extends LazyType {
|
||||
override def safeToString =
|
||||
(if (typeParams.isEmpty) "" else typeParamsString(this)) + super.safeToString
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import java.lang.reflect.Array
|
|||
|
||||
/** The mirror for standard runtime reflection from Java.
|
||||
*/
|
||||
class Mirror extends Universe with RuntimeTypes with api.Mirror {
|
||||
class Mirror extends Universe with RuntimeTypes with ToolBoxes with api.Mirror {
|
||||
|
||||
import definitions._
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
package scala.reflect
|
||||
package runtime
|
||||
|
||||
import scala.tools.nsc.reporters.Reporter
|
||||
import scala.tools.nsc.reporters.StoreReporter
|
||||
import scala.tools.nsc.ReflectGlobal
|
||||
import scala.tools.nsc.CompilerCommand
|
||||
import scala.tools.nsc.Global
|
||||
import scala.tools.nsc.typechecker.Modes
|
||||
|
||||
trait ToolBoxes extends { self: Universe =>
|
||||
|
||||
class ToolBox(val reporter: Reporter = new StoreReporter, val options: String = "") {
|
||||
|
||||
lazy val compiler: Global = {
|
||||
val command = new CompilerCommand(options.split(" ").toList, reporter.error(scala.tools.nsc.util.NoPosition, _))
|
||||
new ReflectGlobal(command.settings, reporter)
|
||||
}
|
||||
|
||||
lazy val importer = new compiler.Importer {
|
||||
val from: self.type = self
|
||||
}
|
||||
|
||||
lazy val exporter = importer.reverse
|
||||
|
||||
def typeCheck(tree: Tree, expectedType: Type = WildcardType): Tree = {
|
||||
new compiler.Run
|
||||
val ctree: compiler.Tree = importer.importTree(tree)
|
||||
val pt: compiler.Type = importer.importType(expectedType)
|
||||
val ttree: compiler.Tree = compiler.typer.typed(ctree, compiler.analyzer.EXPRmode, pt)
|
||||
exporter.importTree(ttree)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
package scala.reflect
|
||||
package std
|
||||
|
||||
import internal._
|
||||
import collection.mutable.ListBuffer
|
||||
|
||||
trait JavaMappings { self: Mirror =>
|
||||
|
||||
import definitions._
|
||||
|
||||
type TypeParamMap = Map[java.lang.reflect.TypeVariable[_], Symbol]
|
||||
|
||||
private val localDummy = definitions.RootClass.newValue(NoPosition, "<local-dummy>").setFlag(Flags.SYNTHETIC).setInfo(NoType)
|
||||
|
||||
def fromJava(clazz: java.lang.Class[_]): Symbol = clazz match {
|
||||
case java.lang.Boolean.TYPE => BooleanClass
|
||||
case java.lang.Character.TYPE => CharClass
|
||||
case java.lang.Byte.TYPE => ByteClass
|
||||
case java.lang.Short.TYPE => ShortClass
|
||||
case java.lang.Integer.TYPE => IntClass
|
||||
case java.lang.Long.TYPE => LongClass
|
||||
case java.lang.Float.TYPE => FloatClass
|
||||
case java.lang.Double.TYPE => DoubleClass
|
||||
case java.lang.Void.TYPE => UnitClass
|
||||
case _ => definitions.getClass(clazz.getName)
|
||||
}
|
||||
|
||||
def fromJavaType(jtpe: java.lang.reflect.Type)(implicit tparMap: TypeParamMap): Type = jtpe match {
|
||||
case clazz: java.lang.Class[_] =>
|
||||
if (clazz.isArray) arrayType(fromJavaType(clazz.getComponentType))
|
||||
else {
|
||||
val sym = fromJava(clazz)
|
||||
if (clazz.isLocalClass) typeRef(NoPrefix, sym, List())
|
||||
else if (clazz.isMemberClass) typeRef(fromJavaType(clazz.getDeclaringClass), sym, List())
|
||||
else sym.tpe
|
||||
}
|
||||
case ptpe: java.lang.reflect.ParameterizedType =>
|
||||
val TypeRef(pre0, sym, _) = fromJavaType(ptpe.getRawType)
|
||||
val jpre = ptpe.getOwnerType
|
||||
val pre = if (jpre != null) fromJavaType(jpre) else pre0
|
||||
val exbuf = new ListBuffer[Symbol]
|
||||
def fromJavaArgType(jtp: java.lang.reflect.Type) = fromJavaType(jtp) match {
|
||||
case BoundedWildcardType(bounds) =>
|
||||
val tparam = pre.typeSymbol.newTypeParameter(NoPosition, newTypeName("x$" + exbuf.length)).setInfo(bounds)
|
||||
exbuf += tparam
|
||||
tparam.tpe
|
||||
case tp => tp
|
||||
}
|
||||
val args = ptpe.getActualTypeArguments.toList map fromJavaArgType
|
||||
existentialAbstraction(exbuf.toList, typeRef(pre, sym, args))
|
||||
case gtpe: java.lang.reflect.GenericArrayType =>
|
||||
val etpe = fromJavaType(gtpe.getGenericComponentType)
|
||||
arrayType(etpe)
|
||||
case wtpe: java.lang.reflect.WildcardType =>
|
||||
BoundedWildcardType(
|
||||
TypeBounds(
|
||||
(wtpe.getLowerBounds map fromJavaType).headOption getOrElse NothingClass.tpe,
|
||||
intersectionType((wtpe.getUpperBounds map fromJavaType).toList)))
|
||||
case vtpe: java.lang.reflect.TypeVariable[_] =>
|
||||
tparMap(vtpe).tpe
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
package scala.reflect
|
||||
package std
|
||||
|
||||
import internal._
|
||||
|
||||
abstract class Mirror extends SymbolTable
|
||||
with JavaMappings
|
||||
with SymbolCompleters
|
||||
with Positions { self =>
|
||||
|
||||
val unpickler = new internal.pickling.UnPickler { val global: self.type = self }
|
||||
override val settings = new ReflectSettings
|
||||
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package scala.reflect
|
||||
package std
|
||||
|
||||
trait Positions {
|
||||
|
||||
class Position {
|
||||
def focus: Position = this
|
||||
def isRange: Boolean = false
|
||||
def show: String = toString
|
||||
}
|
||||
|
||||
val NoPosition: Position = new Position
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
package scala.reflect
|
||||
package std
|
||||
|
||||
class ReflectSettings extends internal.settings.MutableSettings {
|
||||
|
||||
def newSetting[TT](init: TT) = new SettingValue {
|
||||
type T = TT
|
||||
|
||||
v = init
|
||||
override def isDefault = v == init
|
||||
}
|
||||
|
||||
val overrideObjects = newSetting(false)
|
||||
val debug = newSetting(false)
|
||||
val YdepMethTpes = newSetting(false)
|
||||
val Ynotnull = newSetting(false)
|
||||
val explaintypes = newSetting(false)
|
||||
val verbose = newSetting(false)
|
||||
val uniqid = newSetting(false)
|
||||
val Xprintpos = newSetting(false)
|
||||
val printtypes = newSetting(false)
|
||||
val Yrecursion = newSetting(0)
|
||||
val maxClassfileName = newSetting(255)
|
||||
}
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
package scala.reflect
|
||||
package std
|
||||
|
||||
import java.io.File
|
||||
import internal._
|
||||
|
||||
trait SymbolCompleters { self: Mirror =>
|
||||
|
||||
class PackageCompleter(owner: Symbol) extends LazyType {
|
||||
override def isComplete = true
|
||||
override def complete(sym: Symbol) {}
|
||||
|
||||
private val knownMembers = new Scope
|
||||
|
||||
override def findMember(name: Name, excludedFlags: Long, requiredFlags: Long, stableOnly: Boolean): Symbol = {
|
||||
if (name == nme.ANYNAME) abort("cannot enumerate members of a package")
|
||||
else {
|
||||
val sym = knownMembers.lookup(name)
|
||||
if (sym != NoSymbol) sym
|
||||
else {
|
||||
def prepare(sym: Symbol, tpe: Type): Symbol = {
|
||||
knownMembers.enter(sym)
|
||||
sym.setInfo(tpe)
|
||||
}
|
||||
try {
|
||||
val prefix = if (owner.isRoot) "" else owner.fullName + "."
|
||||
val jclazz = java.lang.Class.forName(prefix + name)
|
||||
val classRoot = owner.newClass(NoPosition, name.toTypeName)
|
||||
val moduleRoot = owner.newModule(NoPosition, name.toTermName)
|
||||
val loader = new ClassCompleter(classRoot, moduleRoot, jclazz)
|
||||
prepare(classRoot, loader)
|
||||
prepare(moduleRoot, loader)
|
||||
if (name.isTypeName) classRoot else moduleRoot
|
||||
} catch {
|
||||
case ex: ClassNotFoundException =>
|
||||
if (name.isTermName) {
|
||||
// looking for module, construct package symbol instead
|
||||
val pkg = owner.newPackage(NoPosition, name)
|
||||
prepare(pkg, new PackageCompleter(pkg))
|
||||
} else
|
||||
NoSymbol
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ClassCompleter(classRoot: Symbol, moduleRoot: Symbol, jclazz: java.lang.Class[_]) extends LazyType {
|
||||
|
||||
import definitions._
|
||||
|
||||
def scalaSigAttr(jclazz: java.lang.Class[_]): Option[Array[Byte]] =
|
||||
jclazz.getAnnotation(classOf[ScalaSignature]) match {
|
||||
case sig: ScalaSignature => Some(sig.bytes.getBytes())
|
||||
case _ => jclazz.getAnnotation(classOf[ScalaLongSignature]) match {
|
||||
case sig: ScalaLongSignature => Some(sig.bytes flatMap (_.getBytes))
|
||||
case _ => None
|
||||
}
|
||||
}
|
||||
|
||||
def readJava(classRoot: Symbol, moduleRoot: Symbol) {
|
||||
}
|
||||
|
||||
var _isComplete = false
|
||||
override def isComplete = _isComplete
|
||||
|
||||
override def complete(sym: Symbol) {
|
||||
_isComplete = true
|
||||
scalaSigAttr(jclazz) match {
|
||||
case Some(bytes) =>
|
||||
val filename = classRoot.fullName.replace('.', File.separatorChar)
|
||||
unpickler.unpickle(bytes, 0, classRoot, moduleRoot, filename)
|
||||
case None =>
|
||||
readJava(classRoot, moduleRoot)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val rootLoader = new PackageCompleter(definitions.RootClass)
|
||||
}
|
||||
Loading…
Reference in New Issue