diff options
author | schinz <schinz@epfl.ch> | 2005-01-19 10:14:33 +0000 |
---|---|---|
committer | schinz <schinz@epfl.ch> | 2005-01-19 10:14:33 +0000 |
commit | 5e80a7ac2dee60e19b47b8be05162f7bdc91b7ae (patch) | |
tree | 6a9648faa36c5c279061587ab78c8df01737b6f1 /sources | |
parent | 5c3266e3d1ae364b1d1a3f4e1e00e54f6edbfbc7 (diff) | |
download | scala-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')
-rw-r--r-- | sources/scalac/transformer/TypesAsValuesPhase.java | 22 |
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 { |