diff options
author | Martin Odersky <odersky@gmail.com> | 2016-02-18 17:26:08 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-02-20 10:19:57 +0100 |
commit | ea2345d5725ca74504d5cb4b9e14e6d2e73da53c (patch) | |
tree | cca3196bf638bed80a78ba514336b82d542821de /src/dotty/tools/dotc | |
parent | 1f58090849a51787a4482a8d016a31f15f3c1b9b (diff) | |
download | dotty-ea2345d5725ca74504d5cb4b9e14e6d2e73da53c.tar.gz dotty-ea2345d5725ca74504d5cb4b9e14e6d2e73da53c.tar.bz2 dotty-ea2345d5725ca74504d5cb4b9e14e6d2e73da53c.zip |
Simplify ClassOf phase
Make use of Definitions as the repository for
standard symbols in Predef.
Diffstat (limited to 'src/dotty/tools/dotc')
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/ClassOf.scala | 9 |
2 files changed, 3 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala index 188a00fc2..f16f25b23 100644 --- a/src/dotty/tools/dotc/core/Definitions.scala +++ b/src/dotty/tools/dotc/core/Definitions.scala @@ -221,6 +221,8 @@ class Definitions { lazy val Predef_conformsR = ScalaPredefModule.requiredMethodRef("$conforms") def Predef_conforms(implicit ctx: Context) = Predef_conformsR.symbol + lazy val Predef_classOfR = ScalaPredefModule.requiredMethodRef("classOf") + def Predef_classOf(implicit ctx: Context) = Predef_classOfR.symbol lazy val ScalaRuntimeModuleRef = ctx.requiredModuleRef("scala.runtime.ScalaRunTime") def ScalaRuntimeModule(implicit ctx: Context) = ScalaRuntimeModuleRef.symbol diff --git a/src/dotty/tools/dotc/transform/ClassOf.scala b/src/dotty/tools/dotc/transform/ClassOf.scala index f8f4991c8..e7b6977c7 100644 --- a/src/dotty/tools/dotc/transform/ClassOf.scala +++ b/src/dotty/tools/dotc/transform/ClassOf.scala @@ -21,15 +21,8 @@ class ClassOf extends MiniPhaseTransform { override def phaseName: String = "classOf" - private var classOfMethod: TermSymbol = _ - - override def prepareForUnit(tree: tpd.Tree)(implicit ctx: Context): TreeTransform = { - classOfMethod = defn.ScalaPredefModule.requiredMethod(nme.classOf) - this - } - override def transformTypeApply(tree: TypeApply)(implicit ctx: Context, info: TransformerInfo): Tree = - if (tree.symbol eq classOfMethod) { + if (tree.symbol eq defn.Predef_classOf) { val targ = tree.args.head.tpe clsOf(targ).ensureConforms(tree.tpe).withPos(tree.pos) } |