From 4e3a9a64a866df42ca3fd99dfc76a2cd9f1f7562 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 21 Sep 2011 16:21:26 +0000 Subject: Removed dead package --- .../scala/reflect/internal/SymbolTable.scala | 1 + src/compiler/scala/reflect/internal/Types.scala | 2 +- src/compiler/scala/reflect/runtime/Mirror.scala | 2 +- src/compiler/scala/reflect/runtime/ToolBoxes.scala | 35 ++++++++++ src/compiler/scala/reflect/std/JavaMappings.scala | 62 ----------------- src/compiler/scala/reflect/std/Mirror.scala | 14 ---- src/compiler/scala/reflect/std/Positions.scala | 13 ---- .../scala/reflect/std/ReflectSettings.scala | 24 ------- .../scala/reflect/std/SymbolCompleters.scala | 80 ---------------------- 9 files changed, 38 insertions(+), 195 deletions(-) create mode 100644 src/compiler/scala/reflect/runtime/ToolBoxes.scala delete mode 100644 src/compiler/scala/reflect/std/JavaMappings.scala delete mode 100644 src/compiler/scala/reflect/std/Mirror.scala delete mode 100644 src/compiler/scala/reflect/std/Positions.scala delete mode 100644 src/compiler/scala/reflect/std/ReflectSettings.scala delete mode 100644 src/compiler/scala/reflect/std/SymbolCompleters.scala 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, "").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 -- cgit v1.2.3