summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala7
-rw-r--r--src/library/scala/collection/generic/IterableView.scala2
-rw-r--r--src/library/scala/collection/generic/MutableVectorView.scala2
-rw-r--r--src/library/scala/collection/generic/SequenceView.scala2
-rw-r--r--src/library/scala/collection/generic/TraversableView.scala2
-rw-r--r--src/library/scala/collection/generic/VectorView.scala2
-rw-r--r--test/files/neg/bug588.check2
-rw-r--r--test/files/neg/bug588.scala2
-rw-r--r--test/files/neg/ticket513.check4
-rw-r--r--test/files/neg/ticket513.scala6
10 files changed, 19 insertions, 12 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
index 3e85a55e61..5e8fbca81b 100644
--- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
@@ -860,11 +860,8 @@ abstract class RefChecks extends InfoTransform {
var result = tree
def doTypeTraversal(f: (Type) => Unit) =
- if (!inPattern) {
- new TypeTraverser {
- def traverse(tp: Type) { f(tp) }
- } traverse tree.tpe
- }
+ if (!inPattern)
+ new ForEachTypeTraverser(f) traverse tree.tpe
// Apply RefChecks to annotations. Makes sure the annotations conform to
// type bounds (bug #935), issues deprecation warnings for symbols used
diff --git a/src/library/scala/collection/generic/IterableView.scala b/src/library/scala/collection/generic/IterableView.scala
index eca431ae1e..30d3f772ef 100644
--- a/src/library/scala/collection/generic/IterableView.scala
+++ b/src/library/scala/collection/generic/IterableView.scala
@@ -22,6 +22,6 @@ import TraversableView.NoBuilder
trait IterableView[+A, +Coll <: Iterable[_]] extends IterableViewTemplate[A, Coll, IterableView[A, Coll]]
object IterableView {
- type Coll = TraversableView[_, _]
+ type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
implicit def builderFactory[A]: BuilderFactory[A, IterableView[A, Iterable[_]], Coll] = new BuilderFactory[A, IterableView[A, Iterable[_]], Coll] { def apply(from: Coll) = new NoBuilder }
}
diff --git a/src/library/scala/collection/generic/MutableVectorView.scala b/src/library/scala/collection/generic/MutableVectorView.scala
index 1a84ace1e2..604d18ea98 100644
--- a/src/library/scala/collection/generic/MutableVectorView.scala
+++ b/src/library/scala/collection/generic/MutableVectorView.scala
@@ -22,6 +22,6 @@ import TraversableView.NoBuilder
trait MutableVectorView[A, +Coll <: mutable.Vector[_]] extends MutableVectorViewTemplate[A, Coll, MutableVectorView[A, Coll]]
object MutableVectorView {
- type Coll = TraversableView[_, _]
+ type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
implicit def builderFactory[A]: BuilderFactory[A, MutableVectorView[A, mutable.Vector[_]], Coll] = new BuilderFactory[A, MutableVectorView[A, mutable.Vector[_]], Coll] { def apply(from: Coll) = new NoBuilder }
}
diff --git a/src/library/scala/collection/generic/SequenceView.scala b/src/library/scala/collection/generic/SequenceView.scala
index 269d247316..f3a93914a8 100644
--- a/src/library/scala/collection/generic/SequenceView.scala
+++ b/src/library/scala/collection/generic/SequenceView.scala
@@ -22,7 +22,7 @@ import TraversableView.NoBuilder
trait SequenceView[+A, +Coll <: Sequence[_]] extends SequenceViewTemplate[A, Coll, SequenceView[A, Coll]]
object SequenceView {
- type Coll = TraversableView[_, _]
+ type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
implicit def builderFactory[A]: BuilderFactory[A, SequenceView[A, Sequence[_]], Coll] = new BuilderFactory[A, SequenceView[A, Sequence[_]], Coll] { def apply(from: Coll) = new NoBuilder }
}
diff --git a/src/library/scala/collection/generic/TraversableView.scala b/src/library/scala/collection/generic/TraversableView.scala
index 47eb3c22c7..66bfee31cc 100644
--- a/src/library/scala/collection/generic/TraversableView.scala
+++ b/src/library/scala/collection/generic/TraversableView.scala
@@ -33,6 +33,6 @@ object TraversableView {
def result() = throw new UnsupportedOperationException("TraversableView.Builder.result")
def clear() {}
}
- type Coll = TraversableView[_, _]
+ type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
implicit def builderFactory[A]: BuilderFactory[A, TraversableView[A, Traversable[_]], Coll] = new BuilderFactory[A, TraversableView[A, Traversable[_]], Coll] { def apply(from: Coll) = new NoBuilder }
}
diff --git a/src/library/scala/collection/generic/VectorView.scala b/src/library/scala/collection/generic/VectorView.scala
index 65850e8a01..7125af05e6 100644
--- a/src/library/scala/collection/generic/VectorView.scala
+++ b/src/library/scala/collection/generic/VectorView.scala
@@ -23,6 +23,6 @@ import TraversableView.NoBuilder
trait VectorView[+A, +Coll <: Vector[_]] extends VectorViewTemplate[A, Coll, VectorView[A, Coll]]
object VectorView {
- type Coll = TraversableView[_, _]
+ type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
implicit def builderFactory[A]: BuilderFactory[A, VectorView[A, Vector[_]], Coll] = new BuilderFactory[A, VectorView[A, Vector[_]], Coll] { def apply(from: Coll) = new NoBuilder }
}
diff --git a/test/files/neg/bug588.check b/test/files/neg/bug588.check
index d795922e0c..5f55c95619 100644
--- a/test/files/neg/bug588.check
+++ b/test/files/neg/bug588.check
@@ -1,6 +1,6 @@
bug588.scala:3: error: double definition:
method visit:(f: (Int) => String)Boolean and
-method visit:(f: (Int) => unit)Boolean at line 2
+method visit:(f: (Int) => Unit)Boolean at line 2
have same type after erasure: (f: Function1)Boolean
def visit(f: Int => String): Boolean
^
diff --git a/test/files/neg/bug588.scala b/test/files/neg/bug588.scala
index 1713df1330..f30937377e 100644
--- a/test/files/neg/bug588.scala
+++ b/test/files/neg/bug588.scala
@@ -1,5 +1,5 @@
abstract class Test0 {
- def visit(f: Int => unit): Boolean
+ def visit(f: Int => Unit): Boolean
def visit(f: Int => String): Boolean
}
trait Test {
diff --git a/test/files/neg/ticket513.check b/test/files/neg/ticket513.check
new file mode 100644
index 0000000000..8994269262
--- /dev/null
+++ b/test/files/neg/ticket513.check
@@ -0,0 +1,4 @@
+ticket513.scala:6: error: type arguments [NotThatBound] do not conform to trait T's type parameter bounds [A <: Bound]
+object Wrong extends Wrap[T[NotThatBound]]
+ ^
+one error found
diff --git a/test/files/neg/ticket513.scala b/test/files/neg/ticket513.scala
new file mode 100644
index 0000000000..e8510558b0
--- /dev/null
+++ b/test/files/neg/ticket513.scala
@@ -0,0 +1,6 @@
+class Bound
+class NotThatBound
+trait T[A <: Bound]
+trait Wrap[X]
+
+object Wrong extends Wrap[T[NotThatBound]] \ No newline at end of file