diff options
author | paltherr <paltherr@epfl.ch> | 2004-12-03 18:41:08 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-12-03 18:41:08 +0000 |
commit | ebe2c4bf3c1662b3667ce61fed54bde84afda615 (patch) | |
tree | dbc7c91a9aaf3989966bbcea30b306869d8a69e7 /sources/scalac | |
parent | 4fdab72617dbe4e049939e268df88f7a7efe5c06 (diff) | |
download | scala-ebe2c4bf3c1662b3667ce61fed54bde84afda615.tar.gz scala-ebe2c4bf3c1662b3667ce61fed54bde84afda615.tar.bz2 scala-ebe2c4bf3c1662b3667ce61fed54bde84afda615.zip |
- Removed field units in class Global
Diffstat (limited to 'sources/scalac')
-rw-r--r-- | sources/scalac/Global.java | 45 | ||||
-rw-r--r-- | sources/scalac/ast/Tree.java.tmpl | 7 | ||||
-rw-r--r-- | sources/scalac/ast/printer/TreePrinter.java | 8 | ||||
-rw-r--r-- | sources/scalac/atree/ATreePrinter.java | 9 | ||||
-rw-r--r-- | sources/scalac/transformer/ICodePhase.java | 27 | ||||
-rw-r--r-- | sources/scalac/typechecker/AnalyzerPhase.java | 2 |
6 files changed, 41 insertions, 57 deletions
diff --git a/sources/scalac/Global.java b/sources/scalac/Global.java index eb41e5f3e5..dd0de1b26b 100644 --- a/sources/scalac/Global.java +++ b/sources/scalac/Global.java @@ -42,6 +42,7 @@ import scalac.symtab.classfile.PackageParser; import scalac.symtab.classfile.CLRPackageParser; import scalac.typechecker.AnalyzerPhase; import scalac.typechecker.Infer; +import scalac.transformer.ICodePhase; import scalac.util.*; /** The global environment of a compiler run @@ -94,10 +95,6 @@ public abstract class Global { */ private final SourceReader reader; - /** all compilation units - */ - public CompilationUnit[] units; - /** the class path */ public final ClassPath classPath; @@ -142,7 +139,7 @@ public abstract class Global { /** The set of already compiled sourcefiles */ - public HashSet/*<SourceFile>*/ compiledUnits = new HashSet(); + private HashSet/*<SourceFile>*/ compiledUnits = new HashSet(); /** the current phase */ @@ -348,7 +345,7 @@ public abstract class Global { /** the top-level compilation process */ - public void compile(String[] files, boolean console) { + public CompilationUnit[] compile(String[] files, boolean console) { reporter.resetCounters(); // parse files List units = new ArrayList(files.length); @@ -361,8 +358,8 @@ public abstract class Global { error(exception.getMessage()); } } - this.units = (CompilationUnit[])units.toArray(new CompilationUnit[units.size()]); - compile(); + CompilationUnit[] array = new CompilationUnit[units.size()]; + return compile((CompilationUnit[])units.toArray(array)); } /** @@ -372,17 +369,17 @@ public abstract class Global { * @param input * @param console */ - public void compile(String filename, String input, boolean console) { + public CompilationUnit[] compile(String filename, String input, boolean console) { reporter.resetCounters(); SourceFile source = getSourceFile(filename, input); compiledUnits.add(source); - units = new CompilationUnit[]{new CompilationUnit(this, source, console)}; - compile(); + CompilationUnit[] units = {new CompilationUnit(this, source, console)}; + return compile(units); } /** compile all compilation units */ - private void compile() { + private CompilationUnit[] compile(CompilationUnit[] units) { treePrinter.begin(); currentPhase = PHASE.INITIAL.phase(); @@ -393,11 +390,13 @@ public abstract class Global { // System.out.println("*** " + currentPhase.descriptor.description() + " ***"); currentPhase.apply(units); stop(currentPhase.descriptor.taskDescription()); - if (currentPhase.descriptor.hasPrintFlag()) print(); + if (currentPhase == PHASE.ANALYZER.phase()) + units = ((AnalyzerPhase)currentPhase).getUnits(); + if (currentPhase.descriptor.hasPrintFlag()) print(units); // if (currentPhase.descriptor.hasGraphFlag()) // !!! // if (currentPhase.descriptor.hasCheckFlag()) // !!! - if (currentPhase == PHASE.PARSER.phase()) fix1(); - if (currentPhase == PHASE.ANALYZER.phase()) fix2(); + if (currentPhase == PHASE.PARSER.phase()) fix1(units); + if (currentPhase == PHASE.ANALYZER.phase()) fix2(units); } if (reporter.errors() != 0) { imports.clear(); @@ -411,6 +410,7 @@ public abstract class Global { symdata.clear(); compiledNow.clear(); treePrinter.end(); + return units; } /** Compiles an additional source file. */ @@ -429,30 +429,31 @@ public abstract class Global { } } - private void print() { + private void print(CompilationUnit[] units) { if (currentPhase.id == PHASE.MAKEBOXINGEXPLICIT.id()) { boolean html = args.printer.value.equals(PRINTER_HTML); if (html) writer.println("<pre>"); ATreePrinter printer = new ATreePrinter(new CodePrinter(writer)); boolean next = currentPhase.next != null; if (next) currentPhase = currentPhase.next; - printer.printGlobal(this); + printer.printUnits(units); if (next) currentPhase = currentPhase.prev; if (html) writer.println("</pre>"); } else if (currentPhase.id == PHASE.ICODE.id()) { + Phase phase = currentPhase; boolean html = args.printer.value.equals(PRINTER_HTML); if (html) writer.println("<pre>"); - ATreePrinter printer = ((scalac.transformer.ICodePhase)currentPhase).getPrinter(new CodePrinter(writer)); // Oh !! + boolean next = currentPhase.next != null; if (next) currentPhase = currentPhase.next; - printer.printGlobal(this); + ((ICodePhase)phase).print(units, new CodePrinter(writer)); if (next) currentPhase = currentPhase.prev; if (html) writer.println("</pre>"); } else { // go to next phase to print symbols with their new type boolean next = currentPhase.next != null; if (next) currentPhase = currentPhase.next; - treePrinter.print(this); + treePrinter.print(units); if (next) currentPhase = currentPhase.prev; } } @@ -498,7 +499,7 @@ public abstract class Global { private List imports = new ArrayList(); public Symbol console; - private void fix1() { + private void fix1(CompilationUnit[] units) { for (int i = 0; i < units.length; i++) { if (units[i].console) fix1(units[i]); } @@ -524,7 +525,7 @@ public abstract class Global { module++; } - private void fix2() { + private void fix2(CompilationUnit[] units) { for (int i = 0; i < units.length; i++) { if (units[i].console) fix2(units[i]); } diff --git a/sources/scalac/ast/Tree.java.tmpl b/sources/scalac/ast/Tree.java.tmpl index 0b130451fe..8a12c16577 100644 --- a/sources/scalac/ast/Tree.java.tmpl +++ b/sources/scalac/ast/Tree.java.tmpl @@ -14,6 +14,7 @@ import java.io.PrintWriter; import scala.tools.util.Position; import scalac.Global; +import scalac.ast.printer.TreePrinter; import scalac.checkers.CheckTreeNodes; import scalac.symtab.Symbol; import scalac.symtab.Type; @@ -111,8 +112,10 @@ public class Tree { /** Returns the string representation of this tree. */ public String toString() { StringWriter buffer = new StringWriter(); - Global global = Global.instance; - global.newTextTreePrinter(new PrintWriter(buffer)).print(this).flush(); + TreePrinter printer = + Global.instance.newTextTreePrinter(new PrintWriter(buffer)); + printer.print(this); + printer.flush(); return buffer.toString(); } diff --git a/sources/scalac/ast/printer/TreePrinter.java b/sources/scalac/ast/printer/TreePrinter.java index ce6ae2bd18..a0884b0b2a 100644 --- a/sources/scalac/ast/printer/TreePrinter.java +++ b/sources/scalac/ast/printer/TreePrinter.java @@ -23,10 +23,6 @@ public interface TreePrinter { public void end(); public void flush(); - public void print(Global global); - public void print(CompilationUnit unit); - - public TreePrinter print(Tree tree); - public TreePrinter print(String str); - public TreePrinter println(); + public void print(CompilationUnit[] units); + public void print(Tree tree); } diff --git a/sources/scalac/atree/ATreePrinter.java b/sources/scalac/atree/ATreePrinter.java index 44098d3332..022f78aed5 100644 --- a/sources/scalac/atree/ATreePrinter.java +++ b/sources/scalac/atree/ATreePrinter.java @@ -239,15 +239,10 @@ public class ATreePrinter { //######################################################################## // Public Methods - Printing trees - /** Prints all global units. */ - public ATreePrinter printGlobal(Global global) { - Phase phase = global.currentPhase; - println("[[attributed trees at "+phase+" (after "+phase.prev+")]]"); - return printUnits(global.units); - } - /** Prints the units. */ public ATreePrinter printUnits(CompilationUnit[] units) { + Phase phase = global.currentPhase; + println("[[attributed trees at "+phase+" (after "+phase.prev+")]]"); for (int i = 0; i < units.length; i++) printUnit(units[i]); return this; } diff --git a/sources/scalac/transformer/ICodePhase.java b/sources/scalac/transformer/ICodePhase.java index beaa7f6aab..7ac77cb11f 100644 --- a/sources/scalac/transformer/ICodePhase.java +++ b/sources/scalac/transformer/ICodePhase.java @@ -8,15 +8,12 @@ package scalac.transformer; +import ch.epfl.lamp.util.CodePrinter; + import scalac.Global; import scalac.Phase; import scalac.PhaseDescriptor; import scalac.CompilationUnit; -import scalac.symtab.Definitions; - -import ch.epfl.lamp.util.CodePrinter; -import scalac.atree.ATreePrinter; - /** * This class represents the ICode phase for the java version @@ -25,12 +22,7 @@ import scalac.atree.ATreePrinter; * scala one. See scala.tools.scalac.icode.ICodePhase for * implementation */ -public class ICodePhase extends Phase { - - //######################################################################## - // Private Fields - - private final Definitions definitions; +public abstract class ICodePhase extends Phase { //######################################################################## // Public Constructors @@ -38,21 +30,16 @@ public class ICodePhase extends Phase { /** Initializes this instance. */ public ICodePhase(Global global, PhaseDescriptor descriptor) { super(global, descriptor); - this.definitions = global.definitions; } //######################################################################## // Public Methods /** Applies this phase to the given compilation units. */ - public void apply(CompilationUnit[] units) { - // This java version doesn't make anything - } + public abstract void apply(CompilationUnit[] units); - public ATreePrinter getPrinter(CodePrinter cp) { - return new ATreePrinter(cp); - // !! Useless - } + /** Prints the given compilation units. */ + public abstract void print(CompilationUnit[] units, CodePrinter printer); + //######################################################################## } - diff --git a/sources/scalac/typechecker/AnalyzerPhase.java b/sources/scalac/typechecker/AnalyzerPhase.java index 7104adfd03..c4f56d22e8 100644 --- a/sources/scalac/typechecker/AnalyzerPhase.java +++ b/sources/scalac/typechecker/AnalyzerPhase.java @@ -31,4 +31,6 @@ public abstract class AnalyzerPhase extends Phase { public abstract void lateEnter(CompilationUnit unit); + public abstract CompilationUnit[] getUnits(); + } |