diff options
author | paltherr <paltherr@epfl.ch> | 2003-09-10 11:11:15 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-09-10 11:11:15 +0000 |
commit | 026c3573492a5330c6ee22bb4a7edbb8e31fef32 (patch) | |
tree | 2156f7472c4c1e873db3c84d00140b84a4fb674b | |
parent | 8395399f4be02be3870ff058f8a7d4240ba502d1 (diff) | |
download | scala-026c3573492a5330c6ee22bb4a7edbb8e31fef32.tar.gz scala-026c3573492a5330c6ee22bb4a7edbb8e31fef32.tar.bz2 scala-026c3573492a5330c6ee22bb4a7edbb8e31fef32.zip |
- Bug fix: new class did not reuse constructor ...
- Bug fix: new class did not reuse constructor symbol of old class.
-rw-r--r-- | sources/scalac/transformer/AddInterfaces.java | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java index 516a9af6bf..ea407ceed7 100644 --- a/sources/scalac/transformer/AddInterfaces.java +++ b/sources/scalac/transformer/AddInterfaces.java @@ -331,19 +331,16 @@ class AddInterfaces extends Transformer { thisTypeSubst = null; - Tree[][] oldParentArgs = extractParentArgs(classImpl.parents); - Tree[][] parentArgs = new Tree[oldParentArgs.length + 1][]; - System.arraycopy(oldParentArgs, 0, parentArgs, 0, oldParentArgs.length); - parentArgs[oldParentArgs.length] = Tree.EMPTY_ARRAY; + Tree[] newParents = Tree.cloneArray(transform(classImpl.parents), 1); global.nextPhase(); - Type[] newParents = classSym.parents(); + Type ifaceType = classSym.parents()[newParents.length - 1]; global.prevPhase(); - Tree[] newClassParents = - gen.mkParentConstrs(classDef.pos, newParents, parentArgs); + newParents[newParents.length - 1] = + gen.mkParentConstr(classDef.pos, ifaceType); Symbol local = classDef.impl.symbol(); local.setOwner(classSym); - return gen.ClassDef(classSym, newClassParents, local, newClassBody.toArray()); + return gen.ClassDef(classSym, newParents, local, newClassBody.toArray()); } protected Tree[][] extractParentArgs(Tree[] parents) { |