diff options
author | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-08-19 04:43:26 -0700 |
---|---|---|
committer | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-08-19 04:43:26 -0700 |
commit | c32b189a2a2575512d0dc8d91a400d773b53a7f0 (patch) | |
tree | 8a1ccc78cb4430f2ebccb8db76f03ab3f02dc38b /src/reflect | |
parent | d46818e4e1d405829312b0d9029b35148ae13b3b (diff) | |
parent | a3735fdbbf93128874d93da5c69af0f777220313 (diff) | |
download | scala-c32b189a2a2575512d0dc8d91a400d773b53a7f0.tar.gz scala-c32b189a2a2575512d0dc8d91a400d773b53a7f0.tar.bz2 scala-c32b189a2a2575512d0dc8d91a400d773b53a7f0.zip |
Merge pull request #1159 from scalamacros/topic/cleanup
even more cleanup in Macros.scala
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Definitions.scala | 8 | ||||
-rw-r--r-- | src/reflect/scala/reflect/internal/TreeInfo.scala | 11 |
2 files changed, 10 insertions, 9 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala index a1f44ace6e..98d42b724c 100644 --- a/src/reflect/scala/reflect/internal/Definitions.scala +++ b/src/reflect/scala/reflect/internal/Definitions.scala @@ -462,7 +462,7 @@ trait Definitions extends api.StandardDefinitions { def ReflectRuntimeUniverse = if (ReflectRuntimePackage != NoSymbol) getMemberValue(ReflectRuntimePackage, nme.universe) else NoSymbol def ReflectRuntimeCurrentMirror = if (ReflectRuntimePackage != NoSymbol) getMemberMethod(ReflectRuntimePackage, nme.currentMirror) else NoSymbol - lazy val PartialManifestClass = getMemberType(ReflectPackage, tpnme.ClassManifest) + lazy val PartialManifestClass = getTypeMember(ReflectPackage, tpnme.ClassManifest) lazy val PartialManifestModule = requiredModule[scala.reflect.ClassManifestFactory.type] lazy val FullManifestClass = requiredClass[scala.reflect.Manifest[_]] lazy val FullManifestModule = requiredModule[scala.reflect.ManifestFactory.type] @@ -494,7 +494,7 @@ trait Definitions extends api.StandardDefinitions { lazy val MacroContextClass = getClassIfDefined("scala.reflect.macros.Context") // defined in scala-reflect.jar, so we need to be careful def MacroContextPrefix = if (MacroContextClass != NoSymbol) getMemberMethod(MacroContextClass, nme.prefix) else NoSymbol - def MacroContextPrefixType = if (MacroContextClass != NoSymbol) getMemberType(MacroContextClass, tpnme.PrefixType) else NoSymbol + def MacroContextPrefixType = if (MacroContextClass != NoSymbol) getTypeMember(MacroContextClass, tpnme.PrefixType) else NoSymbol def MacroContextUniverse = if (MacroContextClass != NoSymbol) getMemberMethod(MacroContextClass, nme.universe) else NoSymbol def MacroContextMirror = if (MacroContextClass != NoSymbol) getMemberMethod(MacroContextClass, nme.mirror) else NoSymbol lazy val MacroImplAnnotation = requiredClass[scala.reflect.macros.internal.macroImpl] @@ -1012,10 +1012,10 @@ trait Definitions extends api.StandardDefinitions { case _ => fatalMissingSymbol(owner, name, "member object") } } - def getMemberType(owner: Symbol, name: Name): TypeSymbol = { + def getTypeMember(owner: Symbol, name: Name): TypeSymbol = { getMember(owner, name.toTypeName) match { case x: TypeSymbol => x - case _ => fatalMissingSymbol(owner, name, "member type") + case _ => fatalMissingSymbol(owner, name, "type member") } } def getMemberClass(owner: Symbol, name: Name): ClassSymbol = { diff --git a/src/reflect/scala/reflect/internal/TreeInfo.scala b/src/reflect/scala/reflect/internal/TreeInfo.scala index 3a6acdcc2b..3a930a195b 100644 --- a/src/reflect/scala/reflect/internal/TreeInfo.scala +++ b/src/reflect/scala/reflect/internal/TreeInfo.scala @@ -603,9 +603,10 @@ abstract class TreeInfo { } } - def stripOffPrefixTypeRefinement(tpe: Type): Type = - tpe.dealias match { - case RefinedType(List(tpe), Scope(sym)) if tpe == MacroContextClass.tpe && sym.allOverriddenSymbols.contains(MacroContextPrefixType) => tpe - case _ => tpe - } + def isNullaryInvocation(tree: Tree): Boolean = + tree.symbol != null && tree.symbol.isMethod && (tree match { + case TypeApply(fun, _) => isNullaryInvocation(fun) + case tree: RefTree => true + case _ => false + }) } |