summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-09-30 17:25:44 +0200
committerDen Shabalin <den.shabalin@gmail.com>2013-10-18 17:24:51 +0200
commit9aa5a27042abae1e0ed585863678bc3a6fcf63a4 (patch)
tree709966bcb8d83696f13264831bace6477d0970b7 /src/reflect
parentd36989d1ec1de3b5b75de41415c852b087974bc7 (diff)
downloadscala-9aa5a27042abae1e0ed585863678bc3a6fcf63a4.tar.gz
scala-9aa5a27042abae1e0ed585863678bc3a6fcf63a4.tar.bz2
scala-9aa5a27042abae1e0ed585863678bc3a6fcf63a4.zip
make q"f(..$xs)" deconstruction symmetrical to q"f[..$xs]"
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/api/BuildUtils.scala7
-rw-r--r--src/reflect/scala/reflect/internal/BuildUtils.scala9
-rw-r--r--src/reflect/scala/reflect/internal/StdNames.scala1
3 files changed, 17 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/api/BuildUtils.scala b/src/reflect/scala/reflect/api/BuildUtils.scala
index 0dad78112b..fc5d228417 100644
--- a/src/reflect/scala/reflect/api/BuildUtils.scala
+++ b/src/reflect/scala/reflect/api/BuildUtils.scala
@@ -122,6 +122,13 @@ private[reflect] trait BuildUtils { self: Universe =>
def unapply(tree: Tree): Some[(Tree, List[List[Tree]])]
}
+ val SyntacticApply: SyntacticApplyExtractor
+
+ trait SyntacticApplyExtractor {
+ def apply(tree: Tree, args: List[Tree]): Tree
+ def unapply(tree: Tree): Some[(Tree, List[Tree])]
+ }
+
val SyntacticClassDef: SyntacticClassDefExtractor
trait SyntacticClassDefExtractor {
diff --git a/src/reflect/scala/reflect/internal/BuildUtils.scala b/src/reflect/scala/reflect/internal/BuildUtils.scala
index 3e04811f4d..28f353593a 100644
--- a/src/reflect/scala/reflect/internal/BuildUtils.scala
+++ b/src/reflect/scala/reflect/internal/BuildUtils.scala
@@ -173,6 +173,15 @@ trait BuildUtils { self: SymbolTable =>
}
}
+ object SyntacticApply extends SyntacticApplyExtractor {
+ def apply(tree: Tree, args: List[Tree]): Tree = SyntacticApplied(tree, List(args))
+
+ def unapply(tree: Tree): Some[(Tree, List[Tree])] = tree match {
+ case Apply(fun, args) => Some((fun, args))
+ case other => Some((other, Nil))
+ }
+ }
+
private object UnCtor {
def unapply(tree: Tree): Option[(Modifiers, List[List[ValDef]], List[Tree])] = tree match {
case DefDef(mods, nme.MIXIN_CONSTRUCTOR, _, _, _, Block(lvdefs, _)) =>
diff --git a/src/reflect/scala/reflect/internal/StdNames.scala b/src/reflect/scala/reflect/internal/StdNames.scala
index 5cc3f911a4..8a0e1e4768 100644
--- a/src/reflect/scala/reflect/internal/StdNames.scala
+++ b/src/reflect/scala/reflect/internal/StdNames.scala
@@ -584,6 +584,7 @@ trait StdNames {
val Select: NameType = "Select"
val SelectFromTypeTree: NameType = "SelectFromTypeTree"
val SyntacticApplied: NameType = "SyntacticApplied"
+ val SyntacticApply: NameType = "SyntacticApply"
val SyntacticAssign: NameType = "SyntacticAssign"
val SyntacticBlock: NameType = "SyntacticBlock"
val SyntacticClassDef: NameType = "SyntacticClassDef"