diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-08-17 11:50:01 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-17 11:57:18 +0200 |
commit | ddf27a1e0e4b9eae521651704e74298c33c9af6c (patch) | |
tree | 4d1adea4ffa6cd520e71c6997c6a69264acf0291 /src/reflect | |
parent | 78f9ef3906c78413ff8835fdad3849bfe5516be2 (diff) | |
download | scala-ddf27a1e0e4b9eae521651704e74298c33c9af6c.tar.gz scala-ddf27a1e0e4b9eae521651704e74298c33c9af6c.tar.bz2 scala-ddf27a1e0e4b9eae521651704e74298c33c9af6c.zip |
more cleanup for typedMacroBody
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Definitions.scala | 2 | ||||
-rw-r--r-- | src/reflect/scala/reflect/internal/TreeInfo.scala | 17 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala index 5ffb6504a5..a80194c3dd 100644 --- a/src/reflect/scala/reflect/internal/Definitions.scala +++ b/src/reflect/scala/reflect/internal/Definitions.scala @@ -381,7 +381,7 @@ trait Definitions extends api.StandardDefinitions { def isScalaRepeatedParamType(tp: Type) = tp.typeSymbol == RepeatedParamClass def isJavaRepeatedParamType(tp: Type) = tp.typeSymbol == JavaRepeatedParamClass def isRepeatedParamType(tp: Type) = isScalaRepeatedParamType(tp) || isJavaRepeatedParamType(tp) - def isRepeated(param: Symbol) = param.tpe.typeSymbol == RepeatedParamClass + def isRepeated(param: Symbol) = isRepeatedParamType(param.tpe) def isCastSymbol(sym: Symbol) = sym == Any_asInstanceOf || sym == Object_asInstanceOf def isJavaVarArgsMethod(m: Symbol) = m.isMethod && isJavaVarArgs(m.info.params) diff --git a/src/reflect/scala/reflect/internal/TreeInfo.scala b/src/reflect/scala/reflect/internal/TreeInfo.scala index 521d7072dc..39539a113c 100644 --- a/src/reflect/scala/reflect/internal/TreeInfo.scala +++ b/src/reflect/scala/reflect/internal/TreeInfo.scala @@ -593,13 +593,16 @@ abstract class TreeInfo { object DynamicApplicationNamed extends DynamicApplicationExtractor(_ == nme.applyDynamicNamed) object MacroImplReference { - def unapply(tree: Tree): Option[(Symbol, Symbol, List[Tree])] = - tree match { - case TypeApply(fun, targs) => unapply(fun) map { case (owner, sym, _) => (owner, sym, targs) } - case Select(pre, _) => Some(pre.symbol, tree.symbol, Nil) - case Ident(_) => Some(NoSymbol, tree.symbol, Nil) - case _ => None - } + private def refPart(tree: Tree): Tree = tree match { + case TypeApply(fun, _) => refPart(fun) + case ref: RefTree => ref + case _ => EmptyTree + } + + def unapply(tree: Tree) = refPart(tree) match { + case ref: RefTree => Some((ref.qualifier.symbol, ref.symbol, typeArguments(tree))) + case _ => None + } } def stripOffPrefixTypeRefinement(tpe: Type): Type = |