summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/UnCurry.java
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-10-02 16:23:35 +0000
committerburaq <buraq@epfl.ch>2003-10-02 16:23:35 +0000
commit6ca43bcd97900f82748f4525f68d08c56a8047ce (patch)
treeaed5d5d97ec6886a8273f7b6662e2c53de3f60ef /sources/scalac/transformer/UnCurry.java
parentb6ad6a1bc9a58fe69bbe9157d0f7b5db555000f0 (diff)
downloadscala-6ca43bcd97900f82748f4525f68d08c56a8047ce.tar.gz
scala-6ca43bcd97900f82748f4525f68d08c56a8047ce.tar.bz2
scala-6ca43bcd97900f82748f4525f68d08c56a8047ce.zip
comments
Diffstat (limited to 'sources/scalac/transformer/UnCurry.java')
-rw-r--r--sources/scalac/transformer/UnCurry.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/sources/scalac/transformer/UnCurry.java b/sources/scalac/transformer/UnCurry.java
index c317267842..ce5ad8035c 100644
--- a/sources/scalac/transformer/UnCurry.java
+++ b/sources/scalac/transformer/UnCurry.java
@@ -29,6 +29,8 @@ import scalac.typechecker.DeSugarize ;
* convert argument `e' to (expansion of) `() => e'
* - for every argument list that corresponds to a repeated parameter
* (a_1, ..., a_n) => (Sequence(a_1, ..., a_n))
+ * - for every argument list that is an escaped sequence
+ * (a_1:_*) => (a_1)
*/
public class UnCurry extends OwnerTransformer
implements Modifiers {
@@ -220,14 +222,19 @@ public class UnCurry extends OwnerTransformer
else throw new ApplicationError(methtype);
}
}
+
+ /** converts `a_1,...,a_n' to Seq(a_1,...,a_n)
+ * if a_1 is an escaped sequence as in x:_*, takes care of
+ * escaping
+ */
private Tree[] toSequence(int pos, Symbol[] params, Tree[] args) {
assert (args.length != 1 || !(args[0] instanceof Tree.Sequence));
- if (args.length == 1) {
- switch (args[0]) {
- case Typed(Tree arg, Ident(TypeNames.WILDCARD_STAR)):
- return new Tree[]{arg};
- }
- }
+ if (args.length == 1) {
+ switch (args[0]) {
+ case Typed(Tree arg, Ident(TypeNames.WILDCARD_STAR)):
+ return new Tree[]{arg};
+ }
+ }
return new Tree[]{make.Sequence( pos, args ).setType(params[0].type())};
}