summaryrefslogtreecommitdiff
path: root/sources/scalac/Global.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-12-10 17:35:32 +0000
committerpaltherr <paltherr@epfl.ch>2004-12-10 17:35:32 +0000
commit5d070472caaf3f79b79b1e15e99b45bf0399905b (patch)
tree8affb5eeb2f1c42da6b559ea61ed1aab2ddeef06 /sources/scalac/Global.java
parent1a333dbf5ff4df0a8a4877fde1343c1546ca24aa (diff)
downloadscala-5d070472caaf3f79b79b1e15e99b45bf0399905b.tar.gz
scala-5d070472caaf3f79b79b1e15e99b45bf0399905b.tar.bz2
scala-5d070472caaf3f79b79b1e15e99b45bf0399905b.zip
- Fixed indexes in phase creation code
Diffstat (limited to 'sources/scalac/Global.java')
-rw-r--r--sources/scalac/Global.java13
1 files changed, 10 insertions, 3 deletions
diff --git a/sources/scalac/Global.java b/sources/scalac/Global.java
index dcf8d182fd..8e5165525b 100644
--- a/sources/scalac/Global.java
+++ b/sources/scalac/Global.java
@@ -277,13 +277,20 @@ public abstract class Global {
if (target != TARGET_JVMFROMICODE) args.phases.ICODE.addSkipFlag();
PHASE.freeze();
PhaseDescriptor[] descriptors = PHASE.phases();
- for (int i = 0; i <= PHASE.ANALYZER.id(); i++)
+ int i = 0;
+ for (; i < descriptors.length; i++) {
if (!descriptors[i].hasSkipFlag()) descriptors[i].create(this);
+ if (descriptors[i] == PHASE.ANALYZER) { i++; break; }
+ }
this.treeGen = ((AnalyzerPhase)PHASE.ANALYZER.phase()).gen;
this.primitives = new Primitives(this);
- assert !descriptors[0].hasSkipFlag();
- for (int i = PHASE.ANALYZER.id() + 1; i < descriptors.length; i++)
+ for (; i < descriptors.length; i++)
if (!descriptors[i].hasSkipFlag()) descriptors[i].create(this);
+ assert descriptors.length >= 2
+ && descriptors[0] == PHASE.INITIAL
+ && descriptors[descriptors.length - 1] == PHASE.TERMINAL:
+ Debug.show(descriptors);
+ assert !PHASE.INITIAL.hasSkipFlag();
this.currentPhase = PHASE.INITIAL.phase();
}