summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-05-23 12:44:49 +0000
committerMartin Odersky <odersky@gmail.com>2006-05-23 12:44:49 +0000
commit90bed7c3b6dfe56f7475267e4b590df089030af5 (patch)
tree3112f65a64122f09af82dbc1ed9c815b2e6bc947
parent911ce1e4a590ac40282857d7889aa297a211b588 (diff)
downloadscala-90bed7c3b6dfe56f7475267e4b590df089030af5.tar.gz
scala-90bed7c3b6dfe56f7475267e4b590df089030af5.tar.bz2
scala-90bed7c3b6dfe56f7475267e4b590df089030af5.zip
Clean ups fro bugs 605, 508
-rw-r--r--lib/.nfs0109874b0000002cbin0 -> 100868 bytes
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Symbols.scala2
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala7
-rw-r--r--test/files/neg/bug608.check6
-rw-r--r--test/files/neg/bug608.scala (renamed from test/files/pos/bug608.scala)0
-rw-r--r--test/files/pos/bug611.scala25
6 files changed, 37 insertions, 3 deletions
diff --git a/lib/.nfs0109874b0000002c b/lib/.nfs0109874b0000002c
new file mode 100644
index 0000000000..9a98399342
--- /dev/null
+++ b/lib/.nfs0109874b0000002c
Binary files differ
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)))
+ }
+}