diff options
author | Martin Odersky <odersky@gmail.com> | 2006-05-23 12:44:49 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-05-23 12:44:49 +0000 |
commit | 90bed7c3b6dfe56f7475267e4b590df089030af5 (patch) | |
tree | 3112f65a64122f09af82dbc1ed9c815b2e6bc947 | |
parent | 911ce1e4a590ac40282857d7889aa297a211b588 (diff) | |
download | scala-90bed7c3b6dfe56f7475267e4b590df089030af5.tar.gz scala-90bed7c3b6dfe56f7475267e4b590df089030af5.tar.bz2 scala-90bed7c3b6dfe56f7475267e4b590df089030af5.zip |
Clean ups fro bugs 605, 508
-rw-r--r-- | lib/.nfs0109874b0000002c | bin | 0 -> 100868 bytes | |||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Symbols.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 7 | ||||
-rw-r--r-- | test/files/neg/bug608.check | 6 | ||||
-rw-r--r-- | test/files/neg/bug608.scala (renamed from test/files/pos/bug608.scala) | 0 | ||||
-rw-r--r-- | test/files/pos/bug611.scala | 25 |
6 files changed, 37 insertions, 3 deletions
diff --git a/lib/.nfs0109874b0000002c b/lib/.nfs0109874b0000002c Binary files differnew file mode 100644 index 0000000000..9a98399342 --- /dev/null +++ b/lib/.nfs0109874b0000002c diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala index e7220014fd..81696a5612 100644 --- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala +++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala @@ -759,7 +759,7 @@ trait Symbols requires SymbolTable { assert(owner != NoSymbol, this) var str = if (owner.isRoot || owner.isEmptyPackageClass) simpleName.toString() - else owner.fullNameString(separator) + separator + simpleName + idString; + else owner.fullNameString(separator) + separator + simpleName; if (str.charAt(str.length - 1) == ' ') str = str.substring(0, str.length - 1) str } diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala index 4e2e504445..0a3e6e5982 100644 --- a/src/compiler/scala/tools/nsc/transform/Mixin.scala +++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala @@ -67,8 +67,10 @@ abstract class Mixin extends InfoTransform { def addLateInterfaceMembers(clazz: Symbol): unit = if (!(clazz hasFlag MIXEDIN)) { clazz setFlag MIXEDIN; +/* for (val bc <- clazz.info.baseClasses.reverse) if (bc.hasFlag(lateINTERFACE)) addLateInterfaceMembers(bc) +*/ def newGetter(field: Symbol): Symbol = clazz.newMethod(field.pos, nme.getterName(field.name)) .setFlag(field.flags & ~(PRIVATE | LOCAL) | ACCESSOR | DEFERRED | SYNTHETIC) @@ -115,9 +117,10 @@ abstract class Mixin extends InfoTransform { if (mixinClass.isImplClass) { addLateInterfaceMembers(mixinClass.toInterface); for (val member <- mixinClass.info.decls.toList) { - //System.out.println("adding forwarded method " + member + " " + mmap(member) + member.locationString + " to " + clazz + " " + clazz.info.member(member.name).alternatives);//DEBUG + //System.out.println("adding forwarded method " + member + " " + mmap(member) + member.locationString + " to " + clazz + " " + atPhase(currentRun.explicitOuterPhase)(clazz.info.member(member.name).alternatives));//DEBUG if (isForwarded(member) && !isStatic(member) && - (clazz.info.findMember(member.name, 0, 0).alternatives contains mmap(member))) { + (atPhase(currentRun.explicitOuterPhase)( + clazz.info.findMember(member.name, 0, 0).alternatives) contains mmap(member))) { val member1 = addMember( clazz, member.cloneSymbol(clazz) setPos clazz.pos resetFlag (DEFERRED | lateDEFERRED)); diff --git a/test/files/neg/bug608.check b/test/files/neg/bug608.check new file mode 100644 index 0000000000..a4b2664b58 --- /dev/null +++ b/test/files/neg/bug608.check @@ -0,0 +1,6 @@ +bug608.scala:16 error: no type parameters for method bimap: ((ha) => c)hs{override type a = c} exist so that it can be applied to arguments ((ha) => ha) + --- because --- +result type hs{override type a = c} is incompatible with expected type hs{override type s = hs; override type a = ha} + = g(f(x).bimap(id)) + ^ +one error found diff --git a/test/files/pos/bug608.scala b/test/files/neg/bug608.scala index 24f515651a..24f515651a 100644 --- a/test/files/pos/bug608.scala +++ b/test/files/neg/bug608.scala diff --git a/test/files/pos/bug611.scala b/test/files/pos/bug611.scala new file mode 100644 index 0000000000..eb1a5c19c2 --- /dev/null +++ b/test/files/pos/bug611.scala @@ -0,0 +1,25 @@ +package bug.contrib_60; + +abstract class Field { + type FieldType; + + var internalValue: FieldType; +} + +case class IntField(value: int) extends Field { + type FieldType = int; + + var internalValue: FieldType = value; +} + +case class StringField(value: String) extends Field { + type FieldType = String; + + var internalValue: FieldType = value; +} + +object Test { + def main (ars:scala.Array[String]): unit = { + Console.println(List(new StringField ("bar"), new IntField(8))) + } +} |