summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-09-21 16:21:26 +0000
committerMartin Odersky <odersky@gmail.com>2011-09-21 16:21:26 +0000
commit4e3a9a64a866df42ca3fd99dfc76a2cd9f1f7562 (patch)
tree6763ab3b6d33de7ad6ef7b7827ea64025ad64042
parentffcb1847b45ebf5946103c5435e626cccc0ffc11 (diff)
downloadscala-4e3a9a64a866df42ca3fd99dfc76a2cd9f1f7562.tar.gz
scala-4e3a9a64a866df42ca3fd99dfc76a2cd9f1f7562.tar.bz2
scala-4e3a9a64a866df42ca3fd99dfc76a2cd9f1f7562.zip
Removed dead package
-rw-r--r--src/compiler/scala/reflect/internal/SymbolTable.scala1
-rw-r--r--src/compiler/scala/reflect/internal/Types.scala2
-rw-r--r--src/compiler/scala/reflect/runtime/Mirror.scala2
-rw-r--r--src/compiler/scala/reflect/runtime/ToolBoxes.scala35
-rw-r--r--src/compiler/scala/reflect/std/JavaMappings.scala62
-rw-r--r--src/compiler/scala/reflect/std/Mirror.scala14
-rw-r--r--src/compiler/scala/reflect/std/Positions.scala13
-rw-r--r--src/compiler/scala/reflect/std/ReflectSettings.scala24
-rw-r--r--src/compiler/scala/reflect/std/SymbolCompleters.scala80
9 files changed, 38 insertions, 195 deletions
diff --git a/src/compiler/scala/reflect/internal/SymbolTable.scala b/src/compiler/scala/reflect/internal/SymbolTable.scala
index 5702a13940..b92a1bb5d7 100644
--- a/src/compiler/scala/reflect/internal/SymbolTable.scala
+++ b/src/compiler/scala/reflect/internal/SymbolTable.scala
@@ -25,6 +25,7 @@ abstract class SymbolTable extends api.Universe
with TreePrinters
with Positions
with TypeDebugging
+ with Importers
with Required
{
def rootLoader: LazyType
diff --git a/src/compiler/scala/reflect/internal/Types.scala b/src/compiler/scala/reflect/internal/Types.scala
index 4fbc44f331..51b2f9ca35 100644
--- a/src/compiler/scala/reflect/internal/Types.scala
+++ b/src/compiler/scala/reflect/internal/Types.scala
@@ -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
}
diff --git a/src/compiler/scala/reflect/runtime/Mirror.scala b/src/compiler/scala/reflect/runtime/Mirror.scala
index 9e3f51dc98..211195c467 100644
--- a/src/compiler/scala/reflect/runtime/Mirror.scala
+++ b/src/compiler/scala/reflect/runtime/Mirror.scala
@@ -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._
diff --git a/src/compiler/scala/reflect/runtime/ToolBoxes.scala b/src/compiler/scala/reflect/runtime/ToolBoxes.scala
new file mode 100644
index 0000000000..8b7242e6b4
--- /dev/null
+++ b/src/compiler/scala/reflect/runtime/ToolBoxes.scala
@@ -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)
+ }
+ }
+
+} \ No newline at end of file
diff --git a/src/compiler/scala/reflect/std/JavaMappings.scala b/src/compiler/scala/reflect/std/JavaMappings.scala
deleted file mode 100644
index 6f1cc6b4f4..0000000000
--- a/src/compiler/scala/reflect/std/JavaMappings.scala
+++ /dev/null
@@ -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
- }
-} \ No newline at end of file
diff --git a/src/compiler/scala/reflect/std/Mirror.scala b/src/compiler/scala/reflect/std/Mirror.scala
deleted file mode 100644
index 2814bda8ea..0000000000
--- a/src/compiler/scala/reflect/std/Mirror.scala
+++ /dev/null
@@ -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
-
-}
diff --git a/src/compiler/scala/reflect/std/Positions.scala b/src/compiler/scala/reflect/std/Positions.scala
deleted file mode 100644
index a6ce52f7c6..0000000000
--- a/src/compiler/scala/reflect/std/Positions.scala
+++ /dev/null
@@ -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
-}
diff --git a/src/compiler/scala/reflect/std/ReflectSettings.scala b/src/compiler/scala/reflect/std/ReflectSettings.scala
deleted file mode 100644
index d445b04bde..0000000000
--- a/src/compiler/scala/reflect/std/ReflectSettings.scala
+++ /dev/null
@@ -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)
-}
diff --git a/src/compiler/scala/reflect/std/SymbolCompleters.scala b/src/compiler/scala/reflect/std/SymbolCompleters.scala
deleted file mode 100644
index fce38be08d..0000000000
--- a/src/compiler/scala/reflect/std/SymbolCompleters.scala
+++ /dev/null
@@ -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)
-} \ No newline at end of file