summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-03-05 13:19:33 +0000
committerMartin Odersky <odersky@gmail.com>2003-03-05 13:19:33 +0000
commit3d7e4fa518125107d00ff75132cb106f002443d0 (patch)
tree2fe33b349c707c7a97fed715af48a20b7fa776ea
parent4a44cf6531eeb2a80036c1370d1e9bd72dd22616 (diff)
downloadscala-3d7e4fa518125107d00ff75132cb106f002443d0.tar.gz
scala-3d7e4fa518125107d00ff75132cb106f002443d0.tar.bz2
scala-3d7e4fa518125107d00ff75132cb106f002443d0.zip
*** empty log message ***
-rw-r--r--sources/scalac/transformer/UnCurry.java1
-rw-r--r--sources/scalac/transformer/UnCurryPhase.java39
2 files changed, 9 insertions, 31 deletions
diff --git a/sources/scalac/transformer/UnCurry.java b/sources/scalac/transformer/UnCurry.java
index a37ce8732a..9647b43852 100644
--- a/sources/scalac/transformer/UnCurry.java
+++ b/sources/scalac/transformer/UnCurry.java
@@ -105,7 +105,6 @@ public class UnCurry extends OwnerTransformer
// argument to parameterless function e => ( => e)
Type ftype = fn.type;
Tree fn1 = transform(fn);
- System.out.println("transforming args of " + fn.symbol());//debug
Tree[] args1 = transformArgs(tree.pos, args, ftype);
switch (fn1) {
case Apply(Tree fn2, Tree[] args2):
diff --git a/sources/scalac/transformer/UnCurryPhase.java b/sources/scalac/transformer/UnCurryPhase.java
index ed18af3a14..1b78f5d207 100644
--- a/sources/scalac/transformer/UnCurryPhase.java
+++ b/sources/scalac/transformer/UnCurryPhase.java
@@ -53,24 +53,23 @@ public class UnCurryPhase extends PhaseDescriptor implements Modifiers {
Type uncurry(Type tp) {
switch (tp) {
case MethodType(Symbol[] params, Type tp1):
- Symbol[] uncurriedParams = uncurryParams(params);
- Type uncurriedTp1 = uncurry(tp1);
- switch (uncurriedTp1) {
+ Type newtp1 = uncurry(tp1);
+ switch (newtp1) {
case MethodType(Symbol[] params1, Type tp2):
- Symbol[] newparams = new Symbol[uncurriedParams.length + params1.length];
- System.arraycopy(uncurriedParams, 0, newparams, 0, uncurriedParams.length);
- System.arraycopy(params1, 0, newparams, uncurriedParams.length, params1.length);
+ Symbol[] newparams = new Symbol[params.length + params1.length];
+ System.arraycopy(params, 0, newparams, 0, params.length);
+ System.arraycopy(params1, 0, newparams, params.length, params1.length);
return Type.MethodType(newparams, tp2);
default:
- if (uncurriedParams == params && uncurriedTp1 == tp1) return tp;
- else return Type.MethodType(uncurriedParams, uncurriedTp1);
+ if (newtp1 == tp1) return tp;
+ else return Type.MethodType(params, newtp1);
}
case PolyType(Symbol[] tparams, Type tp1):
switch (tp1) {
case MethodType(_, _):
Type newtp1 = uncurry(tp1);
- if (tp1 != newtp1) return Type.PolyType(tparams, newtp1);
- else return tp;
+ if (newtp1 == tp1) return tp;
+ else return Type.PolyType(tparams, newtp1);
default:
Type newtp1 = Type.MethodType(Symbol.EMPTY_ARRAY, tp1);
if (tparams.length == 0) return newtp1;
@@ -85,26 +84,6 @@ public class UnCurryPhase extends PhaseDescriptor implements Modifiers {
}
}
- Symbol[] uncurryParams(Symbol[] params) {
- Symbol[] params1 = params;
- for (int i = 0; i < params.length; i++) {
- Symbol param = params[i];
- Symbol param1 = param;
- Type tp = param.info();
- Type tp1 = transformInfo(param, tp);
- if (tp != tp1) {
- if (params1 == params) {
- params1 = new Symbol[params.length];
- System.arraycopy(params, 0, params1, 0, i);
- }
- param1 = param.cloneSymbol().setType(tp1);
- param1.flags &= ~DEF;
- }
- params1[i] = param1;
- }
- return params1;
- }
-
public Checker[] postCheckers(Global global) {
return new Checker[] {
new CheckSymbols(global),