summaryrefslogtreecommitdiff
path: root/sources/scalac/ast
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-03-05 13:27:12 +0000
committerMartin Odersky <odersky@gmail.com>2003-03-05 13:27:12 +0000
commita0058802194eb743f9413cc3abfa60c5bedb58e5 (patch)
treeb5f5f462048064b7315d9ae3c54264fc6e398ba5 /sources/scalac/ast
parent3d7e4fa518125107d00ff75132cb106f002443d0 (diff)
downloadscala-a0058802194eb743f9413cc3abfa60c5bedb58e5.tar.gz
scala-a0058802194eb743f9413cc3abfa60c5bedb58e5.tar.bz2
scala-a0058802194eb743f9413cc3abfa60c5bedb58e5.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r--sources/scalac/ast/Tree.java11
-rw-r--r--sources/scalac/ast/parser/Parser.java8
2 files changed, 13 insertions, 6 deletions
diff --git a/sources/scalac/ast/Tree.java b/sources/scalac/ast/Tree.java
index a60f6fe8ed..d7e54dfc52 100644
--- a/sources/scalac/ast/Tree.java
+++ b/sources/scalac/ast/Tree.java
@@ -9,6 +9,7 @@
package scalac.ast;
import scalac.ast.printer.*;
+import scalac.Global;
import scalac.util.Debug;
import scalac.util.Name;
import scalac.util.Position;
@@ -888,4 +889,14 @@ public class Tree {
}
//########################################################################
+ // duplication
+
+ public static Transformer duplicator =
+ new Transformer(
+ Global.instance, null, Global.instance.make,
+ new StrictTreeFactory(Global.instance.make));
+
+ public Tree duplicate() {
+ return duplicator.transform(this);
+ }
}
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index 6f2ddb5d0f..2dca2ce14e 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -32,13 +32,9 @@ public class Parser implements Tokens {
*/
TreeFactory make;
- final Transformer duplicator;
-
public Parser(Unit unit) {
s = new Scanner(unit);
make = unit.global.make;
- this.duplicator = new Transformer(
- unit.global, null, make, new StrictTreeFactory(make));
}
/** this is the general parse method
@@ -216,7 +212,7 @@ public class Parser implements Tokens {
System.arraycopy(enums, 2, newenums, 1, newenums.length - 1);
newenums[0] = make.PatDef(
enums[0].pos, mods, pat,
- makeFor1(enums[1].pos, Names.filter, duplicator.transform(pat), rhs, enums[1]));
+ makeFor1(enums[1].pos, Names.filter, pat.duplicate(), rhs, enums[1]));
return makeFor(pos, newenums, mapName, flatmapName, body);
}
default:
@@ -946,7 +942,7 @@ public class Parser implements Tokens {
rhs.pos,
new Tree.CaseDef[]{
(CaseDef)make.CaseDef(
- rhs.pos, duplicator.transform(pat), Tree.Empty,
+ rhs.pos, pat.duplicate(), Tree.Empty,
make.Select(rhs.pos,
scalaDot(rhs.pos, Names.Boolean), Names.True)),
(CaseDef)make.CaseDef(