summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Infer.scala2
-rw-r--r--src/library/scala/collection/Map.scala4
-rw-r--r--src/library/scala/collection/Set.scala5
-rw-r--r--src/library/scala/collection/immutable/Queue.scala2
-rw-r--r--src/library/scala/collection/mutable/ArrayBuffer.scala2
-rw-r--r--src/library/scala/collection/mutable/Buffer.scala2
-rw-r--r--src/library/scala/collection/mutable/ListBuffer.scala2
-rw-r--r--src/library/scala/collection/mutable/Map.scala2
-rw-r--r--src/library/scala/collection/mutable/Set.scala2
-rw-r--r--test/files/pos/bug788.scala20
10 files changed, 32 insertions, 11 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Infer.scala b/src/compiler/scala/tools/nsc/typechecker/Infer.scala
index 95a0fd4028..d9ea1b9916 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Infer.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Infer.scala
@@ -852,7 +852,7 @@ trait Infer requires Analyzer {
}
tvars foreach instantiateTypeVar(true)
}
- intersect(tpt.tpe, pt)
+ intersect(pt, tpt.tpe)
}
object toOrigin extends TypeMap {
diff --git a/src/library/scala/collection/Map.scala b/src/library/scala/collection/Map.scala
index 5472aadd1b..0d21faba6c 100644
--- a/src/library/scala/collection/Map.scala
+++ b/src/library/scala/collection/Map.scala
@@ -108,9 +108,9 @@ trait Map[A, +B] extends AnyRef
* @return true, iff both maps contain exactly the same mappings.
*/
override def equals(that: Any): Boolean = that match {
- case other: Map[A, B] =>
+ case other: Map[a, b] =>
this.size == other.size && this.elements.forall {
- case Pair(key, value) => other.get(key) match {
+ case Pair(key, value) => other.get(key.asInstanceOf[a]) match {
case None => false
case Some(otherval) => value == otherval
}
diff --git a/src/library/scala/collection/Set.scala b/src/library/scala/collection/Set.scala
index e97b4369da..107a1948d6 100644
--- a/src/library/scala/collection/Set.scala
+++ b/src/library/scala/collection/Set.scala
@@ -70,8 +70,9 @@ trait Set[A] extends AnyRef with Function1[A, Boolean] with Iterable[A] {
* elements.
*/
override def equals(that: Any): Boolean = that match {
- case other: Set[A] =>
- this.size == other.size && this.elements.forall(other.contains)
+ case other: Set[a] =>
+ this.size == other.size && this.elements.forall(
+ x => other contains x.asInstanceOf[a])
case _ =>
false
}
diff --git a/src/library/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala
index 46096d7e4c..5624a7eb21 100644
--- a/src/library/scala/collection/immutable/Queue.scala
+++ b/src/library/scala/collection/immutable/Queue.scala
@@ -130,7 +130,7 @@ class Queue[+A](elem: A*) extends Seq[A] {
* @return true, iff the two queues are structurally equal.
*/
override def equals(o: Any): Boolean = o match {
- case q: Queue[Any] =>
+ case q: Queue[_] =>
/* A function that compares the element at
position index in q with the element at
the same position in this (queue).
diff --git a/src/library/scala/collection/mutable/ArrayBuffer.scala b/src/library/scala/collection/mutable/ArrayBuffer.scala
index 8dacd17489..f15ccd9106 100644
--- a/src/library/scala/collection/mutable/ArrayBuffer.scala
+++ b/src/library/scala/collection/mutable/ArrayBuffer.scala
@@ -153,7 +153,7 @@ class ArrayBuffer[A] extends Buffer[A] with ResizableArray[A] {
* @return true, iff both buffers contain the same sequence of elements.
*/
override def equals(obj: Any): Boolean = obj match {
- case that: ArrayBuffer[A] =>
+ case that: ArrayBuffer[_] =>
this.length == that.length &&
elements.zip(that.elements).forall {
case Pair(thiselem, thatelem) => thiselem == thatelem
diff --git a/src/library/scala/collection/mutable/Buffer.scala b/src/library/scala/collection/mutable/Buffer.scala
index 21bee72a02..c5f953cb05 100644
--- a/src/library/scala/collection/mutable/Buffer.scala
+++ b/src/library/scala/collection/mutable/Buffer.scala
@@ -215,7 +215,7 @@ trait Buffer[A] extends AnyRef
case _ => throw new UnsupportedOperationException("message " + cmd + " not understood")
}
case Reset() => clear
- case s: Script[Pair[Location, A]] => s.elements foreach <<
+ case s: Script[_] => s.elements foreach <<
case _ => throw new UnsupportedOperationException("message " + cmd + " not understood")
}
diff --git a/src/library/scala/collection/mutable/ListBuffer.scala b/src/library/scala/collection/mutable/ListBuffer.scala
index 47cd64c74e..abe65019bf 100644
--- a/src/library/scala/collection/mutable/ListBuffer.scala
+++ b/src/library/scala/collection/mutable/ListBuffer.scala
@@ -266,7 +266,7 @@ final class ListBuffer[A] extends Buffer[A] {
* of elements.
*/
override def equals(obj: Any): Boolean = obj match {
- case that: ListBuffer[A] =>
+ case that: ListBuffer[_] =>
(this.length == that.length &&
elements.zip(that.elements).forall {
case Pair(thiselem, thatelem) => thiselem == thatelem
diff --git a/src/library/scala/collection/mutable/Map.scala b/src/library/scala/collection/mutable/Map.scala
index 36565a0493..7106acb8a1 100644
--- a/src/library/scala/collection/mutable/Map.scala
+++ b/src/library/scala/collection/mutable/Map.scala
@@ -130,7 +130,7 @@ trait Map[A, B] extends AnyRef
case Update(Pair(k, v)) => update(k, v)
case Remove(Pair(k, _)) => this -= k
case Reset() => clear
- case s: Script[Pair[A, B]] => s.elements foreach <<
+ case s: Script[_] => s.elements foreach <<
case _ => throw new UnsupportedOperationException("message " + cmd + " not understood")
}
diff --git a/src/library/scala/collection/mutable/Set.scala b/src/library/scala/collection/mutable/Set.scala
index 20761f1068..6ae94dc4f3 100644
--- a/src/library/scala/collection/mutable/Set.scala
+++ b/src/library/scala/collection/mutable/Set.scala
@@ -114,7 +114,7 @@ trait Set[A] extends AnyRef with collection.Set[A]
case Include(elem) => this += elem
case Remove(elem) => this -= elem
case Reset() => clear
- case s: Script[A] => s.elements foreach <<
+ case s: Script[_] => s.elements foreach <<
case _ => throw new UnsupportedOperationException("message " + cmd + " not understood")
}
diff --git a/test/files/pos/bug788.scala b/test/files/pos/bug788.scala
new file mode 100644
index 0000000000..23ffa4a52d
--- /dev/null
+++ b/test/files/pos/bug788.scala
@@ -0,0 +1,20 @@
+package test;
+
+trait Test {
+ type Node <: NodeImpl;
+ trait NodeImpl;
+ type Expression <: Node with ExpressionImpl;
+ trait ExpressionImpl extends NodeImpl {
+ def self : Expression;
+ }
+ type Named <: Node with NamedImpl;
+ trait NamedImpl extends NodeImpl {
+ def self : Named;
+ }
+ def asExpression(e : ExpressionImpl) : Named = {
+ e match {
+ case f : NamedImpl => f.self;
+ case _ => null;
+ }
+ }
+}