summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/TypesAsValuesPhase.java
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2005-01-19 10:14:33 +0000
committerschinz <schinz@epfl.ch>2005-01-19 10:14:33 +0000
commit5e80a7ac2dee60e19b47b8be05162f7bdc91b7ae (patch)
tree6a9648faa36c5c279061587ab78c8df01737b6f1 /sources/scalac/transformer/TypesAsValuesPhase.java
parent5c3266e3d1ae364b1d1a3f4e1e00e54f6edbfbc7 (diff)
downloadscala-5e80a7ac2dee60e19b47b8be05162f7bdc91b7ae.tar.gz
scala-5e80a7ac2dee60e19b47b8be05162f7bdc91b7ae.tar.bz2
scala-5e80a7ac2dee60e19b47b8be05162f7bdc91b7ae.zip
- bug fix: use correct parent index for classes...
- bug fix: use correct parent index for classes inheriting directly from Java classes
Diffstat (limited to 'sources/scalac/transformer/TypesAsValuesPhase.java')
-rw-r--r--sources/scalac/transformer/TypesAsValuesPhase.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/sources/scalac/transformer/TypesAsValuesPhase.java b/sources/scalac/transformer/TypesAsValuesPhase.java
index f52efa6521..ca033aded3 100644
--- a/sources/scalac/transformer/TypesAsValuesPhase.java
+++ b/sources/scalac/transformer/TypesAsValuesPhase.java
@@ -917,9 +917,8 @@ public class TypesAsValuesPhase extends Phase {
private Ancestor[][] computeDisplay0(Symbol classSym) {
Type[] parentTypes = classSym.parents();
-
- Ancestor[][] superDisplay =
- computeDisplay(parentTypes[0].symbol());
+ Symbol superClassSym = parentTypes[0].symbol();
+ Ancestor[][] superDisplay = computeDisplay(superClassSym);
int level = superDisplay.length;
ArrayList/*<Ancestor>*/[] display = new ArrayList[level + 1];
@@ -938,7 +937,7 @@ public class TypesAsValuesPhase extends Phase {
// Go over parents from left to right and add missing
// ancestors to the display, remembering where they come
// from.
- int parentIndex = 0;
+ int parentIndex = superClassSym.isJava() ? 0 : 1;
for (int p = 1; p < parentTypes.length; ++p) {
Symbol parentSymbol = parentTypes[p].symbol();
assert parentSymbol != Symbol.NONE;
@@ -1022,6 +1021,21 @@ public class TypesAsValuesPhase extends Phase {
}
}
+ // Debugging function
+ private void debugPrintDisplay(Symbol sym, Ancestor[][] display) {
+ System.out.println("display for " + Debug.show(sym));
+ for (int l = 0; l < display.length; ++l) {
+ System.out.print(" [" + l + "] ");
+ for (int i = 0; i < display[l].length; ++i) {
+ if (i > 0)
+ System.out.print(" ");
+ System.out.println(" " + Debug.show(display[l][i].symbol)
+ + "/par" + display[l][i].parentIndex
+ + "/pos" + display[l][i].position);
+ }
+ }
+ }
+
//////////////////////////////////////////////////////////////////////
private static class TEnv {