summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpradel <pradel@epfl.ch>2008-06-17 14:34:06 +0000
committerpradel <pradel@epfl.ch>2008-06-17 14:34:06 +0000
commitd34d51d220bd24e54f38e069250db8b692dc0178 (patch)
tree88665b87a6d811c25fecc0e02e2654c715a59756
parentd576a53cd2bddc7fc9724d9645d810622d54d3e4 (diff)
downloadscala-d34d51d220bd24e54f38e069250db8b692dc0178.tar.gz
scala-d34d51d220bd24e54f38e069250db8b692dc0178.tar.bz2
scala-d34d51d220bd24e54f38e069250db8b692dc0178.zip
test and fix for #1027
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala3
-rw-r--r--test/files/pos/t1027.scala18
2 files changed, 20 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
index 55728ec70f..5485c4ccc4 100644
--- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
@@ -563,7 +563,8 @@ abstract class RefChecks extends InfoTransform {
!(receiver isSubClass actual) && receiver != AllRefClass && actual != AllRefClass &&
(name == nme.EQ || name == nme.LE))
nonSensible("non-null ", false)
- else if ((isNew(qual) || isNew(args.head)) && hasObjectEquals)
+ else if ((isNew(qual) || isNew(args.head)) && hasObjectEquals &&
+ (name == nme.EQ || name == nme.NE))
nonSensibleWarning("a fresh object", false)
case _ =>
}
diff --git a/test/files/pos/t1027.scala b/test/files/pos/t1027.scala
new file mode 100644
index 0000000000..7854041f10
--- /dev/null
+++ b/test/files/pos/t1027.scala
@@ -0,0 +1,18 @@
+object T1027 extends Application {
+ trait Comparable[T <: Comparable[T]] { this: T =>
+ def < (that: T): Boolean
+ def <=(that: T): Boolean = this < that || this == that
+ def > (that: T): Boolean = that < this
+ def >=(that: T): Boolean = that <= this
+ }
+ class A(val x: String) extends Comparable[A]{
+ def < (that: A) = this.x < that.x
+ }
+ val a = new A("a")
+ val b = new A("b")
+ println(a < b)
+ println(a > b)
+ println(a <= b)
+ println(a >= b)
+ println("Comparable traits : " + (new A("x") > new A("y")).toString)
+ }