summaryrefslogtreecommitdiff
path: root/sources/scalac/ast
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-03-05 12:48:28 +0000
committerMartin Odersky <odersky@gmail.com>2003-03-05 12:48:28 +0000
commit4a44cf6531eeb2a80036c1370d1e9bd72dd22616 (patch)
treebcdea28d0ea695260dde8a111b8e0dd3e40d97c4 /sources/scalac/ast
parentc5ffb069fa3fa7bd1f95bfc62784297c49c17925 (diff)
downloadscala-4a44cf6531eeb2a80036c1370d1e9bd72dd22616.tar.gz
scala-4a44cf6531eeb2a80036c1370d1e9bd72dd22616.tar.bz2
scala-4a44cf6531eeb2a80036c1370d1e9bd72dd22616.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r--sources/scalac/ast/parser/Parser.java8
-rw-r--r--sources/scalac/ast/printer/TextTreePrinter.java7
2 files changed, 11 insertions, 4 deletions
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index fa2769f8d9..6f2ddb5d0f 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -32,9 +32,13 @@ 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
@@ -212,7 +216,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, pat, rhs, enums[1]));
+ makeFor1(enums[1].pos, Names.filter, duplicator.transform(pat), rhs, enums[1]));
return makeFor(pos, newenums, mapName, flatmapName, body);
}
default:
@@ -942,7 +946,7 @@ public class Parser implements Tokens {
rhs.pos,
new Tree.CaseDef[]{
(CaseDef)make.CaseDef(
- rhs.pos, pat, Tree.Empty,
+ rhs.pos, duplicator.transform(pat), Tree.Empty,
make.Select(rhs.pos,
scalaDot(rhs.pos, Names.Boolean), Names.True)),
(CaseDef)make.CaseDef(
diff --git a/sources/scalac/ast/printer/TextTreePrinter.java b/sources/scalac/ast/printer/TextTreePrinter.java
index 26dadcc679..b41642af07 100644
--- a/sources/scalac/ast/printer/TextTreePrinter.java
+++ b/sources/scalac/ast/printer/TextTreePrinter.java
@@ -30,8 +30,8 @@ public class TextTreePrinter implements TreePrinter {
protected int indent = 0;
protected final int INDENT_STEP = 2;
- protected final String INDENT_STRING =
- " ";
+ protected String INDENT_STRING =
+ " ";
protected final int MAX_INDENT = INDENT_STRING.length();
public TextTreePrinter(OutputStream stream) {
@@ -81,6 +81,9 @@ public class TextTreePrinter implements TreePrinter {
protected void printNewLine() {
out.println();
+ while (indent > INDENT_STRING.length()) {
+ INDENT_STRING = INDENT_STRING + INDENT_STRING;
+ }
if (indent > 0)
out.write(INDENT_STRING, 0, indent);
}