From a0058802194eb743f9413cc3abfa60c5bedb58e5 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 5 Mar 2003 13:27:12 +0000 Subject: *** empty log message *** --- sources/scalac/ast/Tree.java | 11 +++++++++++ sources/scalac/ast/parser/Parser.java | 8 ++------ 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'sources/scalac/ast') 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( -- cgit v1.2.3