Skip to content

Commit c5164d8

Browse files
committed
Merge pull request #3 from scala/2.11.x
merge repo
2 parents d30df3b + 14f875c commit c5164d8

15 files changed

+180
-90
lines changed

spec/07-implicits.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,16 @@ they appear and all the resulting evidence parameters are concatenated
357357
in one implicit parameter section. Since traits do not take
358358
constructor parameters, this translation does not work for them.
359359
Consequently, type-parameters in traits may not be view- or context-bounded.
360-
Also, a method or class with view- or context bounds may not define any
361-
additional implicit parameters.
360+
361+
Evidence parameters are prepended to the existing implicit parameter section, if one exists.
362+
363+
For example:
364+
365+
```scala
366+
def foo[A: M](implicit b: B): C
367+
// expands to:
368+
// def foo[A](implicit evidence$1: M[A], b: B): C
369+
```
362370

363371
###### Example
364372
The `<=` method from the [`Ordered` example](#example-ordered) can be declared

src/library/scala/collection/GenTraversableOnce.scala

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -393,20 +393,35 @@ trait GenTraversableOnce[+A] extends Any {
393393
*/
394394
def minBy[B](f: A => B)(implicit cmp: Ordering[B]): A
395395

396-
def forall(pred: A => Boolean): Boolean
396+
/** Tests whether a predicate holds for all elements of this $coll.
397+
*
398+
* $mayNotTerminateInf
399+
*
400+
* @param p the predicate used to test elements.
401+
* @return `true` if this $coll is empty or the given predicate `p`
402+
* holds for all elements of this $coll, otherwise `false`.
403+
*/
404+
def forall(@deprecatedName('pred) p: A => Boolean): Boolean
397405

398-
def exists(pred: A => Boolean): Boolean
406+
/** Tests whether a predicate holds for at least one element of this $coll.
407+
*
408+
* $mayNotTerminateInf
409+
*
410+
* @param p the predicate used to test elements.
411+
* @return `true` if the given predicate `p` is satisfied by at least one element of this $coll, otherwise `false`
412+
*/
413+
def exists(@deprecatedName('pred) p: A => Boolean): Boolean
399414

400415
/** Finds the first element of the $coll satisfying a predicate, if any.
401416
*
402417
* $mayNotTerminateInf
403418
* $orderDependent
404419
*
405-
* @param pred the predicate used to test elements.
420+
* @param p the predicate used to test elements.
406421
* @return an option value containing the first element in the $coll
407422
* that satisfies `p`, or `None` if none exists.
408423
*/
409-
def find(pred: A => Boolean): Option[A]
424+
def find(@deprecatedName('pred) p: A => Boolean): Option[A]
410425

411426
/** Copies values of this $coll to an array.
412427
* Fills the given array `xs` with values of this $coll.

src/library/scala/collection/LinearSeqOptimized.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,20 +117,20 @@ trait LinearSeqOptimized[+A, +Repr <: LinearSeqOptimized[A, Repr]] extends Linea
117117
}
118118

119119
override /*TraversableLike*/
120-
def foldLeft[B](z: B)(f: (B, A) => B): B = {
120+
def foldLeft[B](z: B)(@deprecatedName('f) op: (B, A) => B): B = {
121121
var acc = z
122122
var these = this
123123
while (!these.isEmpty) {
124-
acc = f(acc, these.head)
124+
acc = op(acc, these.head)
125125
these = these.tail
126126
}
127127
acc
128128
}
129129

130130
override /*IterableLike*/
131-
def foldRight[B](z: B)(f: (A, B) => B): B =
131+
def foldRight[B](z: B)(@deprecatedName('f) op: (A, B) => B): B =
132132
if (this.isEmpty) z
133-
else f(head, tail.foldRight(z)(f))
133+
else op(head, tail.foldRight(z)(op))
134134

135135
override /*TraversableLike*/
136136
def reduceLeft[B >: A](f: (B, A) => B): B =

src/library/scala/collection/TraversableLike.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ trait TraversableLike[+A, +Repr] extends Any
357357
result
358358
}
359359

360-
/** Tests whether a predicate holds for some of the elements of this $coll.
360+
/** Tests whether a predicate holds for at least one element of this $coll.
361361
*
362362
* $mayNotTerminateInf
363363
*

src/library/scala/collection/immutable/ListMap.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ object ListMap extends ImmutableMapFactory[ListMap] {
3232
private object EmptyListMap extends ListMap[Any, Nothing] { }
3333
}
3434

35-
/** This class implements immutable maps using a list-based data structure.
35+
/** This class implements immutable maps using a list-based data structure, which preserves insertion order.
3636
* Instances of `ListMap` represent empty maps; they can be either created by
3737
* calling the constructor directly, or by applying the function `ListMap.empty`.
3838
*

src/library/scala/collection/immutable/RedBlackTree.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,11 +409,11 @@ object RedBlackTree {
409409

410410
def cons[B](x: B, xs: NList[B]): NList[B] = new NList(x, xs)
411411

412-
def foldLeft[A, B](xs: NList[A], z: B)(f: (B, A) => B): B = {
412+
def foldLeft[A, B](xs: NList[A], z: B)(op: (B, A) => B): B = {
413413
var acc = z
414414
var these = xs
415415
while (these ne null) {
416-
acc = f(acc, these.head)
416+
acc = op(acc, these.head)
417417
these = these.tail
418418
}
419419
acc

src/library/scala/collection/immutable/Set.scala

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ trait Set[A] extends Iterable[A]
3333
with Parallelizable[A, ParSet[A]]
3434
{
3535
override def companion: GenericCompanion[Set] = Set
36-
36+
3737

3838
/** Returns this $coll as an immutable set, perhaps accepting a
3939
* wider range of elements. Since it already is an
@@ -63,15 +63,15 @@ trait Set[A] extends Iterable[A]
6363
object Set extends ImmutableSetFactory[Set] {
6464
/** $setCanBuildFromInfo */
6565
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Set[A]] = setCanBuildFrom[A]
66-
66+
6767
/** An optimized representation for immutable empty sets */
6868
private object EmptySet extends AbstractSet[Any] with Set[Any] with Serializable {
6969
override def size: Int = 0
7070
def contains(elem: Any): Boolean = false
7171
def + (elem: Any): Set[Any] = new Set1(elem)
7272
def - (elem: Any): Set[Any] = this
7373
def iterator: Iterator[Any] = Iterator.empty
74-
override def foreach[U](f: Any => U): Unit = {}
74+
override def foreach[U](f: Any => U): Unit = ()
7575
override def toSet[B >: Any]: Set[B] = this.asInstanceOf[Set[B]]
7676
}
7777
private[collection] def emptyInstance: Set[Any] = EmptySet
@@ -90,17 +90,17 @@ object Set extends ImmutableSetFactory[Set] {
9090
else this
9191
def iterator: Iterator[A] =
9292
Iterator(elem1)
93-
override def foreach[U](f: A => U): Unit = {
93+
override def foreach[U](f: A => U): Unit = {
9494
f(elem1)
9595
}
96-
override def exists(f: A => Boolean): Boolean = {
97-
f(elem1)
96+
override def exists(@deprecatedName('f) p: A => Boolean): Boolean = {
97+
p(elem1)
9898
}
99-
override def forall(f: A => Boolean): Boolean = {
100-
f(elem1)
99+
override def forall(@deprecatedName('f) p: A => Boolean): Boolean = {
100+
p(elem1)
101101
}
102-
override def find(f: A => Boolean): Option[A] = {
103-
if (f(elem1)) Some(elem1)
102+
override def find(@deprecatedName('f) p: A => Boolean): Option[A] = {
103+
if (p(elem1)) Some(elem1)
104104
else None
105105
}
106106
// Why is Set1 non-final? Need to fix that!
@@ -124,18 +124,18 @@ object Set extends ImmutableSetFactory[Set] {
124124
else this
125125
def iterator: Iterator[A] =
126126
Iterator(elem1, elem2)
127-
override def foreach[U](f: A => U): Unit = {
127+
override def foreach[U](f: A => U): Unit = {
128128
f(elem1); f(elem2)
129129
}
130-
override def exists(f: A => Boolean): Boolean = {
131-
f(elem1) || f(elem2)
130+
override def exists(@deprecatedName('f) p: A => Boolean): Boolean = {
131+
p(elem1) || p(elem2)
132132
}
133-
override def forall(f: A => Boolean): Boolean = {
134-
f(elem1) && f(elem2)
133+
override def forall(@deprecatedName('f) p: A => Boolean): Boolean = {
134+
p(elem1) && p(elem2)
135135
}
136-
override def find(f: A => Boolean): Option[A] = {
137-
if (f(elem1)) Some(elem1)
138-
else if (f(elem2)) Some(elem2)
136+
override def find(@deprecatedName('f) p: A => Boolean): Option[A] = {
137+
if (p(elem1)) Some(elem1)
138+
else if (p(elem2)) Some(elem2)
139139
else None
140140
}
141141
// Why is Set2 non-final? Need to fix that!
@@ -159,19 +159,19 @@ object Set extends ImmutableSetFactory[Set] {
159159
else this
160160
def iterator: Iterator[A] =
161161
Iterator(elem1, elem2, elem3)
162-
override def foreach[U](f: A => U): Unit = {
162+
override def foreach[U](f: A => U): Unit = {
163163
f(elem1); f(elem2); f(elem3)
164164
}
165-
override def exists(f: A => Boolean): Boolean = {
166-
f(elem1) || f(elem2) || f(elem3)
165+
override def exists(@deprecatedName('f) p: A => Boolean): Boolean = {
166+
p(elem1) || p(elem2) || p(elem3)
167167
}
168-
override def forall(f: A => Boolean): Boolean = {
169-
f(elem1) && f(elem2) && f(elem3)
168+
override def forall(@deprecatedName('f) p: A => Boolean): Boolean = {
169+
p(elem1) && p(elem2) && p(elem3)
170170
}
171-
override def find(f: A => Boolean): Option[A] = {
172-
if (f(elem1)) Some(elem1)
173-
else if (f(elem2)) Some(elem2)
174-
else if (f(elem3)) Some(elem3)
171+
override def find(@deprecatedName('f) p: A => Boolean): Option[A] = {
172+
if (p(elem1)) Some(elem1)
173+
else if (p(elem2)) Some(elem2)
174+
else if (p(elem3)) Some(elem3)
175175
else None
176176
}
177177
// Why is Set3 non-final? Need to fix that!
@@ -196,20 +196,20 @@ object Set extends ImmutableSetFactory[Set] {
196196
else this
197197
def iterator: Iterator[A] =
198198
Iterator(elem1, elem2, elem3, elem4)
199-
override def foreach[U](f: A => U): Unit = {
199+
override def foreach[U](f: A => U): Unit = {
200200
f(elem1); f(elem2); f(elem3); f(elem4)
201201
}
202-
override def exists(f: A => Boolean): Boolean = {
203-
f(elem1) || f(elem2) || f(elem3) || f(elem4)
202+
override def exists(@deprecatedName('f) p: A => Boolean): Boolean = {
203+
p(elem1) || p(elem2) || p(elem3) || p(elem4)
204204
}
205-
override def forall(f: A => Boolean): Boolean = {
206-
f(elem1) && f(elem2) && f(elem3) && f(elem4)
205+
override def forall(@deprecatedName('f) p: A => Boolean): Boolean = {
206+
p(elem1) && p(elem2) && p(elem3) && p(elem4)
207207
}
208-
override def find(f: A => Boolean): Option[A] = {
209-
if (f(elem1)) Some(elem1)
210-
else if (f(elem2)) Some(elem2)
211-
else if (f(elem3)) Some(elem3)
212-
else if (f(elem4)) Some(elem4)
208+
override def find(@deprecatedName('f) p: A => Boolean): Option[A] = {
209+
if (p(elem1)) Some(elem1)
210+
else if (p(elem2)) Some(elem2)
211+
else if (p(elem3)) Some(elem3)
212+
else if (p(elem4)) Some(elem4)
213213
else None
214214
}
215215
// Why is Set4 non-final? Need to fix that!

src/library/scala/collection/parallel/ParIterableLike.scala

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -520,22 +520,22 @@ self: ParIterableLike[T, Repr, Sequential] =>
520520
*
521521
* $abortsignalling
522522
*
523-
* @param pred a predicate used to test elements
523+
* @param p a predicate used to test elements
524524
* @return true if `p` holds for all elements, false otherwise
525525
*/
526-
def forall(pred: T => Boolean): Boolean = {
527-
tasksupport.executeAndWaitResult(new Forall(pred, splitter assign new DefaultSignalling with VolatileAbort))
526+
def forall(@deprecatedName('pred) p: T => Boolean): Boolean = {
527+
tasksupport.executeAndWaitResult(new Forall(p, splitter assign new DefaultSignalling with VolatileAbort))
528528
}
529529

530530
/** Tests whether a predicate holds for some element of this $coll.
531531
*
532532
* $abortsignalling
533533
*
534-
* @param pred a predicate used to test elements
534+
* @param p a predicate used to test elements
535535
* @return true if `p` holds for some element, false otherwise
536536
*/
537-
def exists(pred: T => Boolean): Boolean = {
538-
tasksupport.executeAndWaitResult(new Exists(pred, splitter assign new DefaultSignalling with VolatileAbort))
537+
def exists(@deprecatedName('pred) p: T => Boolean): Boolean = {
538+
tasksupport.executeAndWaitResult(new Exists(p, splitter assign new DefaultSignalling with VolatileAbort))
539539
}
540540

541541
/** Finds some element in the collection for which the predicate holds, if such
@@ -546,11 +546,11 @@ self: ParIterableLike[T, Repr, Sequential] =>
546546
*
547547
* $abortsignalling
548548
*
549-
* @param pred predicate used to test the elements
549+
* @param p predicate used to test the elements
550550
* @return an option value with the element if such an element exists, or `None` otherwise
551551
*/
552-
def find(pred: T => Boolean): Option[T] = {
553-
tasksupport.executeAndWaitResult(new Find(pred, splitter assign new DefaultSignalling with VolatileAbort))
552+
def find(@deprecatedName('pred) p: T => Boolean): Option[T] = {
553+
tasksupport.executeAndWaitResult(new Find(p, splitter assign new DefaultSignalling with VolatileAbort))
554554
}
555555

556556
/** Creates a combiner factory. Each combiner factory instance is used

src/library/scala/runtime/Tuple2Zipped.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,21 @@ final class Tuple2Zipped[El1, Repr1, El2, Repr2](val colls: (TraversableLike[El1
8484
(b1.result(), b2.result())
8585
}
8686

87-
def exists(f: (El1, El2) => Boolean): Boolean = {
87+
def exists(@deprecatedName('f) p: (El1, El2) => Boolean): Boolean = {
8888
val elems2 = colls._2.iterator
8989

9090
for (el1 <- colls._1) {
9191
if (elems2.hasNext) {
92-
if (f(el1, elems2.next()))
92+
if (p(el1, elems2.next()))
9393
return true
9494
}
9595
else return false
9696
}
9797
false
9898
}
9999

100-
def forall(f: (El1, El2) => Boolean): Boolean =
101-
!exists((x, y) => !f(x, y))
100+
def forall(@deprecatedName('f) p: (El1, El2) => Boolean): Boolean =
101+
!exists((x, y) => !p(x, y))
102102

103103
def foreach[U](f: (El1, El2) => U): Unit = {
104104
val elems2 = colls._2.iterator

src/library/scala/runtime/Tuple3Zipped.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,22 +90,22 @@ final class Tuple3Zipped[El1, Repr1, El2, Repr2, El3, Repr3](val colls: (Travers
9090
result
9191
}
9292

93-
def exists(f: (El1, El2, El3) => Boolean): Boolean = {
93+
def exists(@deprecatedName('f) p: (El1, El2, El3) => Boolean): Boolean = {
9494
val elems2 = colls._2.iterator
9595
val elems3 = colls._3.iterator
9696

9797
for (el1 <- colls._1) {
9898
if (elems2.hasNext && elems3.hasNext) {
99-
if (f(el1, elems2.next(), elems3.next()))
99+
if (p(el1, elems2.next(), elems3.next()))
100100
return true
101101
}
102102
else return false
103103
}
104104
false
105105
}
106106

107-
def forall(f: (El1, El2, El3) => Boolean): Boolean =
108-
!exists((x, y, z) => !f(x, y, z))
107+
def forall(@deprecatedName('f) p: (El1, El2, El3) => Boolean): Boolean =
108+
!exists((x, y, z) => !p(x, y, z))
109109

110110
def foreach[U](f: (El1, El2, El3) => U): Unit = {
111111
val elems2 = colls._2.iterator

src/library/scala/util/Either.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,8 @@ object Either {
329329
* }}}
330330
*
331331
*/
332-
def forall(f: A => Boolean) = e match {
333-
case Left(a) => f(a)
332+
def forall(@deprecatedName('f) p: A => Boolean) = e match {
333+
case Left(a) => p(a)
334334
case Right(_) => true
335335
}
336336

@@ -345,8 +345,8 @@ object Either {
345345
* }}}
346346
*
347347
*/
348-
def exists(f: A => Boolean) = e match {
349-
case Left(a) => f(a)
348+
def exists(@deprecatedName('f) p: A => Boolean) = e match {
349+
case Left(a) => p(a)
350350
case Right(_) => false
351351
}
352352

@@ -507,9 +507,9 @@ object Either {
507507
* Left(12).right.exists(_ > 10) // false
508508
* }}}
509509
*/
510-
def exists(f: B => Boolean) = e match {
510+
def exists(@deprecatedName('f) p: B => Boolean) = e match {
511511
case Left(_) => false
512-
case Right(b) => f(b)
512+
case Right(b) => p(b)
513513
}
514514

515515
/**

0 commit comments

Comments
 (0)