diff options
author | paltherr <paltherr@epfl.ch> | 2003-08-18 15:58:45 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-08-18 15:58:45 +0000 |
commit | 87210b8f1092065be1b7cfaf13a3852fe861abe4 (patch) | |
tree | 0e2ee43a75d151a74cec60e0025876082f2d7bc5 /sources/scalac/transformer/ErasurePhase.java | |
parent | c4e1967d6c99021400b8fa906f51f0bcba984fd4 (diff) | |
download | scala-87210b8f1092065be1b7cfaf13a3852fe861abe4.tar.gz scala-87210b8f1092065be1b7cfaf13a3852fe861abe4.tar.bz2 scala-87210b8f1092065be1b7cfaf13a3852fe861abe4.zip |
- rewrote the phase creation process
- replace PhaseRepository by CompilerPhases
Diffstat (limited to 'sources/scalac/transformer/ErasurePhase.java')
-rw-r--r-- | sources/scalac/transformer/ErasurePhase.java | 68 |
1 files changed, 36 insertions, 32 deletions
diff --git a/sources/scalac/transformer/ErasurePhase.java b/sources/scalac/transformer/ErasurePhase.java index 8accd1ed9a..bd90b57eb8 100644 --- a/sources/scalac/transformer/ErasurePhase.java +++ b/sources/scalac/transformer/ErasurePhase.java @@ -10,7 +10,9 @@ package scalac.transformer; import scalac.Global; -import scalac.*; +import scalac.Phase; +import scalac.PhaseDescriptor; +import scalac.Unit; import scalac.backend.Primitive; import scalac.backend.Primitives; import scalac.checkers.Checker; @@ -23,46 +25,30 @@ import scalac.symtab.Symbol; import scalac.symtab.Type; import scalac.util.Debug; -public class ErasurePhase extends PhaseDescriptor { +public class ErasurePhase extends Phase { - public Definitions definitions; - public Primitives primitives; + //######################################################################## + // Private Fields - public String name () { - return "erasure"; - } - - public String description () { - return "type eraser"; - } + private final Definitions definitions; + private final Primitives primitives; + private final Erasure erasure; - public String taskDescription() { - return "erased types"; - } + //######################################################################## + // Public Constructors - public void apply(Global global) { + public ErasurePhase(Global global, PhaseDescriptor descriptor) { + super(global, descriptor); this.definitions = global.definitions; this.primitives = global.primitives; - new Erasure(global).apply(); + this.erasure = new Erasure(global); } - public void apply(Unit unit) { - this.definitions = unit.global.definitions; - this.primitives = unit.global.primitives; - new Erasure(unit.global).apply(unit); - } + //######################################################################## + // Public Methods - private Type eraseParams(Type tp) { - switch (tp) { - case PolyType(_, Type result): - return eraseParams(result); - case MethodType(Symbol[] params, Type result): - Symbol[] params1 = Type.erasureMap.map(params); - if (params1 == params) return tp; - else return Type.MethodType(params1, result); - default: - return tp; - } + public void apply(Unit[] units) { + erasure.apply(units); } public Type transformInfo(Symbol sym, Type tp) { @@ -85,4 +71,22 @@ public class ErasurePhase extends PhaseDescriptor { new CheckNames(global) }; } + + //######################################################################## + // Private Methods + + private Type eraseParams(Type tp) { + switch (tp) { + case PolyType(_, Type result): + return eraseParams(result); + case MethodType(Symbol[] params, Type result): + Symbol[] params1 = Type.erasureMap.map(params); + if (params1 == params) return tp; + else return Type.MethodType(params1, result); + default: + return tp; + } + } + + //######################################################################## } |