summaryrefslogtreecommitdiff
path: root/sources/scalac
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-07-14 10:15:24 +0000
committerburaq <buraq@epfl.ch>2003-07-14 10:15:24 +0000
commitae9eeb9372891df1c6c5393cc35e4dfe56525f05 (patch)
tree65e2c632907e544c809c93e898bd2fbc311dc3b5 /sources/scalac
parent1805e699a0263bd3cb2434e946a1c41b6e6e1856 (diff)
downloadscala-ae9eeb9372891df1c6c5393cc35e4dfe56525f05.tar.gz
scala-ae9eeb9372891df1c6c5393cc35e4dfe56525f05.tar.bz2
scala-ae9eeb9372891df1c6c5393cc35e4dfe56525f05.zip
added isWildcardPattern in case Ident
Diffstat (limited to 'sources/scalac')
-rw-r--r--sources/scalac/transformer/UnCurry.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/sources/scalac/transformer/UnCurry.java b/sources/scalac/transformer/UnCurry.java
index fdefeb0032..ff81672940 100644
--- a/sources/scalac/transformer/UnCurry.java
+++ b/sources/scalac/transformer/UnCurry.java
@@ -15,7 +15,7 @@ import scalac.util.*;
import scalac.ast.*;
import scalac.symtab.*;
import Tree.*;
-
+import scalac.typechecker.DeSugarize ;
/** Make all functions into one-argument functions
*/
public class UnCurry extends OwnerTransformer
@@ -117,6 +117,8 @@ public class UnCurry extends OwnerTransformer
case Select(_, _):
case Ident(_):
+ if( TreeInfo.isWildcardPattern( tree ) )
+ return tree;
Tree tree1 = super.transform(tree);
switch (tree1.symbol().type()) {
case PolyType(Symbol[] tparams, Type restp):
@@ -128,13 +130,12 @@ public class UnCurry extends OwnerTransformer
default:
if (tree1.symbol().isDefParameter()) {
tree1.type = global.definitions.functionType(
- Type.EMPTY_ARRAY, tree1.type);
+ Type.EMPTY_ARRAY, tree1.type);
return gen.Apply(gen.Select(tree1, Names.apply), new Tree[0]);
} else {
return tree1;
}
}
-
default:
return super.transform(tree);
}
@@ -153,10 +154,13 @@ public class UnCurry extends OwnerTransformer
switch (methtype) {
case MethodType(Symbol[] params, _):
+
if (params.length == 1 && (params[0].flags & REPEATED) != 0) {
assert (args.length != 1 || !(args[0] instanceof Tree.Sequence));
- args = new Tree[]{make.Sequence(pos, args).setType(params[0].type())};
+ args = new Tree[]{make.Sequence( pos, args ).setType(params[0].type())};
+
}
+
Tree[] args1 = args;
for (int i = 0; i < args.length; i++) {
Tree arg = args[i];