summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorAntonio Cunei <antonio.cunei@epfl.ch>2010-04-14 08:25:58 +0000
committerAntonio Cunei <antonio.cunei@epfl.ch>2010-04-14 08:25:58 +0000
commit433ed7ef4fd7d6ed8067c10cebe1e7ec3f72b40f (patch)
tree270b56354e7dde32bb3fc7953d08baf92ba49326 /src/library
parentd61d2c93d788fdf01ad2497b9c6bb69ab9d6a397 (diff)
downloadscala-433ed7ef4fd7d6ed8067c10cebe1e7ec3f72b40f.tar.gz
scala-433ed7ef4fd7d6ed8067c10cebe1e7ec3f72b40f.tar.bz2
scala-433ed7ef4fd7d6ed8067c10cebe1e7ec3f72b40f.zip
Merged revisions 21492-21512,21516-21518,21520-...
Merged revisions 21492-21512,21516-21518,21520-21525,21527,21529,21531,21535-21537,21539- 21543,21545-21548,21550,21552,21554-21560 via svnmerge from https://lampsvn.epfl.ch/svn-repos/scala/scala/trunk ........ r21492 | dubochet | 2010-04-12 19:04:31 +0200 (Mon, 12 Apr 2010) | 1 line [scaladoc] Lazy vals are printed as such, no longer as vars. No review. ........ r21493 | dubochet | 2010-04-12 19:04:47 +0200 (Mon, 12 Apr 2010) | 1 line [scaladoc] Signature kind (def, val) needs more space to accommodate lazy vals and implicit defs. ........ r21494 | dubochet | 2010-04-12 19:05:04 +0200 (Mon, 12 Apr 2010) | 1 line [scaladoc] Comment summary (first sentence) is extracted by comment parser, which is a lot more robust and correct. No review. ........ r21495 | dragos | 2010-04-12 19:19:29 +0200 (Mon, 12 Apr 2010) | 4 lines Auto-generate scala.runtime.AbstractFunctionN classes. Moved zipped* methods in Tuple1/2 in genprod, so that regenerating tuples does not lose these methods. Added @specialized annotations into genprod for the same reason. ........ r21496 | dragos | 2010-04-12 19:19:38 +0200 (Mon, 12 Apr 2010) | 5 lines Regenerated tuples, products and (Abstract)Functions. We needed to have separate files for AbstractFunctionN because the compiler may need their symbol even before their sourcefile is parsed. In such cases it relies on finding a source file with the right name. ........ r21497 | dragos | 2010-04-12 19:19:51 +0200 (Mon, 12 Apr 2010) | 1 line Don't generate forwarders for specialized methods. no review. ........ r21498 | dragos | 2010-04-12 19:19:59 +0200 (Mon, 12 Apr 2010) | 3 lines Companion objects of case classes extend AbstractFunctionN instead of FunctionN. This saves quite some space, since FunctionN methods are not re-mixed in for each object. ........ r21499 | dragos | 2010-04-12 19:20:07 +0200 (Mon, 12 Apr 2010) | 5 lines Fixed various position issues in specialized members. Removed an instance where the tree transformer was run twice on the same tree, resulting in double definition errors. Fixed re-typing of super calls in constructor arguments for specialized members. No review. ........ r21500 | phaller | 2010-04-12 19:27:14 +0200 (Mon, 12 Apr 2010) | 1 line Restored partest behavior to write log files with normalized paths. For new tests the check file can be copied from the log file. This makes the behavior of --show-diff exactly the same as diffing the log and check file. Review by extempore. ........ r21501 | dubochet | 2010-04-12 19:30:24 +0200 (Mon, 12 Apr 2010) | 1 line [scaladoc] Inner objects, which according to the compiler are actually methods, are now printed as objects by Scaladoc. No review. ........ r21502 | phaller | 2010-04-12 21:18:31 +0200 (Mon, 12 Apr 2010) | 1 line Reverted r21500 until all test categories work again. ........ r21503 | dubochet | 2010-04-12 21:51:53 +0200 (Mon, 12 Apr 2010) | 1 line [scaladoc] Use case symbols have correct owner; inherited filter works as expected with use cases. Review by odersky. ........ r21504 | extempore | 2010-04-12 21:57:56 +0200 (Mon, 12 Apr 2010) | 5 lines Correct oversight where neg tests didn't demand a checkfile. More trying to get timeout/interrupted logic so we know when things die but also don't impede interrupts. Folded precondition logic into test sequence logic, it's plenty general to cover it. Closes #3282, review by phaller. ........ r21505 | malayeri | 2010-04-12 21:59:21 +0200 (Mon, 12 Apr 2010) | 7 lines [scaladoc] Cosmetic changes: - changed link color to underlined and dark purple - increased padding in gray lines of method definitions - lightened gray lines of method definitions - changed dashed and solid lines from black to gray - increased size of top template declaration; changed alignment Review by dubochet. ........ r21506 | phaller | 2010-04-12 22:17:13 +0200 (Mon, 12 Apr 2010) | 1 line Disabled test that hangs when actors package is compiled with specialization. Review by dragos. ........ r21507 | phaller | 2010-04-12 22:41:46 +0200 (Mon, 12 Apr 2010) | 1 line Another attempt at avoiding partest hang ups when the compiler crashes. Review by extempore. ........ r21508 | dubochet | 2010-04-12 22:48:42 +0200 (Mon, 12 Apr 2010) | 1 line [scaladoc] Members inherited from sourceless files are correctly printed in documentation. No review. ........ r21509 | malayeri | 2010-04-12 22:53:02 +0200 (Mon, 12 Apr 2010) | 1 line Changed the colors for types, value members, and tooltips. Feel free to revert. Review by dubochet. ........ r21510 | extempore | 2010-04-12 23:36:33 +0200 (Mon, 12 Apr 2010) | 9 lines Still working on partest. Added ant targets which can be temporary if considered clutter. ant test.partest ant test.partest-opt They run some recently troublesome partest tests with a low timeout. Logged some more exceptions where the compiler has been dying. Review by phaller. ........ r21511 | extempore | 2010-04-12 23:45:17 +0200 (Mon, 12 Apr 2010) | 10 lines Disabling what I think are the last two failing tests, one each of the two leading bugs among those we've seen here today on testing theater: "could not find toMap: (x$1: scala.collection.TraversableOnce,x$2: Predef$<:<)" and "scala.tools.nsc.symtab.Types$TypeError: method react cannot be accessed in java.lang.Object with scala.actors.Reactor[Any] No review but hey lets' see if we can re-enable these tests soonish. ........ r21512 | prokopec | 2010-04-12 23:53:30 +0200 (Mon, 12 Apr 2010) | 1 line Documentation for mutable collections. No review. ........ r21516 | extempore | 2010-04-13 01:20:03 +0200 (Tue, 13 Apr 2010) | 5 lines Noticed that Settings post-set hooks were not being set in the place where they ought to be, so multiple setting settings (such as -optimise) were not flipping all the right bits when set programmatically instead of via command line options. This may be a factor in inlining issues, though by itself it does not appear to solve anything. No review. ........ r21517 | malayeri | 2010-04-13 06:25:09 +0200 (Tue, 13 Apr 2010) | 1 line [scaladoc] Changed comment code and pre tages to not have "font-size: small" attribute. Review by dubochet. ........ r21518 | plocinic | 2010-04-13 10:12:05 +0200 (Tue, 13 Apr 2010) | 1 line Some clean-ups. Removed old syntax, code duplication etc. No review. ........ r21520 | prokopec | 2010-04-13 12:29:58 +0200 (Tue, 13 Apr 2010) | 1 line docs for immutable.A-L*. no review ........ r21521 | rytz | 2010-04-13 12:31:39 +0200 (Tue, 13 Apr 2010) | 1 line fixed most of stability, reviewed by iuli, so no review. continuations.jar is still failing stability, i'll look at that. ........ r21522 | rompf | 2010-04-13 13:08:12 +0200 (Tue, 13 Apr 2010) | 1 line closes #3241 and improves serialization of hash tries. review by community. ........ r21523 | phaller | 2010-04-13 13:37:42 +0200 (Tue, 13 Apr 2010) | 1 line Improved handling of uncaught exceptions in actors. See #711. Review by community. ........ r21524 | prokopec | 2010-04-13 13:41:54 +0200 (Tue, 13 Apr 2010) | 1 line A brace got hurt while documenting. no review. ........ r21525 | rytz | 2010-04-13 13:53:50 +0200 (Tue, 13 Apr 2010) | 1 line fix stability. jar is not stable. no review. ........ r21527 | dubochet | 2010-04-13 14:08:47 +0200 (Tue, 13 Apr 2010) | 1 line [scaladoc] Fixed CSS so that styles from wiki markup are correctly displayed in comments. No Review. ........ r21529 | prokopec | 2010-04-13 14:15:40 +0200 (Tue, 13 Apr 2010) | 1 line Immutable up to Queue docs. no review ........ r21531 | imaier | 2010-04-13 14:53:21 +0200 (Tue, 13 Apr 2010) | 1 line Fixed #3258 ........ r21535 | phaller | 2010-04-13 16:41:02 +0200 (Tue, 13 Apr 2010) | 1 line Hardened actor tests. No review. ........ r21536 | phaller | 2010-04-13 16:59:29 +0200 (Tue, 13 Apr 2010) | 1 line Removed obsolete AbstractReactor trait. No review. ........ r21537 | prokopec | 2010-04-13 17:50:39 +0200 (Tue, 13 Apr 2010) | 1 line Docs. no review ........ r21539 | prokopec | 2010-04-13 18:32:09 +0200 (Tue, 13 Apr 2010) | 1 line Documented immutable.*. no review ........ r21540 | odersky | 2010-04-13 19:36:21 +0200 (Tue, 13 Apr 2010) | 1 line more documentation ........ r21541 | odersky | 2010-04-13 19:36:54 +0200 (Tue, 13 Apr 2010) | 1 line fix for usecase in doccomments. ........ r21542 | odersky | 2010-04-13 19:37:24 +0200 (Tue, 13 Apr 2010) | 1 line attempted fix for the TypeSkolem problem under specialize. ........ r21543 | odersky | 2010-04-13 19:42:35 +0200 (Tue, 13 Apr 2010) | 1 line Fix for specialized fix. ........ r21545 | malayeri | 2010-04-13 20:13:53 +0200 (Tue, 13 Apr 2010) | 1 line [scaladoc] More cosmetic changes. Objects are a different shade of blue and classes are green. ........ r21546 | extempore | 2010-04-13 20:24:05 +0200 (Tue, 13 Apr 2010) | 1 line A redblack tree scalacheck test contributed by dcsobral. No review. ........ r21547 | extempore | 2010-04-13 20:24:27 +0200 (Tue, 13 Apr 2010) | 2 lines A safety improvement for random path generation, and a small change to Random for a more general interface. Review by community. ........ r21548 | extempore | 2010-04-13 20:24:48 +0200 (Tue, 13 Apr 2010) | 3 lines Some mopping up in equality. Found a stack overflow in the way equals was being handled, and hammered it out. New ==/## tests which covers all types and values. Review by odersky. ........ r21550 | odersky | 2010-04-13 21:46:21 +0200 (Tue, 13 Apr 2010) | 2 lines Removed trace output after having verified that skolems are correctly identified now. Now review. ........ r21552 | malayeri | 2010-04-13 22:48:50 +0200 (Tue, 13 Apr 2010) | 1 line [scaladoc] Tweak so that left pane has a little bit of left padding. Review by dubochet. ........ r21554 | dchenbecker | 2010-04-13 22:51:44 +0200 (Tue, 13 Apr 2010) | 4 lines Fix for #3284. This code should probably be refactored, but in the interest of not breaking backwards compatibility, the JSON.parse method has been marked deprecated for now. ........ r21555 | phaller | 2010-04-13 23:48:21 +0200 (Tue, 13 Apr 2010) | 1 line Reverted r21523. No review. ........ r21556 | dragos | 2010-04-14 00:50:37 +0200 (Wed, 14 Apr 2010) | 4 lines Fixed deadlocking behavior in actors. This bug deserves a few more lines. Specialization removed a 'private' modifier on Actor.resumeActor. Mixin did not mix this method in actor implementations, believing it was private. At runtime, an AbstractMethodError was thrown, but swallowed by forkjoin (probably), resulting in an apparent deadlock. It would have been much faster to find and fix if the stacktrace was printed, as it is in Java 1.5. No review. ........ r21557 | dragos | 2010-04-14 00:50:52 +0200 (Wed, 14 Apr 2010) | 1 line Don't decode symbols in .toString. ........ r21558 | dragos | 2010-04-14 00:51:04 +0200 (Wed, 14 Apr 2010) | 4 lines Made the icode reader more resilient to errors. A non-resolved symbol does not cause any crashes, but the method using an unknown symbol will not be used for inlining. Resurrected tests, removed spec-matrix for the moment. No review. ........ r21559 | dragos | 2010-04-14 00:52:56 +0200 (Wed, 14 Apr 2010) | 2 lines Revert "Fix for #3284. This code should probably be refactored,". It breaks test test/files/run/json.scala, and we need at least one good nightly before the RC. ........ r21560 | odersky | 2010-04-14 00:54:25 +0200 (Wed, 14 Apr 2010) | 2 lines Disabled failing json test. ........
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/Function0.scala5
-rw-r--r--src/library/scala/Function1.scala5
-rw-r--r--src/library/scala/Function10.scala3
-rw-r--r--src/library/scala/Function11.scala3
-rw-r--r--src/library/scala/Function12.scala3
-rw-r--r--src/library/scala/Function13.scala3
-rw-r--r--src/library/scala/Function14.scala3
-rw-r--r--src/library/scala/Function15.scala3
-rw-r--r--src/library/scala/Function16.scala3
-rw-r--r--src/library/scala/Function17.scala3
-rw-r--r--src/library/scala/Function18.scala3
-rw-r--r--src/library/scala/Function19.scala3
-rw-r--r--src/library/scala/Function2.scala7
-rw-r--r--src/library/scala/Function20.scala3
-rw-r--r--src/library/scala/Function21.scala3
-rw-r--r--src/library/scala/Function22.scala3
-rw-r--r--src/library/scala/Function3.scala3
-rw-r--r--src/library/scala/Function4.scala3
-rw-r--r--src/library/scala/Function5.scala3
-rw-r--r--src/library/scala/Function6.scala3
-rw-r--r--src/library/scala/Function7.scala3
-rw-r--r--src/library/scala/Function8.scala3
-rw-r--r--src/library/scala/Function9.scala3
-rw-r--r--src/library/scala/Product1.scala3
-rw-r--r--src/library/scala/Product10.scala3
-rw-r--r--src/library/scala/Product11.scala3
-rw-r--r--src/library/scala/Product12.scala3
-rw-r--r--src/library/scala/Product13.scala3
-rw-r--r--src/library/scala/Product14.scala3
-rw-r--r--src/library/scala/Product15.scala3
-rw-r--r--src/library/scala/Product16.scala3
-rw-r--r--src/library/scala/Product17.scala3
-rw-r--r--src/library/scala/Product18.scala3
-rw-r--r--src/library/scala/Product19.scala3
-rw-r--r--src/library/scala/Product2.scala6
-rw-r--r--src/library/scala/Product20.scala3
-rw-r--r--src/library/scala/Product21.scala3
-rw-r--r--src/library/scala/Product22.scala3
-rw-r--r--src/library/scala/Product3.scala3
-rw-r--r--src/library/scala/Product4.scala3
-rw-r--r--src/library/scala/Product5.scala3
-rw-r--r--src/library/scala/Product6.scala3
-rw-r--r--src/library/scala/Product7.scala3
-rw-r--r--src/library/scala/Product8.scala3
-rw-r--r--src/library/scala/Product9.scala3
-rw-r--r--src/library/scala/Tuple1.scala3
-rw-r--r--src/library/scala/Tuple10.scala3
-rw-r--r--src/library/scala/Tuple11.scala3
-rw-r--r--src/library/scala/Tuple12.scala3
-rw-r--r--src/library/scala/Tuple13.scala3
-rw-r--r--src/library/scala/Tuple14.scala3
-rw-r--r--src/library/scala/Tuple15.scala3
-rw-r--r--src/library/scala/Tuple16.scala3
-rw-r--r--src/library/scala/Tuple17.scala3
-rw-r--r--src/library/scala/Tuple18.scala3
-rw-r--r--src/library/scala/Tuple19.scala3
-rw-r--r--src/library/scala/Tuple2.scala8
-rw-r--r--src/library/scala/Tuple20.scala3
-rw-r--r--src/library/scala/Tuple21.scala3
-rw-r--r--src/library/scala/Tuple22.scala3
-rw-r--r--src/library/scala/Tuple3.scala6
-rw-r--r--src/library/scala/Tuple4.scala3
-rw-r--r--src/library/scala/Tuple5.scala3
-rw-r--r--src/library/scala/Tuple6.scala3
-rw-r--r--src/library/scala/Tuple7.scala3
-rw-r--r--src/library/scala/Tuple8.scala3
-rw-r--r--src/library/scala/Tuple9.scala3
-rw-r--r--src/library/scala/collection/BitSetLike.scala2
-rw-r--r--src/library/scala/collection/IndexedSeq.scala1
-rw-r--r--src/library/scala/collection/IndexedSeqLike.scala4
-rw-r--r--src/library/scala/collection/Iterable.scala1
-rw-r--r--src/library/scala/collection/IterableView.scala10
-rw-r--r--src/library/scala/collection/IterableViewLike.scala8
-rw-r--r--src/library/scala/collection/Iterator.scala6
-rw-r--r--src/library/scala/collection/LinearSeq.scala1
-rw-r--r--src/library/scala/collection/Map.scala42
-rw-r--r--src/library/scala/collection/MapLike.scala36
-rw-r--r--src/library/scala/collection/Seq.scala1
-rw-r--r--src/library/scala/collection/SeqView.scala11
-rw-r--r--src/library/scala/collection/SeqViewLike.scala17
-rw-r--r--src/library/scala/collection/Set.scala26
-rw-r--r--src/library/scala/collection/SetLike.scala51
-rw-r--r--src/library/scala/collection/Traversable.scala1
-rw-r--r--src/library/scala/collection/TraversableView.scala6
-rw-r--r--src/library/scala/collection/generic/GenericCompanion.scala9
-rw-r--r--src/library/scala/collection/generic/ImmutableMapFactory.scala8
-rw-r--r--src/library/scala/collection/generic/ImmutableSortedMapFactory.scala10
-rw-r--r--src/library/scala/collection/generic/ImmutableSortedSetFactory.scala10
-rw-r--r--src/library/scala/collection/generic/MapFactory.scala15
-rw-r--r--src/library/scala/collection/generic/MutableMapFactory.scala7
-rw-r--r--src/library/scala/collection/generic/SetFactory.scala6
-rw-r--r--src/library/scala/collection/immutable/BitSet.scala8
-rwxr-xr-xsrc/library/scala/collection/immutable/DefaultMap.scala44
-rw-r--r--src/library/scala/collection/immutable/HashMap.scala120
-rw-r--r--src/library/scala/collection/immutable/HashSet.scala109
-rw-r--r--src/library/scala/collection/immutable/IndexedSeq.scala3
-rw-r--r--src/library/scala/collection/immutable/IntMap.scala24
-rw-r--r--src/library/scala/collection/immutable/Iterable.scala12
-rw-r--r--src/library/scala/collection/immutable/LinearSeq.scala7
-rw-r--r--src/library/scala/collection/immutable/ListMap.scala19
-rw-r--r--src/library/scala/collection/immutable/ListSet.scala16
-rw-r--r--src/library/scala/collection/immutable/LongMap.scala24
-rw-r--r--src/library/scala/collection/immutable/Map.scala9
-rw-r--r--src/library/scala/collection/immutable/MapLike.scala60
-rw-r--r--src/library/scala/collection/immutable/MapProxy.scala14
-rw-r--r--src/library/scala/collection/immutable/NumericRange.scala34
-rw-r--r--src/library/scala/collection/immutable/PagedSeq.scala12
-rw-r--r--src/library/scala/collection/immutable/Queue.scala15
-rw-r--r--src/library/scala/collection/immutable/Range.scala80
-rw-r--r--src/library/scala/collection/immutable/RedBlack.scala4
-rw-r--r--src/library/scala/collection/immutable/Seq.scala8
-rw-r--r--src/library/scala/collection/immutable/Set.scala23
-rw-r--r--src/library/scala/collection/immutable/SetProxy.scala15
-rw-r--r--src/library/scala/collection/immutable/SortedMap.scala11
-rw-r--r--src/library/scala/collection/immutable/SortedSet.scala10
-rw-r--r--src/library/scala/collection/immutable/Stack.scala17
-rw-r--r--src/library/scala/collection/immutable/Stream.scala48
-rw-r--r--src/library/scala/collection/immutable/StringLike.scala53
-rw-r--r--src/library/scala/collection/immutable/StringOps.scala18
-rw-r--r--src/library/scala/collection/immutable/Traversable.scala9
-rw-r--r--src/library/scala/collection/immutable/TreeMap.scala42
-rw-r--r--src/library/scala/collection/immutable/TreeSet.scala36
-rw-r--r--src/library/scala/collection/immutable/WrappedString.scala21
-rw-r--r--src/library/scala/collection/mutable/ArrayBuffer.scala4
-rw-r--r--src/library/scala/collection/mutable/ArrayLike.scala8
-rw-r--r--src/library/scala/collection/mutable/IndexedSeq.scala5
-rw-r--r--src/library/scala/collection/mutable/IndexedSeqView.scala32
-rw-r--r--src/library/scala/collection/mutable/Iterable.scala5
-rw-r--r--src/library/scala/collection/mutable/LinearSeq.scala5
-rw-r--r--src/library/scala/collection/mutable/ListBuffer.scala2
-rw-r--r--src/library/scala/collection/mutable/ListMap.scala4
-rw-r--r--src/library/scala/collection/mutable/Map.scala18
-rw-r--r--src/library/scala/collection/mutable/MapBuilder.scala4
-rw-r--r--src/library/scala/collection/mutable/MapLike.scala39
-rw-r--r--src/library/scala/collection/mutable/MapProxy.scala15
-rw-r--r--src/library/scala/collection/mutable/MutableList.scala9
-rw-r--r--src/library/scala/collection/mutable/ObservableBuffer.scala6
-rw-r--r--src/library/scala/collection/mutable/ObservableMap.scala6
-rw-r--r--src/library/scala/collection/mutable/ObservableSet.scala6
-rw-r--r--src/library/scala/collection/mutable/OpenHashMap.scala61
-rw-r--r--src/library/scala/collection/mutable/PriorityQueue.scala40
-rw-r--r--src/library/scala/collection/mutable/PriorityQueueProxy.scala3
-rw-r--r--src/library/scala/collection/mutable/Publisher.scala8
-rw-r--r--src/library/scala/collection/mutable/Queue.scala9
-rw-r--r--src/library/scala/collection/mutable/QueueProxy.scala4
-rw-r--r--src/library/scala/collection/mutable/ResizableArray.scala2
-rw-r--r--src/library/scala/collection/mutable/RevertibleHistory.scala11
-rw-r--r--src/library/scala/collection/mutable/Seq.scala17
-rw-r--r--src/library/scala/collection/mutable/Set.scala21
-rw-r--r--src/library/scala/collection/mutable/SetBuilder.scala2
-rw-r--r--src/library/scala/collection/mutable/Stack.scala8
-rw-r--r--src/library/scala/collection/mutable/StackProxy.scala3
-rw-r--r--src/library/scala/collection/mutable/StringBuilder.scala7
-rw-r--r--src/library/scala/collection/mutable/SynchronizedBuffer.scala6
-rw-r--r--src/library/scala/collection/mutable/SynchronizedMap.scala7
-rw-r--r--src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala8
-rw-r--r--src/library/scala/collection/mutable/SynchronizedQueue.scala6
-rw-r--r--src/library/scala/collection/mutable/SynchronizedSet.scala6
-rw-r--r--src/library/scala/collection/mutable/SynchronizedStack.scala6
-rw-r--r--src/library/scala/collection/mutable/Traversable.scala8
-rw-r--r--src/library/scala/collection/mutable/Undoable.scala4
-rw-r--r--src/library/scala/collection/mutable/WeakHashMap.scala22
-rw-r--r--src/library/scala/collection/mutable/WrappedArray.scala12
-rw-r--r--src/library/scala/collection/mutable/WrappedArrayBuilder.scala5
-rw-r--r--src/library/scala/math/BigDecimal.scala6
-rw-r--r--src/library/scala/math/BigInt.scala2
-rw-r--r--src/library/scala/math/ScalaNumericConversions.scala21
-rw-r--r--src/library/scala/runtime/AbstractFunction0.scala35
-rw-r--r--src/library/scala/runtime/AbstractFunction1.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction10.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction11.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction12.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction13.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction14.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction15.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction16.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction17.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction18.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction19.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction2.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction20.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction21.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction22.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction3.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction4.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction5.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction6.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction7.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction8.scala19
-rw-r--r--src/library/scala/runtime/AbstractFunction9.scala19
-rw-r--r--src/library/scala/util/Random.scala23
191 files changed, 1609 insertions, 784 deletions
diff --git a/src/library/scala/Function0.scala b/src/library/scala/Function0.scala
index 74905d8af7..867c7bc536 100644
--- a/src/library/scala/Function0.scala
+++ b/src/library/scala/Function0.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with fancy comment)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with fancy comment)
package scala
+
/** <p>
* Function with 0 parameters.
* </p>
@@ -35,7 +36,7 @@ package scala
* println(anonfun0())
* }</pre>
*/
-trait Function0[+R] extends AnyRef { self =>
+trait Function0[@specialized +R] extends AnyRef { self =>
def apply(): R
override def toString() = "<function0>"
diff --git a/src/library/scala/Function1.scala b/src/library/scala/Function1.scala
index afc19417a2..a5780f561a 100644
--- a/src/library/scala/Function1.scala
+++ b/src/library/scala/Function1.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with fancy comment) (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with fancy comment) (with extra methods)
package scala
+
/** <p>
* Function with 1 parameter.
* </p>
@@ -35,7 +36,7 @@ package scala
* println(anonfun1(0))
* }</pre>
*/
-trait Function1[@specialized(Int, Long, Double) -T1, @specialized(Unit, Int, Long, Double) +R] extends AnyRef { self =>
+trait Function1[@specialized(Int, Long, Double) -T1, @specialized(Unit, Boolean, Int, Long, Double) +R] extends AnyRef { self =>
def apply(v1:T1): R
override def toString() = "<function1>"
diff --git a/src/library/scala/Function10.scala b/src/library/scala/Function10.scala
index 8eb6fad84e..967d58fa35 100644
--- a/src/library/scala/Function10.scala
+++ b/src/library/scala/Function10.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 10 parameters.
* </p>
diff --git a/src/library/scala/Function11.scala b/src/library/scala/Function11.scala
index 7e94c6d2ca..5d6065ea1c 100644
--- a/src/library/scala/Function11.scala
+++ b/src/library/scala/Function11.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 11 parameters.
* </p>
diff --git a/src/library/scala/Function12.scala b/src/library/scala/Function12.scala
index e14b95fc81..a262e2d8f7 100644
--- a/src/library/scala/Function12.scala
+++ b/src/library/scala/Function12.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 12 parameters.
* </p>
diff --git a/src/library/scala/Function13.scala b/src/library/scala/Function13.scala
index 2deeed8aa7..6b1d0788fb 100644
--- a/src/library/scala/Function13.scala
+++ b/src/library/scala/Function13.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 13 parameters.
* </p>
diff --git a/src/library/scala/Function14.scala b/src/library/scala/Function14.scala
index 596bbb25b8..75b0d25f5e 100644
--- a/src/library/scala/Function14.scala
+++ b/src/library/scala/Function14.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 14 parameters.
* </p>
diff --git a/src/library/scala/Function15.scala b/src/library/scala/Function15.scala
index 9942ab2015..c66015d2aa 100644
--- a/src/library/scala/Function15.scala
+++ b/src/library/scala/Function15.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 15 parameters.
* </p>
diff --git a/src/library/scala/Function16.scala b/src/library/scala/Function16.scala
index 5419b40f8d..5b6968c106 100644
--- a/src/library/scala/Function16.scala
+++ b/src/library/scala/Function16.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 16 parameters.
* </p>
diff --git a/src/library/scala/Function17.scala b/src/library/scala/Function17.scala
index 17caf47a02..74321b950b 100644
--- a/src/library/scala/Function17.scala
+++ b/src/library/scala/Function17.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 17 parameters.
* </p>
diff --git a/src/library/scala/Function18.scala b/src/library/scala/Function18.scala
index 338083ef17..4cb1540161 100644
--- a/src/library/scala/Function18.scala
+++ b/src/library/scala/Function18.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 18 parameters.
* </p>
diff --git a/src/library/scala/Function19.scala b/src/library/scala/Function19.scala
index 92eb2afa29..337b9c4837 100644
--- a/src/library/scala/Function19.scala
+++ b/src/library/scala/Function19.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 19 parameters.
* </p>
diff --git a/src/library/scala/Function2.scala b/src/library/scala/Function2.scala
index 46023a9b3b..44c4e358b8 100644
--- a/src/library/scala/Function2.scala
+++ b/src/library/scala/Function2.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with fancy comment) (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with fancy comment) (with extra methods)
package scala
+
/** <p>
* Function with 2 parameters.
* </p>
@@ -35,9 +36,7 @@ package scala
* println(anonfun2(0, 1))
* }</pre>
*/
-trait Function2[@specialized(Int, Long, Double) -T1,
- @specialized(Int, Long, Double) -T2,
- @specialized(Unit, Int, Long, Double) +R] extends AnyRef { self =>
+trait Function2[@specialized(Int, Long, Double) -T1, @specialized(Int, Long, Double) -T2, @specialized(Unit, Boolean, Int, Long, Double) +R] extends AnyRef { self =>
def apply(v1:T1,v2:T2): R
override def toString() = "<function2>"
diff --git a/src/library/scala/Function20.scala b/src/library/scala/Function20.scala
index 45636a1b7d..d381d2d82e 100644
--- a/src/library/scala/Function20.scala
+++ b/src/library/scala/Function20.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 20 parameters.
* </p>
diff --git a/src/library/scala/Function21.scala b/src/library/scala/Function21.scala
index 4463866a55..b78fd96dd3 100644
--- a/src/library/scala/Function21.scala
+++ b/src/library/scala/Function21.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 21 parameters.
* </p>
diff --git a/src/library/scala/Function22.scala b/src/library/scala/Function22.scala
index c148144ef4..2322a24e9d 100644
--- a/src/library/scala/Function22.scala
+++ b/src/library/scala/Function22.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 22 parameters.
* </p>
diff --git a/src/library/scala/Function3.scala b/src/library/scala/Function3.scala
index 52c777fdc9..82858c356f 100644
--- a/src/library/scala/Function3.scala
+++ b/src/library/scala/Function3.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 3 parameters.
* </p>
diff --git a/src/library/scala/Function4.scala b/src/library/scala/Function4.scala
index 79e92dc4e3..c97c00eb0c 100644
--- a/src/library/scala/Function4.scala
+++ b/src/library/scala/Function4.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 4 parameters.
* </p>
diff --git a/src/library/scala/Function5.scala b/src/library/scala/Function5.scala
index af849300f4..fb798741ea 100644
--- a/src/library/scala/Function5.scala
+++ b/src/library/scala/Function5.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 5 parameters.
* </p>
diff --git a/src/library/scala/Function6.scala b/src/library/scala/Function6.scala
index 487c650fc9..02a2bd4fb7 100644
--- a/src/library/scala/Function6.scala
+++ b/src/library/scala/Function6.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 6 parameters.
* </p>
diff --git a/src/library/scala/Function7.scala b/src/library/scala/Function7.scala
index 76de5c185c..7973bcb87c 100644
--- a/src/library/scala/Function7.scala
+++ b/src/library/scala/Function7.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 7 parameters.
* </p>
diff --git a/src/library/scala/Function8.scala b/src/library/scala/Function8.scala
index c8ca675365..32929db9d6 100644
--- a/src/library/scala/Function8.scala
+++ b/src/library/scala/Function8.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 8 parameters.
* </p>
diff --git a/src/library/scala/Function9.scala b/src/library/scala/Function9.scala
index 338acbcae2..490e44c39b 100644
--- a/src/library/scala/Function9.scala
+++ b/src/library/scala/Function9.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
+
/** <p>
* Function with 9 parameters.
* </p>
diff --git a/src/library/scala/Product1.scala b/src/library/scala/Product1.scala
index 0e93065e5a..af9a7eca20 100644
--- a/src/library/scala/Product1.scala
+++ b/src/library/scala/Product1.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product1 {
def unapply[T1](x: Product1[T1]): Option[Product1[T1]] =
Some(x)
diff --git a/src/library/scala/Product10.scala b/src/library/scala/Product10.scala
index a63a1007fb..d6745d62ad 100644
--- a/src/library/scala/Product10.scala
+++ b/src/library/scala/Product10.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product10 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](x: Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Option[Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] =
Some(x)
diff --git a/src/library/scala/Product11.scala b/src/library/scala/Product11.scala
index a33df77b64..83cf5f0e55 100644
--- a/src/library/scala/Product11.scala
+++ b/src/library/scala/Product11.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product11 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](x: Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]): Option[Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]] =
Some(x)
diff --git a/src/library/scala/Product12.scala b/src/library/scala/Product12.scala
index 24b16876a3..845bba720d 100644
--- a/src/library/scala/Product12.scala
+++ b/src/library/scala/Product12.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product12 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](x: Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]): Option[Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]] =
Some(x)
diff --git a/src/library/scala/Product13.scala b/src/library/scala/Product13.scala
index 1013561af6..374b457789 100644
--- a/src/library/scala/Product13.scala
+++ b/src/library/scala/Product13.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product13 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](x: Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]): Option[Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]] =
Some(x)
diff --git a/src/library/scala/Product14.scala b/src/library/scala/Product14.scala
index ddeccf7c98..93bb53339d 100644
--- a/src/library/scala/Product14.scala
+++ b/src/library/scala/Product14.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product14 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](x: Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]): Option[Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]] =
Some(x)
diff --git a/src/library/scala/Product15.scala b/src/library/scala/Product15.scala
index 0f25bda254..71cefbafc5 100644
--- a/src/library/scala/Product15.scala
+++ b/src/library/scala/Product15.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product15 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](x: Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]): Option[Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]] =
Some(x)
diff --git a/src/library/scala/Product16.scala b/src/library/scala/Product16.scala
index 1fcf2d192b..aa87c9f40b 100644
--- a/src/library/scala/Product16.scala
+++ b/src/library/scala/Product16.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product16 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](x: Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]): Option[Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]] =
Some(x)
diff --git a/src/library/scala/Product17.scala b/src/library/scala/Product17.scala
index 8c5efa9cc5..7caa99a578 100644
--- a/src/library/scala/Product17.scala
+++ b/src/library/scala/Product17.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product17 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](x: Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]): Option[Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]] =
Some(x)
diff --git a/src/library/scala/Product18.scala b/src/library/scala/Product18.scala
index 6ab150b1d1..ca0b168c83 100644
--- a/src/library/scala/Product18.scala
+++ b/src/library/scala/Product18.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product18 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](x: Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]): Option[Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]] =
Some(x)
diff --git a/src/library/scala/Product19.scala b/src/library/scala/Product19.scala
index 86fc2e43fb..88256c44fd 100644
--- a/src/library/scala/Product19.scala
+++ b/src/library/scala/Product19.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product19 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](x: Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]): Option[Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]] =
Some(x)
diff --git a/src/library/scala/Product2.scala b/src/library/scala/Product2.scala
index 436de41a01..6ce804fc89 100644
--- a/src/library/scala/Product2.scala
+++ b/src/library/scala/Product2.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product2 {
def unapply[T1, T2](x: Product2[T1, T2]): Option[Product2[T1, T2]] =
Some(x)
@@ -22,8 +23,7 @@ object Product2 {
*
* @since 2.3
*/
-trait Product2[@specialized(Int, Long, Double) +T1,
- @specialized(Int, Long, Double) +T2] extends Product {
+trait Product2[@specialized(Int, Long, Double) +T1, @specialized(Int, Long, Double) +T2] extends Product {
/**
* The arity of this product.
* @return 2
diff --git a/src/library/scala/Product20.scala b/src/library/scala/Product20.scala
index cc398f7bb4..b9aab6988d 100644
--- a/src/library/scala/Product20.scala
+++ b/src/library/scala/Product20.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product20 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](x: Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]): Option[Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]] =
Some(x)
diff --git a/src/library/scala/Product21.scala b/src/library/scala/Product21.scala
index b215c466ae..9ab61d35ca 100644
--- a/src/library/scala/Product21.scala
+++ b/src/library/scala/Product21.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product21 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](x: Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]): Option[Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]] =
Some(x)
diff --git a/src/library/scala/Product22.scala b/src/library/scala/Product22.scala
index f7e10a2652..86fbaeca7f 100644
--- a/src/library/scala/Product22.scala
+++ b/src/library/scala/Product22.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
object Product22 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](x: Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]): Option[Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]] =
Some(x)
diff --git a/src/library/scala/Product3.scala b/src/library/scala/Product3.scala
index 0fbd855b86..09044716a4 100644
--- a/src/library/scala/Product3.scala
+++ b/src/library/scala/Product3.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product3 {
def unapply[T1, T2, T3](x: Product3[T1, T2, T3]): Option[Product3[T1, T2, T3]] =
Some(x)
diff --git a/src/library/scala/Product4.scala b/src/library/scala/Product4.scala
index efeec3c601..c6a5c74bb5 100644
--- a/src/library/scala/Product4.scala
+++ b/src/library/scala/Product4.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product4 {
def unapply[T1, T2, T3, T4](x: Product4[T1, T2, T3, T4]): Option[Product4[T1, T2, T3, T4]] =
Some(x)
diff --git a/src/library/scala/Product5.scala b/src/library/scala/Product5.scala
index 64e59b6b1d..147fb2d305 100644
--- a/src/library/scala/Product5.scala
+++ b/src/library/scala/Product5.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product5 {
def unapply[T1, T2, T3, T4, T5](x: Product5[T1, T2, T3, T4, T5]): Option[Product5[T1, T2, T3, T4, T5]] =
Some(x)
diff --git a/src/library/scala/Product6.scala b/src/library/scala/Product6.scala
index a2a819ef51..f967992e5e 100644
--- a/src/library/scala/Product6.scala
+++ b/src/library/scala/Product6.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product6 {
def unapply[T1, T2, T3, T4, T5, T6](x: Product6[T1, T2, T3, T4, T5, T6]): Option[Product6[T1, T2, T3, T4, T5, T6]] =
Some(x)
diff --git a/src/library/scala/Product7.scala b/src/library/scala/Product7.scala
index b9fa32bf00..c7a9baef98 100644
--- a/src/library/scala/Product7.scala
+++ b/src/library/scala/Product7.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product7 {
def unapply[T1, T2, T3, T4, T5, T6, T7](x: Product7[T1, T2, T3, T4, T5, T6, T7]): Option[Product7[T1, T2, T3, T4, T5, T6, T7]] =
Some(x)
diff --git a/src/library/scala/Product8.scala b/src/library/scala/Product8.scala
index 0f5aa6100a..8663b0868b 100644
--- a/src/library/scala/Product8.scala
+++ b/src/library/scala/Product8.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product8 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8](x: Product8[T1, T2, T3, T4, T5, T6, T7, T8]): Option[Product8[T1, T2, T3, T4, T5, T6, T7, T8]] =
Some(x)
diff --git a/src/library/scala/Product9.scala b/src/library/scala/Product9.scala
index 6adce6023f..8d2de090ab 100644
--- a/src/library/scala/Product9.scala
+++ b/src/library/scala/Product9.scala
@@ -8,11 +8,12 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:17 CEST 2010
package scala
+
object Product9 {
def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9](x: Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9]): Option[Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] =
Some(x)
diff --git a/src/library/scala/Tuple1.scala b/src/library/scala/Tuple1.scala
index 5d25cc5abb..d8f8126f42 100644
--- a/src/library/scala/Tuple1.scala
+++ b/src/library/scala/Tuple1.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple1 is the canonical representation of a @see Product1
*
*/
diff --git a/src/library/scala/Tuple10.scala b/src/library/scala/Tuple10.scala
index c9e38eec29..11889b3485 100644
--- a/src/library/scala/Tuple10.scala
+++ b/src/library/scala/Tuple10.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple10 is the canonical representation of a @see Product10
*
*/
diff --git a/src/library/scala/Tuple11.scala b/src/library/scala/Tuple11.scala
index 546800f3af..b44141c1ee 100644
--- a/src/library/scala/Tuple11.scala
+++ b/src/library/scala/Tuple11.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple11 is the canonical representation of a @see Product11
*
*/
diff --git a/src/library/scala/Tuple12.scala b/src/library/scala/Tuple12.scala
index 0f2d4e9af0..37a172e74f 100644
--- a/src/library/scala/Tuple12.scala
+++ b/src/library/scala/Tuple12.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple12 is the canonical representation of a @see Product12
*
*/
diff --git a/src/library/scala/Tuple13.scala b/src/library/scala/Tuple13.scala
index d9d540d334..68d4a5aa8f 100644
--- a/src/library/scala/Tuple13.scala
+++ b/src/library/scala/Tuple13.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple13 is the canonical representation of a @see Product13
*
*/
diff --git a/src/library/scala/Tuple14.scala b/src/library/scala/Tuple14.scala
index 18ea35a9f4..424beb040e 100644
--- a/src/library/scala/Tuple14.scala
+++ b/src/library/scala/Tuple14.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple14 is the canonical representation of a @see Product14
*
*/
diff --git a/src/library/scala/Tuple15.scala b/src/library/scala/Tuple15.scala
index cb1742786c..944ff9d1b5 100644
--- a/src/library/scala/Tuple15.scala
+++ b/src/library/scala/Tuple15.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple15 is the canonical representation of a @see Product15
*
*/
diff --git a/src/library/scala/Tuple16.scala b/src/library/scala/Tuple16.scala
index 0af7feeb45..276220fbf5 100644
--- a/src/library/scala/Tuple16.scala
+++ b/src/library/scala/Tuple16.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple16 is the canonical representation of a @see Product16
*
*/
diff --git a/src/library/scala/Tuple17.scala b/src/library/scala/Tuple17.scala
index ef02d51fc6..d965ca8504 100644
--- a/src/library/scala/Tuple17.scala
+++ b/src/library/scala/Tuple17.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple17 is the canonical representation of a @see Product17
*
*/
diff --git a/src/library/scala/Tuple18.scala b/src/library/scala/Tuple18.scala
index 6f2489e41d..77cc635034 100644
--- a/src/library/scala/Tuple18.scala
+++ b/src/library/scala/Tuple18.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple18 is the canonical representation of a @see Product18
*
*/
diff --git a/src/library/scala/Tuple19.scala b/src/library/scala/Tuple19.scala
index ad69657e2c..540aaa3893 100644
--- a/src/library/scala/Tuple19.scala
+++ b/src/library/scala/Tuple19.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple19 is the canonical representation of a @see Product19
*
*/
diff --git a/src/library/scala/Tuple2.scala b/src/library/scala/Tuple2.scala
index 7fea22410d..ee2fe84482 100644
--- a/src/library/scala/Tuple2.scala
+++ b/src/library/scala/Tuple2.scala
@@ -8,7 +8,7 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010 (with extra methods)
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
@@ -16,11 +16,12 @@ import scala.collection.{TraversableLike, IterableLike}
import scala.collection.generic.CanBuildFrom
+
+
/** Tuple2 is the canonical representation of a @see Product2
*
*/
-case class Tuple2[@specialized(Int, Long, Double) +T1,
- @specialized(Int, Long, Double) +T2](_1:T1,_2:T2)
+case class Tuple2[@specialized(Int, Long, Double) +T1, @specialized(Int, Long, Double) +T2](_1:T1,_2:T2)
extends Product2[T1, T2]
{
override def toString() = "(" + _1 + "," + _2 + ")"
@@ -122,4 +123,5 @@ case class Tuple2[@specialized(Int, Long, Double) +T1,
f(el1, elems2.next)
}
}
+
}
diff --git a/src/library/scala/Tuple20.scala b/src/library/scala/Tuple20.scala
index 5f4d4b26e8..58e7018518 100644
--- a/src/library/scala/Tuple20.scala
+++ b/src/library/scala/Tuple20.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple20 is the canonical representation of a @see Product20
*
*/
diff --git a/src/library/scala/Tuple21.scala b/src/library/scala/Tuple21.scala
index 780cbd15ad..e302bfbd80 100644
--- a/src/library/scala/Tuple21.scala
+++ b/src/library/scala/Tuple21.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple21 is the canonical representation of a @see Product21
*
*/
diff --git a/src/library/scala/Tuple22.scala b/src/library/scala/Tuple22.scala
index f45cab85fa..2fd4fc7166 100644
--- a/src/library/scala/Tuple22.scala
+++ b/src/library/scala/Tuple22.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple22 is the canonical representation of a @see Product22
*
*/
diff --git a/src/library/scala/Tuple3.scala b/src/library/scala/Tuple3.scala
index a1fca95e4d..e6464cf52c 100644
--- a/src/library/scala/Tuple3.scala
+++ b/src/library/scala/Tuple3.scala
@@ -8,13 +8,16 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010 (with extra methods)
package scala
import scala.collection.{TraversableLike, IterableLike}
import scala.collection.generic.CanBuildFrom
+
+
+
/** Tuple3 is the canonical representation of a @see Product3
*
*/
@@ -136,4 +139,5 @@ case class Tuple3[+T1, +T2, +T3](_1:T1,_2:T2,_3:T3)
f(el1, elems2.next, elems3.next)
}
}
+
}
diff --git a/src/library/scala/Tuple4.scala b/src/library/scala/Tuple4.scala
index fbf5d341a4..55cfae2c03 100644
--- a/src/library/scala/Tuple4.scala
+++ b/src/library/scala/Tuple4.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple4 is the canonical representation of a @see Product4
*
*/
diff --git a/src/library/scala/Tuple5.scala b/src/library/scala/Tuple5.scala
index 033f26263d..ec52ee039e 100644
--- a/src/library/scala/Tuple5.scala
+++ b/src/library/scala/Tuple5.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple5 is the canonical representation of a @see Product5
*
*/
diff --git a/src/library/scala/Tuple6.scala b/src/library/scala/Tuple6.scala
index d360adad2a..5f41c1de2a 100644
--- a/src/library/scala/Tuple6.scala
+++ b/src/library/scala/Tuple6.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple6 is the canonical representation of a @see Product6
*
*/
diff --git a/src/library/scala/Tuple7.scala b/src/library/scala/Tuple7.scala
index 5a080c2e0e..0e2315c573 100644
--- a/src/library/scala/Tuple7.scala
+++ b/src/library/scala/Tuple7.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple7 is the canonical representation of a @see Product7
*
*/
diff --git a/src/library/scala/Tuple8.scala b/src/library/scala/Tuple8.scala
index 551c5e5d34..58b2e13af8 100644
--- a/src/library/scala/Tuple8.scala
+++ b/src/library/scala/Tuple8.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple8 is the canonical representation of a @see Product8
*
*/
diff --git a/src/library/scala/Tuple9.scala b/src/library/scala/Tuple9.scala
index 8098daaf40..360228cb68 100644
--- a/src/library/scala/Tuple9.scala
+++ b/src/library/scala/Tuple9.scala
@@ -8,12 +8,13 @@
// $Id$
-// generated by genprod on Sun Jan 17 19:38:09 PST 2010
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
package scala
+
/** Tuple9 is the canonical representation of a @see Product9
*
*/
diff --git a/src/library/scala/collection/BitSetLike.scala b/src/library/scala/collection/BitSetLike.scala
index 7c5e2fb269..3028cca6eb 100644
--- a/src/library/scala/collection/BitSetLike.scala
+++ b/src/library/scala/collection/BitSetLike.scala
@@ -41,7 +41,7 @@ trait BitSetLike[+This <: BitSetLike[This] with Set[Int]] extends SetLike[Int, T
protected def nwords: Int
/** The words at index `idx', or 0L if outside the range of the set
- * @note Requires `idx >= 0`
+ * '''Note:''' requires `idx >= 0`
*/
protected def word(idx: Int): Long
diff --git a/src/library/scala/collection/IndexedSeq.scala b/src/library/scala/collection/IndexedSeq.scala
index 72878a8ad6..78165cb242 100644
--- a/src/library/scala/collection/IndexedSeq.scala
+++ b/src/library/scala/collection/IndexedSeq.scala
@@ -24,6 +24,7 @@ trait IndexedSeq[+A] extends Seq[A]
}
/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
* @define coll indexed sequence
* @define Coll IndexedSeq
*/
diff --git a/src/library/scala/collection/IndexedSeqLike.scala b/src/library/scala/collection/IndexedSeqLike.scala
index 453b4384f7..7bfad167c6 100644
--- a/src/library/scala/collection/IndexedSeqLike.scala
+++ b/src/library/scala/collection/IndexedSeqLike.scala
@@ -66,13 +66,13 @@ trait IndexedSeqLike[+A, +Repr] extends SeqLike[A, Repr] { self =>
if (i < end) self(i) else Iterator.empty.next
/** $super
- * @note `drop` is overridden to enable fast searching in the middle of indexed sequences.
+ * '''Note:''' `drop` is overridden to enable fast searching in the middle of indexed sequences.
*/
override def drop(n: Int): Iterator[A] =
if (n > 0) new Elements(start + n, end) else this
/** $super
- * @note `take` is overridden to be symmetric to `drop`.
+ * '''Note:''' `take` is overridden to be symmetric to `drop`.
*/
override def take(n: Int): Iterator[A] =
if (n <= 0) Iterator.empty.buffered
diff --git a/src/library/scala/collection/Iterable.scala b/src/library/scala/collection/Iterable.scala
index 65d4dfcbe2..2baacec9f9 100644
--- a/src/library/scala/collection/Iterable.scala
+++ b/src/library/scala/collection/Iterable.scala
@@ -36,6 +36,7 @@ trait Iterable[+A] extends Traversable[A]
}
/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
* @define coll iterable collection
* @define Coll Iterable
*/
diff --git a/src/library/scala/collection/IterableView.scala b/src/library/scala/collection/IterableView.scala
index 436c000909..a6078bcdc8 100644
--- a/src/library/scala/collection/IterableView.scala
+++ b/src/library/scala/collection/IterableView.scala
@@ -14,14 +14,14 @@ package scala.collection
import generic._
import TraversableView.NoBuilder
-/** A base class for views of Iterables.
- *
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
+/** A base trait for non-strict views of `Iterable`s.
+ * $iterableViewInfo
*/
trait IterableView[+A, +Coll] extends IterableViewLike[A, Coll, IterableView[A, Coll]]
+/** An object containing the necessary implicit definitions to make
+ * `IterableView`s work. Its definitions are generally not accessed directly by clients.
+ */
object IterableView {
type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, IterableView[A, Iterable[_]]] =
diff --git a/src/library/scala/collection/IterableViewLike.scala b/src/library/scala/collection/IterableViewLike.scala
index b8f0b65faf..49fcee842c 100644
--- a/src/library/scala/collection/IterableViewLike.scala
+++ b/src/library/scala/collection/IterableViewLike.scala
@@ -16,11 +16,11 @@ import collection.immutable.Stream
import TraversableView.NoBuilder
/** A template trait for non-strict views of iterable collections.
- * $iterableviewInfo
+ * $iterableViewInfo
*
- * @define iterableviewInfo
- * $viewinfo
- * All views for iterable collections are defined by creating a new `iterator` method.
+ * @define iterableViewInfo
+ * $viewInfo
+ * All views for iterable collections are defined by re-interpreting the `iterator` method.
*
* @author Martin Odersky
* @version 2.8
diff --git a/src/library/scala/collection/Iterator.scala b/src/library/scala/collection/Iterator.scala
index 2ee4e8056e..24c447b24b 100644
--- a/src/library/scala/collection/Iterator.scala
+++ b/src/library/scala/collection/Iterator.scala
@@ -32,10 +32,10 @@ object Iterator {
}
/** Creates an iterator which produces a single element.
+ * '''Note:''' Equivalent, but more efficient than Iterator(elem)
* @param elem the element
* @return An iterator which produces `elem` on the first call to `next`,
* and which has no further elements.
- * @note Equivalent, but more efficient than Iterator(elem)
*/
def single[A](elem: A) = new Iterator[A] {
private var hasnext = true
@@ -429,7 +429,7 @@ trait Iterator[+A] extends TraversableOnce[A] {
* satisfy the predicate `p`. The order of the elements
* is preserved.
*
- * @note `withFilter` is the same as `filter` on iterators. It exists so that
+ * '''Note:''' `withFilter` is the same as `filter` on iterators. It exists so that
* for-expressions with filters work over iterators.
*
* @param p the predicate used to test values.
@@ -1033,10 +1033,10 @@ trait Iterator[+A] extends TraversableOnce[A] {
* this sequence starting at position `start`. Like `copyToArray`,
* but designed to accomodate IO stream operations.
*
+ * '''Note:''' the array must be large enough to hold `sz` elements.
* @param xs the array to fill.
* @param start the starting index.
* @param sz the maximum number of elements to be read.
- * @note the array must be large enough to hold `sz` elements.
*/
@deprecated("use copyToArray instead")
def readInto[B >: A](xs: Array[B], start: Int, sz: Int) {
diff --git a/src/library/scala/collection/LinearSeq.scala b/src/library/scala/collection/LinearSeq.scala
index ef7d4c9390..ba0eb6a22d 100644
--- a/src/library/scala/collection/LinearSeq.scala
+++ b/src/library/scala/collection/LinearSeq.scala
@@ -24,6 +24,7 @@ trait LinearSeq[+A] extends Seq[A]
}
/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
* @define coll linear sequence
* @define Coll LinearSeq
*/
diff --git a/src/library/scala/collection/Map.scala b/src/library/scala/collection/Map.scala
index 9d44a950de..0722d55f03 100644
--- a/src/library/scala/collection/Map.scala
+++ b/src/library/scala/collection/Map.scala
@@ -13,43 +13,33 @@ package scala.collection
import generic._
-/** <p>
- * A map from keys of type <code>A</code> to values of type <code>B</code>.
- * To implement a concrete map, you need to provide implementations of the
- * following methods (where <code>This</code> is the type of the map in question):
- * </p><pre>
- * <b>def</b> get(key: A): Option[B]
- * <b>def</b> iterator: Iterator[(A, B)]
- * <b>def</b> + [B1 >: B](kv: (A, B1)): This
- * <b>def</b> -(key: A): This</pre>
- * <p>
- * If you wish that methods like `take`, `drop`, `filter` return the same kind
- * of map, you should also override:
- * </p><pre>
- * <b>def</b> empty: This</pre>
- * <p>
- * It might also be a good idea to override methods <code>foreach</code>
- * and <code>size</code> for efficiency.
- * </p>
+/**
+ * A map from keys of type `A` to values of type `B`.
*
- * @note If you do not have specific implementations for `add` and `-` in mind,
- * you might consider inheriting from <code>DefaultMap</code> instead.
+ * $mapnote
*
- * @note If your additions and mutations return the same kind of map as the map
- * you are defining, you should inherit from <code>MapLike</code> as well.
+ * '''Note:''' If you do not have specific implementations for `add` and `-` in mind,
+ * you might consider inheriting from `DefaultMap` instead.
*
- * @since 1
+ * '''Note:''' If your additions and mutations return the same kind of map as the map
+ * you are defining, you should inherit from `MapLike` as well.
+ *
+ * @tparam A the type of the keys in this map.
+ * @tparam B the type of the values associated with keys.
+ *
+ * @since 1
*/
trait Map[A, +B] extends Iterable[(A, B)] with MapLike[A, B, Map[A, B]] {
def empty: Map[A, B] = Map.empty
}
-/* Factory object for `Map` class
- *
- * @since 2.5
+/** $factoryInfo
+ * @define Coll Map
+ * @define coll map
*/
object Map extends MapFactory[Map] {
def empty[A, B]: immutable.Map[A, B] = immutable.Map.empty
+ /** $mapCanBuildFromInfo */
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), Map[A, B]] = new MapCanBuildFrom[A, B]
}
diff --git a/src/library/scala/collection/MapLike.scala b/src/library/scala/collection/MapLike.scala
index 057224a705..9bca2f09a0 100644
--- a/src/library/scala/collection/MapLike.scala
+++ b/src/library/scala/collection/MapLike.scala
@@ -15,20 +15,14 @@ import mutable.{Builder, StringBuilder, MapBuilder}
import annotation.migration
import PartialFunction._
-/** A template trait for maps of type `Map[A, B]` which associate keys of type `A`
- * with values of type `B`.
+/** A template trait for maps, which associate keys with values.
*
- * @tparam A the type of the keys.
- * @tparam B the type of associated values.
- * @tparam This the type of the map itself.
- *
- * $mapnote
+ * $mapNote
+ * $mapTags
+ * @since 2.8
*
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
- * $mapnote
- * @define $mapnote @note
+ * @define mapNote
+ * '''Implementation note:'''
* This trait provides most of the operations of a `Map` independently of its representation.
* It is typically inherited by concrete implementations of maps.
*
@@ -47,6 +41,15 @@ import PartialFunction._
* }}}
* It is also good idea to override methods `foreach` and
* `size` for efficiency.
+ *
+ * @define mapTags
+ * @tparam A the type of the keys.
+ * @tparam B the type of associated values.
+ * @tparam This the type of the map itself.
+ *
+ * @author Martin Odersky
+ * @version 2.8
+ *
* @define coll map
* @define Coll Map
* @define willNotTerminateInf
@@ -287,14 +290,15 @@ self =>
((repr: Map[A, B1]) /: xs) (_ + _)
/** Returns a new map with all key/value pairs for which the predicate
- * <code>p</code> returns <code>true</code>.
+ * `p` returns `true`.
*
- * @param p A predicate over key-value pairs
- * @note This method works by successively removing elements fro which the
+ * '''Note:''' This method works by successively removing elements fro which the
* predicate is false from this set.
* If removal is slow, or you expect that most elements of the set
- * will be removed, you might consider using <code>filter</code>
+ * will be removed, you might consider using `filter`
* with a negated predicate instead.
+ * @param p A predicate over key-value pairs
+ * @return A new map containing elements not satisfying the predicate.
*/
override def filterNot(p: ((A, B)) => Boolean): This = {
var res: This = repr
diff --git a/src/library/scala/collection/Seq.scala b/src/library/scala/collection/Seq.scala
index baf2c0031e..f6b89b67b8 100644
--- a/src/library/scala/collection/Seq.scala
+++ b/src/library/scala/collection/Seq.scala
@@ -25,6 +25,7 @@ trait Seq[+A] extends PartialFunction[Int, A]
}
/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
* @define coll sequence
* @define Coll Seq
*/
diff --git a/src/library/scala/collection/SeqView.scala b/src/library/scala/collection/SeqView.scala
index 9a0025bd81..68819e899d 100644
--- a/src/library/scala/collection/SeqView.scala
+++ b/src/library/scala/collection/SeqView.scala
@@ -14,16 +14,13 @@ package scala.collection
import generic._
import TraversableView.NoBuilder
-/** A non-strict projection of an iterable.
- * @author Sean McDirmid
- * @author Martin Odersky
- * @version 2.8
+/** A base trait for non-strict views of sequences.
+ * $seqViewInfo
*/
trait SeqView[+A, +Coll] extends SeqViewLike[A, Coll, SeqView[A, Coll]]
-/** $factoryInfo
- * @define coll sequence view
- * @define Coll SeqView
+/** An object containing the necessary implicit definitions to make
+ * `SeqView`s work. Its definitions are generally not accessed directly by clients.
*/
object SeqView {
type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
diff --git a/src/library/scala/collection/SeqViewLike.scala b/src/library/scala/collection/SeqViewLike.scala
index 7014833a46..6f1f29f536 100644
--- a/src/library/scala/collection/SeqViewLike.scala
+++ b/src/library/scala/collection/SeqViewLike.scala
@@ -15,10 +15,19 @@ import generic._
import Seq.fill
import TraversableView.NoBuilder
-/** A template trait for a non-strict view of a sequence.
- * @author Sean McDirmid
- * @author Martin Odersky
- * @version 2.8
+/** A template trait for non-strict views of sequences.
+ * $seqViewInfo
+ *
+ * @define seqViewInfo
+ * $viewInfo
+ * All views for sequences are defined by re-interpreting the `length` and `apply` methods.
+ *
+ * @author Martin Odersky
+ * @version 2.8
+ * @since 2.8
+ * @tparam A the element type of the view
+ * @tparam Coll the type of the underlying collection containing the elements.
+ * @tparam This the type of the view itself
*/
trait SeqViewLike[+A,
+Coll,
diff --git a/src/library/scala/collection/Set.scala b/src/library/scala/collection/Set.scala
index 3a6313a187..034d9f1705 100644
--- a/src/library/scala/collection/Set.scala
+++ b/src/library/scala/collection/Set.scala
@@ -12,14 +12,16 @@ package scala.collection
import generic._
-/** <p>
- * A set is a collection that includes at most one of any object.
- * </p>
+/** A base trait for all sets, mutable as well as immutable.
*
- * @author Matthias Zenger
- * @author Martin Odersky
- * @version 2.8
- * @since 1
+ * $setNote
+ * $setNote2
+ * $setTags
+ * @since 1.0
+ * @author Matthias Zenger
+ * @define setNote2
+ * '''Implementation note:''' If your additions and mutations return the same kind of set as the set
+ * you are defining, you should inherit from `SetLike` as well.
*/
trait Set[A] extends (A => Boolean)
with Iterable[A]
@@ -28,11 +30,11 @@ trait Set[A] extends (A => Boolean)
override def companion: GenericCompanion[Set] = Set
}
-/** Factory object for <code>Set</code> class.
- *
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
+/** $factoryInfo
+ * The current default implementation of a $Coll is one of `EmptySet`, `Set1`, `Set2`, `Set3`, `Set4` in
+ * class `immutable.Set` for sets of sizes up to 4, and a `immutable.HashSet` for sets of larger sizes.
+ * @define coll set
+ * @define Coll Set
*/
object Set extends SetFactory[Set] {
override def empty[A]: Set[A] = immutable.Set.empty[A]
diff --git a/src/library/scala/collection/SetLike.scala b/src/library/scala/collection/SetLike.scala
index 44dac8e8fe..5a16b975df 100644
--- a/src/library/scala/collection/SetLike.scala
+++ b/src/library/scala/collection/SetLike.scala
@@ -14,20 +14,21 @@ import generic._
import mutable.{Builder, AddingBuilder}
import PartialFunction._
-/** A template trait for sets of type `Set[A]`.
+/** A template trait for sets.
*
- * This trait provides most of the operations of a `Set` independently of its representation.
- * It is typically inherited by concrete implementations of sets.
+ * $setNote
+ * $setTags
+ * @since 2.8
*
- * $setnote
+ * @define setNote
*
- * @tparam A the type of the elements of the set
- * @tparam This the type of the set itself.
+ * A set is a collection that contains no duplicate elements.
*
- * @author Martin Odersky
- * @version 2.8
- * @define setnote
- * To implement a concrete set, you need to provide implementations of the
+ * '''Implementation note:'''
+ * This trait provides most of the operations of a `Set` independently of its representation.
+ * It is typically inherited by concrete implementations of sets.
+ *
+ * To implement a concrete set, you need to provide implementations of the
* following methods:
* {{{
* def contains(key: A): Boolean
@@ -42,10 +43,18 @@ import PartialFunction._
* }}}
* It is also good idea to override methods `foreach` and
* `size` for efficiency.
- * @define coll set
- * @define Coll Set
- * @define willNotTerminateInf
- * @define mayNotTerminateInf
+ *
+ * @define setTags
+ * @tparam A the type of the elements of the set
+ * @tparam This the type of the set itself.
+ *
+ * @author Martin Odersky
+ * @version 2.8
+ *
+ * @define coll set
+ * @define Coll Set
+ * @define willNotTerminateInf
+ * @define mayNotTerminateInf
*/
trait SetLike[A, +This <: SetLike[A, This] with Set[A]]
extends IterableLike[A, This]
@@ -113,10 +122,10 @@ self =>
/** Computes the intersection between this set and another set.
*
+ * '''Note:''' Same as `intersect`.
* @param that the set to intersect with.
* @return a new set consisting of all elements that are both in this
* set and in the given set `that`.
- * @note Same as `intersect`.
*/
def &(that: Set[A]): This = intersect(that)
@@ -138,10 +147,10 @@ self =>
/** Computes the union between this set and another set.
*
+ * '''Note:''' Same as `union`.
* @param that the set to form the union with.
* @return a new set consisting of all elements that are in this
* set or in the given set `that`.
- * @note Same as `union`.
*/
def | (that: Set[A]): This = union(that)
@@ -155,10 +164,10 @@ self =>
/** The difference of this set and another set.
*
+ * '''Note:''' Same as `diff`.
* @param that the set of elements to exclude.
* @return a set containing those elements of this
* set that are not also contained in the given set `that`.
- * @note Same as `diff`.
*/
def &~(that: Set[A]): This = diff(that)
@@ -181,13 +190,13 @@ self =>
/** Compares this set with another object for equality.
*
- * @param that the other object
- * @return `true` if `that` is a set which contains the same elements
- * as this set.
- * @note This operation contains an unchecked cast: if `that`
+ * '''Note:''' This operation contains an unchecked cast: if `that`
* is a set, it will assume with an unchecked cast
* that it has the same element type as this set.
* Any subsequent ClassCastException is treated as a `false` result.
+ * @param that the other object
+ * @return `true` if `that` is a set which contains the same elements
+ * as this set.
*/
override def equals(that: Any): Boolean = that match {
case that: Set[_] =>
diff --git a/src/library/scala/collection/Traversable.scala b/src/library/scala/collection/Traversable.scala
index 4a1cd01af1..b3383ba802 100644
--- a/src/library/scala/collection/Traversable.scala
+++ b/src/library/scala/collection/Traversable.scala
@@ -83,6 +83,7 @@ trait Traversable[+A] extends TraversableLike[A, Traversable[A]]
}
/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
*/
object Traversable extends TraversableFactory[Traversable] { self =>
diff --git a/src/library/scala/collection/TraversableView.scala b/src/library/scala/collection/TraversableView.scala
index ccc33a495d..6d7fa70968 100644
--- a/src/library/scala/collection/TraversableView.scala
+++ b/src/library/scala/collection/TraversableView.scala
@@ -15,10 +15,14 @@ import generic._
import mutable.Builder
import TraversableView.NoBuilder
-/** $traversableviewinfo
+/** A base trait for non-strict views of traversable collections.
+ * $traversableViewInfo
*/
trait TraversableView[+A, +Coll] extends TraversableViewLike[A, Coll, TraversableView[A, Coll]]
+/** An object containing the necessary implicit definitions to make
+ * `TraversableView`s work. Its definitions are generally not accessed directly by clients.
+ */
object TraversableView {
class NoBuilder[A] extends Builder[A, Nothing] {
def +=(elem: A): this.type = this
diff --git a/src/library/scala/collection/generic/GenericCompanion.scala b/src/library/scala/collection/generic/GenericCompanion.scala
index 4332a1c936..2a87f8d913 100644
--- a/src/library/scala/collection/generic/GenericCompanion.scala
+++ b/src/library/scala/collection/generic/GenericCompanion.scala
@@ -28,13 +28,18 @@ abstract class GenericCompanion[+CC[X] <: Traversable[X]] {
/** The underlying collection type with unknown element type */
type Coll = CC[_]
- /** The default builder for $Coll objects. */
+ /** The default builder for `$Coll` objects.
+ * @tparam A the type of the ${coll}'s elements
+ */
def newBuilder[A]: Builder[A, CC[A]]
- /** The empty collection of type $Coll[A] */
+ /** An empty collection of type `$Coll[A]`
+ * @tparam A the type of the ${coll}'s elements
+ */
def empty[A]: CC[A] = newBuilder[A].result
/** Creates a $coll with the specified elements.
+ * @tparam A the type of the ${coll}'s elements
* @param elems the elements of the created $coll
* @return a new $coll with elements `elems`
*/
diff --git a/src/library/scala/collection/generic/ImmutableMapFactory.scala b/src/library/scala/collection/generic/ImmutableMapFactory.scala
index 2fd22e7f02..512014ba09 100644
--- a/src/library/scala/collection/generic/ImmutableMapFactory.scala
+++ b/src/library/scala/collection/generic/ImmutableMapFactory.scala
@@ -11,9 +11,9 @@
package scala.collection
package generic
-/** A template for companion objects of <code>immutable.Map</code> and
- * subclasses thereof.
- *
- * @since 2.8
+/** A template for companion objects of `immutable.Map` and subclasses thereof.
+ * @author Martin Odersky
+ * @version 2.8
+ * @since 2.8
*/
abstract class ImmutableMapFactory[CC[A, +B] <: immutable.Map[A, B] with immutable.MapLike[A, B, CC[A, B]]] extends MapFactory[CC]
diff --git a/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala b/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala
index d5c372ba74..d30f57f0ce 100644
--- a/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala
+++ b/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala
@@ -12,8 +12,16 @@
package scala.collection
package generic
-/** A template for companion objects of immutable.Map and subclasses thereof.
+/** A template for companion objects of `SortedMap` and subclasses thereof.
*
* @since 2.8
+ * @define Coll SortedMap
+ * @define coll sorted map
+ * @define factoryInfo
+ * This object provides a set of operations needed to create sorted maps of type `$Coll`.
+ * @author Martin Odersky
+ * @version 2.8
+ * @define sortedMapCanBuildFromInfo
+ * The standard `CanBuildFrom` instance for sorted maps
*/
abstract class ImmutableSortedMapFactory[CC[A, B] <: immutable.SortedMap[A, B] with SortedMapLike[A, B, CC[A, B]]] extends SortedMapFactory[CC]
diff --git a/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala b/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
index df5c2c7959..684e7c41f1 100644
--- a/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
+++ b/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala
@@ -12,8 +12,16 @@
package scala.collection
package generic
-/** A template for companion objects of mutable.Map and subclasses thereof.
+/** A template for companion objects of `SortedSet` and subclasses thereof.
*
* @since 2.8
+ * @define Coll immutable.SortedSet
+ * @define coll immutable sorted
+ * @define factoryInfo
+ * This object provides a set of operations needed to create sorted sets of type `$Coll`.
+ * @author Martin Odersky
+ * @version 2.8
+ * @define sortedSetCanBuildFromInfo
+ * The standard `CanBuildFrom` instance for sorted sets
*/
abstract class ImmutableSortedSetFactory[CC[A] <: immutable.SortedSet[A] with SortedSetLike[A, CC[A]]] extends SortedSetFactory[CC] \ No newline at end of file
diff --git a/src/library/scala/collection/generic/MapFactory.scala b/src/library/scala/collection/generic/MapFactory.scala
index fc04f28f26..163c289e23 100644
--- a/src/library/scala/collection/generic/MapFactory.scala
+++ b/src/library/scala/collection/generic/MapFactory.scala
@@ -22,6 +22,7 @@ import mutable.{Builder, MapBuilder}
* This object provides a set of operations needed to create `$Coll` values.
* @author Martin Odersky
* @version 2.8
+ * @since 2.8
* @define canBuildFromInfo
* The standard `CanBuildFrom` instance for `$Coll` objects.
* @see CanBuildFrom
@@ -33,14 +34,28 @@ import mutable.{Builder, MapBuilder}
*/
abstract class MapFactory[CC[A, B] <: Map[A, B] with MapLike[A, B, CC[A, B]]] {
+ /** The type constructor of the collection that can be built by this factory */
type Coll = CC[_, _]
+ /** An empty $Coll */
def empty[A, B]: CC[A, B]
+ /** A collection of type $Coll that contains given key/value bindings.
+ * @param elems the key/value pairs that make up the $coll
+ * @tparam A the type of the keys
+ * @tparam B the type of the associated values
+ * @return a new $coll consisting key/value pairs given by `elems`.
+ */
def apply[A, B](elems: (A, B)*): CC[A, B] = (newBuilder[A, B] ++= elems).result
+ /** The default builder for $Coll objects.
+ * @tparam A the type of the keys
+ * @tparam B the type of the associated values
+ */
def newBuilder[A, B]: Builder[(A, B), CC[A, B]] = new MapBuilder[A, B, CC[A, B]](empty[A, B])
+ /** The standard `CanBuildFrom` class for maps.
+ */
class MapCanBuildFrom[A, B] extends CanBuildFrom[Coll, (A, B), CC[A, B]] {
def apply(from: Coll) = newBuilder[A, B]
def apply() = newBuilder
diff --git a/src/library/scala/collection/generic/MutableMapFactory.scala b/src/library/scala/collection/generic/MutableMapFactory.scala
index 0f1608ee71..2fdb827d05 100644
--- a/src/library/scala/collection/generic/MutableMapFactory.scala
+++ b/src/library/scala/collection/generic/MutableMapFactory.scala
@@ -14,9 +14,10 @@ package generic
import mutable.MapBuilder
-/** A template for companion objects of `mutable.Map` and subclasses thereof.
- *
- * @since 2.8
+/** A template for companion objects of `immutable.Map` and subclasses thereof.
+ * @author Martin Odersky
+ * @version 2.8
+ * @since 2.8
*/
abstract class MutableMapFactory[CC[A, B] <: mutable.Map[A, B] with mutable.MapLike[A, B, CC[A, B]]]
extends MapFactory[CC]
diff --git a/src/library/scala/collection/generic/SetFactory.scala b/src/library/scala/collection/generic/SetFactory.scala
index 6a237d453c..1c4ec3e7e3 100644
--- a/src/library/scala/collection/generic/SetFactory.scala
+++ b/src/library/scala/collection/generic/SetFactory.scala
@@ -14,8 +14,7 @@ package generic
import mutable.{Builder, AddingBuilder}
-/** A template for companion objects of <code>Set</code> and subclasses
- * thereof.
+/** A template for companion objects of `Set` and subclasses thereof.
*
* @define coll set
* @define Coll Set
@@ -23,6 +22,7 @@ import mutable.{Builder, AddingBuilder}
* This object provides a set of operations needed to create `$Coll` values.
* @author Martin Odersky
* @version 2.8
+ * @since 2.8
* @define canBuildFromInfo
* The standard `CanBuildFrom` instance for `$Coll` objects.
* @see CanBuildFrom
@@ -36,6 +36,8 @@ abstract class SetFactory[CC[X] <: Set[X] with SetLike[X, CC[X]]]
def newBuilder[A]: Builder[A, CC[A]] = new AddingBuilder[A, CC[A]](empty[A])
+ /** $setCanBuildFromInfo
+ */
def setCanBuildFrom[A] = new CanBuildFrom[CC[_], A, CC[A]] {
def apply(from: CC[_]) = newBuilder[A]
def apply() = newBuilder[A]
diff --git a/src/library/scala/collection/immutable/BitSet.scala b/src/library/scala/collection/immutable/BitSet.scala
index 857b537904..9b801f26cb 100644
--- a/src/library/scala/collection/immutable/BitSet.scala
+++ b/src/library/scala/collection/immutable/BitSet.scala
@@ -17,6 +17,8 @@ import BitSetLike.{LogWL, updateArray}
/** A class for immutable bitsets.
* $bitsetinfo
+ * @define Coll immutable.BitSet
+ * @define coll immutable bitset
*/
@serializable @SerialVersionUID(1611436763290191562L)
abstract class BitSet extends Set[Int]
@@ -53,12 +55,16 @@ abstract class BitSet extends Set[Int]
}
}
-/** A factory object for bitsets */
+/** $factoryInfo
+ * @define Coll immutable.BitSet
+ * @define coll immutable bitset
+ */
object BitSet extends BitSetFactory[BitSet] {
/** The empty bitset */
val empty: BitSet = new BitSet1(0L)
+ /** $bitsetCanBuildFrom */
implicit def canBuildFrom: CanBuildFrom[BitSet, Int, BitSet] = bitsetCanBuildFrom
/** A bitset containing all the bits in an array */
diff --git a/src/library/scala/collection/immutable/DefaultMap.scala b/src/library/scala/collection/immutable/DefaultMap.scala
index a19b35aff0..667d86d352 100755
--- a/src/library/scala/collection/immutable/DefaultMap.scala
+++ b/src/library/scala/collection/immutable/DefaultMap.scala
@@ -14,22 +14,24 @@ package immutable
import generic._
-/** <p>
- * A default map which implements the <code>updated</code> and <code>-</code>
- * methods of maps.<br/>
- * Instances that inherit from <code>DefaultMap[A, B]</code> still have to
- * define:
- * </p>
- * <pre>
- * <b>def</b> get(key: A): Option[B]
- * <b>def</b> iterator: Iterator[(A, B)]</pre>
- * <p>
- * It refers back to the original map.
- * </p>
- * <p>
- * It might also be advisable to override <code>foreach</code> or
- * <code>size</code> if efficient implementations can be found.
- * </p>
+/** A default map which implements the `+` and `-`
+ * methods of maps. It does so using the default builder for
+ * maps defined in the `Map` object.
+ * Instances that inherit from `DefaultMap[A, B]` still have to
+ * define:
+ *
+ * {{{
+ * def get(key: A): Option[B]
+ * def iterator: Iterator[(A, B)]
+ * }}}
+ *
+ * It refers back to the original map.
+ *
+ * It might also be advisable to override `foreach` or
+ * `size` if efficient implementations can be found.
+ *
+ * @tparam A the type of the keys contained in this map.
+ * @tparam B the type of the values associated with the keys.
*
* @since 2.8
*/
@@ -52,3 +54,13 @@ trait DefaultMap[A, +B] extends Map[A, B] { self =>
b.result
}
}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/library/scala/collection/immutable/HashMap.scala b/src/library/scala/collection/immutable/HashMap.scala
index e0f801546c..b82e50ec06 100644
--- a/src/library/scala/collection/immutable/HashMap.scala
+++ b/src/library/scala/collection/immutable/HashMap.scala
@@ -15,17 +15,22 @@ package immutable
import generic._
import annotation.unchecked.uncheckedVariance
-/** <p>
- * This class implements immutable maps using a hash trie.
- * </p>
+/** This class implements immutable maps using a hash trie.
*
- * @note the builder of a hash map returns specialized representations EmptyMap,Map1,..., Map4
- * for maps of size <= 4.
+ * '''Note:''' the builder of a hash map returns specialized representations EmptyMap,Map1,..., Map4
+ * for maps of size <= 4.
+ *
+ * @tparam A the type of the keys contained in this hash map.
+ * @tparam B the type of the values associated with the keys.
*
* @author Martin Odersky
* @author Tiark Rompf
* @version 2.8
* @since 2.3
+ * @define Coll immutable.HashMap
+ * @define coll immutable hash map
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable @SerialVersionUID(2L)
class HashMap[A, +B] extends Map[A,B] with MapLike[A, B, HashMap[A, B]] {
@@ -70,20 +75,22 @@ class HashMap[A, +B] extends Map[A,B] with MapLike[A, B, HashMap[A, B]] {
protected def updated0[B1 >: B](key: A, hash: Int, level: Int, value: B1, kv: (A, B1)): HashMap[A, B1] =
new HashMap.HashMap1(key, hash, value, kv)
+ protected def removed0(key: A, hash: Int, level: Int): HashMap[A, B] = this
- protected def removed0(key: A, hash: Int, level: Int): HashMap[A, B] = this
+ protected def writeReplace(): AnyRef = new HashMap.SerializationProxy(this)
}
-/** A factory object for immutable HashMaps.
+/** $factoryInfo
+ * @define Coll immutable.HashMap
+ * @define coll immutable hash map
*
- * @author Martin Odersky
* @author Tiark Rompf
- * @version 2.8
* @since 2.3
*/
object HashMap extends ImmutableMapFactory[HashMap] {
+ /** $mapCanBuildFromInfo */
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), HashMap[A, B]] = new MapCanBuildFrom[A, B]
def empty[A, B]: HashMap[A, B] = EmptyHashMap.asInstanceOf[HashMap[A, B]]
@@ -108,14 +115,7 @@ object HashMap extends ImmutableMapFactory[HashMap] {
m.updated0(this.key, this.hash, level, this.value, this.kv).updated0(key, hash, level, value, kv)
} else {
// 32-bit hash collision (rare, but not impossible)
- // wrap this in a HashTrieMap if called with level == 0 (otherwise serialization won't work)
- if (level == 0) {
- val elems = new Array[HashMap[A,B1]](1)
- elems(0) = new HashMapCollision1(hash, ListMap.empty.updated(this.key,this.value).updated(key,value))
- new HashTrieMap[A,B1](1 << ((hash >>> level) & 0x1f), elems, 2)
- } else {
- new HashMapCollision1(hash, ListMap.empty.updated(this.key,this.value).updated(key,value))
- }
+ new HashMapCollision1(hash, ListMap.empty.updated(this.key,this.value).updated(key,value))
}
}
@@ -125,18 +125,6 @@ object HashMap extends ImmutableMapFactory[HashMap] {
override def iterator: Iterator[(A,B)] = Iterator(ensurePair)
override def foreach[U](f: ((A, B)) => U): Unit = f(ensurePair)
private[HashMap] def ensurePair: (A,B) = if (kv ne null) kv else { kv = (key, value); kv }
-
- private def writeObject(out: java.io.ObjectOutputStream) {
- out.writeObject(key)
- out.writeObject(value)
- }
-
- private def readObject(in: java.io.ObjectInputStream) {
- key = in.readObject().asInstanceOf[A]
- value = in.readObject().asInstanceOf[B]
- hash = computeHash(key)
- }
-
}
private class HashMapCollision1[A,+B](private[HashMap] var hash: Int, var kvs: ListMap[A,B @uncheckedVariance]) extends HashMap[A,B] {
@@ -166,22 +154,6 @@ object HashMap extends ImmutableMapFactory[HashMap] {
override def iterator: Iterator[(A,B)] = kvs.iterator
override def foreach[U](f: ((A, B)) => U): Unit = kvs.foreach(f)
-
- private def writeObject(out: java.io.ObjectOutputStream) {
- // this cannot work - reading things in might produce different
- // hash codes and remove the collision. however this is never called
- // because no references to this class are ever handed out to client code
- // and HashTrieMap serialization takes care of the situation
- error("cannot serialize an immutable.HashMap where all items have the same 32-bit hash code")
- //out.writeObject(kvs)
- }
-
- private def readObject(in: java.io.ObjectInputStream) {
- error("cannot deserialize an immutable.HashMap where all items have the same 32-bit hash code")
- //kvs = in.readObject().asInstanceOf[ListMap[A,B]]
- //hash = computeHash(kvs.)
- }
-
}
@@ -246,19 +218,27 @@ object HashMap extends ImmutableMapFactory[HashMap] {
val index = (hash >>> level) & 0x1f
val mask = (1 << index)
val offset = Integer.bitCount(bitmap & (mask-1))
- if (((bitmap >>> index) & 1) == 1) {
- val elemsNew = new Array[HashMap[A,B]](elems.length)
- Array.copy(elems, 0, elemsNew, 0, elems.length)
+ if ((bitmap & mask) != 0) {
val sub = elems(offset)
// TODO: might be worth checking if sub is HashTrieMap (-> monomorphic call site)
val subNew = sub.removed0(key, hash, level + 5)
- elemsNew(offset) = subNew
- // TODO: handle shrinking
- val sizeNew = size + (subNew.size - sub.size)
- if (sizeNew > 0)
- new HashTrieMap(bitmap, elemsNew, size + (subNew.size - sub.size))
- else
- HashMap.empty[A,B]
+ if (subNew.isEmpty) {
+ val bitmapNew = bitmap ^ mask
+ if (bitmapNew != 0) {
+ val elemsNew = new Array[HashMap[A,B]](elems.length - 1)
+ Array.copy(elems, 0, elemsNew, 0, offset)
+ Array.copy(elems, offset + 1, elemsNew, offset, elems.length - offset - 1)
+ val sizeNew = size - sub.size
+ new HashTrieMap(bitmapNew, elemsNew, sizeNew)
+ } else
+ HashMap.empty[A,B]
+ } else {
+ val elemsNew = new Array[HashMap[A,B]](elems.length)
+ Array.copy(elems, 0, elemsNew, 0, elems.length)
+ elemsNew(offset) = subNew
+ val sizeNew = size + (subNew.size - sub.size)
+ new HashTrieMap(bitmap, elemsNew, sizeNew)
+ }
} else {
this
}
@@ -367,31 +347,29 @@ time { mNew.iterator.foreach( p => ()) }
}
}
+ }
+ @serializable @SerialVersionUID(2L) private class SerializationProxy[A,B](@transient private var orig: HashMap[A, B]) {
private def writeObject(out: java.io.ObjectOutputStream) {
- // no out.defaultWriteObject()
- out.writeInt(size)
- foreach { p =>
- out.writeObject(p._1)
- out.writeObject(p._2)
+ val s = orig.size
+ out.writeInt(s)
+ for ((k,v) <- orig) {
+ out.writeObject(k)
+ out.writeObject(v)
}
}
private def readObject(in: java.io.ObjectInputStream) {
- val size = in.readInt
- var index = 0
- var m = HashMap.empty[A,B]
- while (index < size) {
- // TODO: optimize (use unsafe mutable update)
- m = m + ((in.readObject.asInstanceOf[A], in.readObject.asInstanceOf[B]))
- index += 1
+ orig = empty
+ val s = in.readInt()
+ for (i <- 0 until s) {
+ val key = in.readObject().asInstanceOf[A]
+ val value = in.readObject().asInstanceOf[B]
+ orig = orig.updated(key, value)
}
- var tm = m.asInstanceOf[HashTrieMap[A,B]]
- bitmap = tm.bitmap
- elems = tm.elems
- size0 = tm.size0
}
+ private def readResolve(): AnyRef = orig
}
}
diff --git a/src/library/scala/collection/immutable/HashSet.scala b/src/library/scala/collection/immutable/HashSet.scala
index e79b456a2f..68da0cef50 100644
--- a/src/library/scala/collection/immutable/HashSet.scala
+++ b/src/library/scala/collection/immutable/HashSet.scala
@@ -15,16 +15,19 @@ package immutable
import generic._
import annotation.unchecked.uncheckedVariance
-/**
- * This class implements immutable sets using a hash trie.
+/** This class implements immutable sets using a hash trie.
*
- * @note the builder of a hash set returns specialized representations `EmptySet`,`Set1`,..., `Set4`
- * for sets of `size <= 4`.
+ * '''Note:''' the builder of a hash set returns specialized representations `EmptySet`,`Set1`,..., `Set4`
+ * for sets of `size <= 4`.
+ *
+ * @tparam A the type of the elements contained in this hash set.
*
* @author Martin Odersky
* @author Tiark Rompf
* @version 2.8
* @since 2.3
+ * @define Coll immutable.HashSet
+ * @define coll immutable hash set
*/
@serializable @SerialVersionUID(2L)
class HashSet[A] extends Set[A]
@@ -69,28 +72,24 @@ class HashSet[A] extends Set[A]
protected def updated0(key: A, hash: Int, level: Int): HashSet[A] =
new HashSet.HashSet1(key, hash)
-
-
protected def removed0(key: A, hash: Int, level: Int): HashSet[A] = this
+ protected def writeReplace(): AnyRef = new HashSet.SerializationProxy(this)
}
-/*
-object HashSet extends SetFactory[HashSet] {
- implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, HashSet[A]] = setCanBuildFrom[A]
- override def empty[A]: HashSet[A] = new HashSet
-}
-*/
-
-
-/** A factory object for immutable HashSets.
+/** $factoryInfo
+ * @define Coll immutable.HashSet
+ * @define coll immutable hash set
*
- * @author Martin Odersky
* @author Tiark Rompf
- * @version 2.8
* @since 2.3
+ * @define Coll immutable.HashSet
+ * @define coll immutable hash set
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
object HashSet extends SetFactory[HashSet] {
+ /** $setCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, HashSet[A]] = setCanBuildFrom[A]
override def empty[A]: HashSet[A] = EmptyHashSet.asInstanceOf[HashSet[A]]
@@ -114,14 +113,7 @@ object HashSet extends SetFactory[HashSet] {
m.updated0(this.key, this.hash, level).updated0(key, hash, level)
} else {
// 32-bit hash collision (rare, but not impossible)
- // wrap this in a HashTrieSet if called with level == 0 (otherwise serialization won't work)
- if (level == 0) {
- val elems = new Array[HashSet[A]](1)
- elems(0) = new HashSetCollision1(hash, ListSet.empty + this.key + key)
- new HashTrieSet[A](1 << ((hash >>> level) & 0x1f), elems, 2)
- } else {
- new HashSetCollision1(hash, ListSet.empty + this.key + key)
- }
+ new HashSetCollision1(hash, ListSet.empty + this.key + key)
}
}
@@ -130,16 +122,6 @@ object HashSet extends SetFactory[HashSet] {
override def iterator: Iterator[A] = Iterator(key)
override def foreach[U](f: A => U): Unit = f(key)
-
- private def writeObject(out: java.io.ObjectOutputStream) {
- out.writeObject(key)
- }
-
- private def readObject(in: java.io.ObjectInputStream) {
- key = in.readObject().asInstanceOf[A]
- hash = computeHash(key)
- }
-
}
private class HashSetCollision1[A](private[HashSet] var hash: Int, var ks: ListSet[A]) extends HashSet[A] {
@@ -232,24 +214,33 @@ object HashSet extends SetFactory[HashSet] {
val index = (hash >>> level) & 0x1f
val mask = (1 << index)
val offset = Integer.bitCount(bitmap & (mask-1))
- if (((bitmap >>> index) & 1) == 1) {
- val elemsNew = new Array[HashSet[A]](elems.length)
- Array.copy(elems, 0, elemsNew, 0, elems.length)
+ if ((bitmap & mask) != 0) {
val sub = elems(offset)
- // TODO: might be worth checking if sub is HashTrieSet (-> monomorphic call site)
+ // TODO: might be worth checking if sub is HashTrieMap (-> monomorphic call site)
val subNew = sub.removed0(key, hash, level + 5)
- elemsNew(offset) = subNew
- // TODO: handle shrinking
- val sizeNew = size + (subNew.size - sub.size)
- if (sizeNew > 0)
- new HashTrieSet(bitmap, elemsNew, size + (subNew.size - sub.size))
- else
- HashSet.empty[A]
+ if (subNew.isEmpty) {
+ val bitmapNew = bitmap ^ mask
+ if (bitmapNew != 0) {
+ val elemsNew = new Array[HashSet[A]](elems.length - 1)
+ Array.copy(elems, 0, elemsNew, 0, offset)
+ Array.copy(elems, offset + 1, elemsNew, offset, elems.length - offset - 1)
+ val sizeNew = size - sub.size
+ new HashTrieSet(bitmapNew, elemsNew, sizeNew)
+ } else
+ HashSet.empty[A]
+ } else {
+ val elemsNew = new Array[HashSet[A]](elems.length)
+ Array.copy(elems, 0, elemsNew, 0, elems.length)
+ elemsNew(offset) = subNew
+ val sizeNew = size + (subNew.size - sub.size)
+ new HashTrieSet(bitmap, elemsNew, sizeNew)
+ }
} else {
this
}
}
+
override def iterator = new Iterator[A] {
private[this] var depth = 0
private[this] var arrayStack = new Array[Array[HashSet[A]]](6)
@@ -333,31 +324,27 @@ time { mNew.iterator.foreach( p => ()) }
i += 1
}
}
+ }
-
+ @serializable @SerialVersionUID(2L) private class SerializationProxy[A,B](@transient private var orig: HashSet[A]) {
private def writeObject(out: java.io.ObjectOutputStream) {
- // no out.defaultWriteObject()
- out.writeInt(size)
- foreach { e =>
+ val s = orig.size
+ out.writeInt(s)
+ for (e <- orig) {
out.writeObject(e)
}
}
private def readObject(in: java.io.ObjectInputStream) {
- val size = in.readInt
- var index = 0
- var m = HashSet.empty[A]
- while (index < size) {
- // TODO: optimize (use unsafe mutable update)
- m = m + in.readObject.asInstanceOf[A]
- index += 1
+ orig = empty
+ val s = in.readInt()
+ for (i <- 0 until s) {
+ val e = in.readObject().asInstanceOf[A]
+ orig = orig + e
}
- var tm = m.asInstanceOf[HashTrieSet[A]]
- bitmap = tm.bitmap
- elems = tm.elems
- size0 = tm.size0
}
+ private def readResolve(): AnyRef = orig
}
}
diff --git a/src/library/scala/collection/immutable/IndexedSeq.scala b/src/library/scala/collection/immutable/IndexedSeq.scala
index 268bd56a85..d3223fd106 100644
--- a/src/library/scala/collection/immutable/IndexedSeq.scala
+++ b/src/library/scala/collection/immutable/IndexedSeq.scala
@@ -14,7 +14,7 @@ package immutable
import generic._
import mutable.{ArrayBuffer, Builder}
-/** A subtrait of <code>collection.IndexedSeq</code> which represents indexed sequences
+/** A subtrait of `collection.IndexedSeq` which represents indexed sequences
* that are guaranteed immutable.
* $indexedSeqInfo
*/
@@ -26,6 +26,7 @@ trait IndexedSeq[+A] extends Seq[A]
}
/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
* @define coll indexed sequence
* @define Coll IndexedSeq
*/
diff --git a/src/library/scala/collection/immutable/IntMap.scala b/src/library/scala/collection/immutable/IntMap.scala
index 75a25e0223..90dfa541e3 100644
--- a/src/library/scala/collection/immutable/IntMap.scala
+++ b/src/library/scala/collection/immutable/IntMap.scala
@@ -12,8 +12,8 @@
package scala.collection
package immutable;
-/**
- * @author David MacIver
+/** Utility class for integer maps.
+ * @author David MacIver
*/
private[immutable] object IntMapUtils {
def zero(i : Int, mask : Int) = (i & mask) == 0;
@@ -50,8 +50,8 @@ private[immutable] object IntMapUtils {
import IntMapUtils._
-/**
- * @since 2.7
+/** A companion object for integer maps.
+ * @since 2.7
*/
object IntMap {
def empty[T] : IntMap[T] = IntMap.Nil;
@@ -146,15 +146,19 @@ private[immutable] class IntMapKeyIterator[V](it : IntMap[V]) extends IntMapIter
import IntMap._
-/**
- * Specialised immutable map structure for integer keys, based on
- * <a href="http://citeseer.ist.psu.edu/okasaki98fast.html">Fast Mergeable Integer Maps</a>
- * by Okasaki and Gill. Essentially a trie based on binary digits of the the integers.
+/** Specialised immutable map structure for integer keys, based on
+ * <a href="http://citeseer.ist.psu.edu/okasaki98fast.html">Fast Mergeable Integer Maps</a>
+ * by Okasaki and Gill. Essentially a trie based on binary digits of the the integers.
*
- * Note: This class is as of 2.8 largely superseded by HashMap.
+ * Note: This class is as of 2.8 largely superseded by HashMap.
*
- * @since 2.7
+ * @tparam T type of the values associated with integer keys.
*
+ * @since 2.7
+ * @define Coll immutable.IntMap
+ * @define coll immutable integer map
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
sealed abstract class IntMap[+T] extends Map[Int, T] with MapLike[Int, T, IntMap[T]] {
override def empty: IntMap[T] = IntMap.Nil;
diff --git a/src/library/scala/collection/immutable/Iterable.scala b/src/library/scala/collection/immutable/Iterable.scala
index 795fc2fa92..e0ef5ffcc1 100644
--- a/src/library/scala/collection/immutable/Iterable.scala
+++ b/src/library/scala/collection/immutable/Iterable.scala
@@ -17,6 +17,9 @@ import mutable.Builder
/** A base trait for iterable collections that are guaranteed immutable.
* $iterableInfo
+ *
+ * @define Coll immutable.Iterable
+ * @define coll immutable iterable collection
*/
trait Iterable[+A] extends Traversable[A]
with scala.collection.Iterable[A]
@@ -25,14 +28,11 @@ trait Iterable[+A] extends Traversable[A]
override def companion: GenericCompanion[Iterable] = Iterable
}
-/** A factory object for the trait <code>Iterable</code>.
- *
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
+/** $factoryInfo
+ * @define Coll immutable.Iterable
+ * @define coll immutable iterable collection
*/
object Iterable extends TraversableFactory[Iterable] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Iterable[A]] = new GenericCanBuildFrom[A]
def newBuilder[A]: Builder[A, Iterable[A]] = new mutable.ListBuffer
}
-
diff --git a/src/library/scala/collection/immutable/LinearSeq.scala b/src/library/scala/collection/immutable/LinearSeq.scala
index 9cb35dced5..180844ce79 100644
--- a/src/library/scala/collection/immutable/LinearSeq.scala
+++ b/src/library/scala/collection/immutable/LinearSeq.scala
@@ -15,7 +15,7 @@ package immutable
import generic._
import mutable.Builder
-/** A subtrait of <code>collection.LinearSeq</code> which represents sequences that
+/** A subtrait of `collection.LinearSeq` which represents sequences that
* are guaranteed immutable.
* $linearSeqInfo
*/
@@ -27,8 +27,9 @@ trait LinearSeq[+A] extends Seq[A]
}
/** $factoryInfo
- * @define coll linear sequence
- * @define Coll LinearSeq
+ * The current default implementation of a $Coll is a `List`.
+ * @define coll immutable linear sequence
+ * @define Coll immutable.LinearSeq
*/
object LinearSeq extends SeqFactory[LinearSeq] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, LinearSeq[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/immutable/ListMap.scala b/src/library/scala/collection/immutable/ListMap.scala
index 4342e54a9d..a88c3a52d5 100644
--- a/src/library/scala/collection/immutable/ListMap.scala
+++ b/src/library/scala/collection/immutable/ListMap.scala
@@ -14,25 +14,34 @@ package immutable
import generic._
-/** The canonical factory of <a href="ListMap.html">ListMap</a>'s.
- *
+/** $factoryInfo
* @since 1
+ * @define Coll immutable.ListMap
+ * @define coll immutable list map
*/
object ListMap extends ImmutableMapFactory[ListMap] {
+ /** $mapCanBuildFromInfo */
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), ListMap[A, B]] =
new MapCanBuildFrom[A, B]
def empty[A, B]: ListMap[A, B] = new ListMap
}
/** This class implements immutable maps using a list-based data
- * structure. Instances of <code>ListMap</code> represent
+ * structure. Instances of `ListMap` represent
* empty maps; they can be either created by calling the constructor
- * directly, or by applying the function <code>ListMap.empty</code>.
+ * directly, or by applying the function `ListMap.empty`.
+ *
+ * @tparam A the type of the keys in this list map.
+ * @tparam B the type of the values associated with the keys.
*
* @author Matthias Zenger
* @author Martin Odersky
* @version 2.0, 01/01/2007
* @since 1
+ * @define Coll immutable.ListMap
+ * @define coll immutable list map
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable @SerialVersionUID(301002838095710379L)
class ListMap[A, +B] extends Map[A, B] with MapLike[A, B, ListMap[A, B]] {
@@ -45,7 +54,7 @@ class ListMap[A, +B] extends Map[A, B] with MapLike[A, B, ListMap[A, B]] {
*/
override def size: Int = 0
- /** Checks if this map maps <code>key</code> to a value and return the
+ /** Checks if this map maps `key` to a value and return the
* value if it exists.
*
* @param key the key of the mapping of interest
diff --git a/src/library/scala/collection/immutable/ListSet.scala b/src/library/scala/collection/immutable/ListSet.scala
index f7b76d2317..2a202df9ef 100644
--- a/src/library/scala/collection/immutable/ListSet.scala
+++ b/src/library/scala/collection/immutable/ListSet.scala
@@ -14,24 +14,32 @@ package immutable
import generic._
-/** The canonical factory of <a href="ListSet.html">ListSet</a>'s
- *
+/** $factoryInfo
+ * @define Coll immutable.ListSet
+ * @define coll immutable list set
* @since 1
*/
object ListSet extends SetFactory[ListSet] {
+ /** setCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, ListSet[A]] = setCanBuildFrom[A]
override def empty[A] = new ListSet[A]
}
/** This class implements immutable sets using a list-based data
- * structure. Instances of <code>ListSet</code> represent
+ * structure. Instances of `ListSet` represent
* empty sets; they can be either created by calling the constructor
- * directly, or by applying the function <code>ListSet.empty</code>.
+ * directly, or by applying the function `ListSet.empty`.
+ *
+ * @tparam A the type of the elements contained in this list set.
*
* @author Matthias Zenger
* @version 1.0, 09/07/2003
* @since 1
+ * @define Coll immutable.ListSet
+ * @define coll immutable list set
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable
class ListSet[A] extends Set[A]
diff --git a/src/library/scala/collection/immutable/LongMap.scala b/src/library/scala/collection/immutable/LongMap.scala
index 24afb65b99..691a81d9f0 100644
--- a/src/library/scala/collection/immutable/LongMap.scala
+++ b/src/library/scala/collection/immutable/LongMap.scala
@@ -1,8 +1,8 @@
package scala.collection
package immutable
-/**
- * @author David MacIver
+/** Utility class for long maps.
+ * @author David MacIver
*/
private[immutable] object LongMapUtils{
def zero(i : Long, mask : Long) = (i & mask) == 0L;
@@ -40,8 +40,8 @@ private[immutable] object LongMapUtils{
import LongMapUtils._
-/**
- * @since 2.7
+/** A companion object for long maps.
+ * @since 2.7
*/
object LongMap{
def empty[T] : LongMap[T] = LongMap.Nil;
@@ -134,13 +134,19 @@ private[immutable] class LongMapKeyIterator[V](it : LongMap[V]) extends LongMapI
import LongMap._;
/**
- * Specialised immutable map structure for long keys, based on
- * <a href="http://citeseer.ist.psu.edu/okasaki98fast.html">Fast Mergeable Long Maps</a>
- * by Okasaki and Gill. Essentially a trie based on binary digits of the the integers.
+ * Specialised immutable map structure for long keys, based on
+ * <a href="http://citeseer.ist.psu.edu/okasaki98fast.html">Fast Mergeable Long Maps</a>
+ * by Okasaki and Gill. Essentially a trie based on binary digits of the the integers.
+ *
+ * Note: This class is as of 2.8 largely superseded by HashMap.
*
- * Note: This class is as of 2.8 largely superseded by HashMap.
+ * @tparam T type of the values associated with the long keys.
*
- * @since 2.7
+ * @since 2.7
+ * @define Coll immutable.LongMap
+ * @define coll immutable long integer map
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
sealed abstract class LongMap[+T] extends Map[Long, T] with MapLike[Long, T, LongMap[T]] {
override def empty: LongMap[T] = LongMap.Nil;
diff --git a/src/library/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala
index e3469099b8..74cf4a1715 100644
--- a/src/library/scala/collection/immutable/Map.scala
+++ b/src/library/scala/collection/immutable/Map.scala
@@ -48,12 +48,13 @@ trait Map[A, +B] extends Iterable[(A, B)]
def withDefaultValue[B1 >: B](d: B1): Map[A, B1] = new Map.WithDefault[A, B1](this, x => d)
}
-/**
- * A companion object for immutable maps.
- *
- * @since 1
+/** $factoryInfo
+ * @define Coll immutable.Map
+ * @define coll immutable map
*/
object Map extends ImmutableMapFactory[Map] {
+
+ /** $mapCanBuildFromInfo */
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), Map[A, B]] = new MapCanBuildFrom[A, B]
def empty[A, B]: Map[A, B] = EmptyMap.asInstanceOf[Map[A, B]]
diff --git a/src/library/scala/collection/immutable/MapLike.scala b/src/library/scala/collection/immutable/MapLike.scala
index 6f816ffa52..367ffadd43 100644
--- a/src/library/scala/collection/immutable/MapLike.scala
+++ b/src/library/scala/collection/immutable/MapLike.scala
@@ -14,32 +14,38 @@ package immutable
import generic._
-/** <p>
- * A generic template for immutable maps from keys of type <code>A</code>
- * to values of type <code>B</code>.<br/>
- * To implement a concrete map, you need to provide implementations of the
- * following methods (where <code>This</code> is the type of the map in
- * question):
- * </p>
- * <pre>
- * <b>def</b> get(key: A): Option[B]
- * <b>def</b> iterator: Iterator[(A, B)]
- * <b>def</b> + [B1 >: B](kv: (A, B)): Map[A, B1]
- * <b>def</b> - (key: A): This</pre>
- * <p>
- * If you wish that methods <code>like</code>, <code>take</code>, <code>drop</code>,
- * <code>filter</code> return the same kind of map, you should also override:
- * </p>
- * <pre>
- * <b>def</b> empty: This</pre>
- * <p>
- * It is also good idea to override methods <code>foreach</code> and
- * <code>size</code> for efficiency.
- * </p>
+/**
+ * A generic template for immutable maps from keys of type `A`
+ * to values of type `B`.
+ * To implement a concrete map, you need to provide implementations of the
+ * following methods (where `This` is the type of the actual map implementation):
+ *
+ * {{{
+ * def get(key: A): Option[B]
+ * def iterator: Iterator[(A, B)]
+ * def + [B1 >: B](kv: (A, B)): Map[A, B1]
+ * def - (key: A): This
+ * }}}
+ *
+ * If you wish that transformer methods like `take`, `drop`, `filter` return the
+ * same kind of map, you should also override:
+ *
+ * {{{
+ * def empty: This
+ * }}}
+ *
+ * It is also good idea to override methods `foreach` and
+ * `size` for efficiency.
+ *
+ * @param A the type of the keys contained in this collection.
+ * @param B the type of the values associated with the keys.
+ * @param This The type of the actual map implementation.
*
* @author Martin Odersky
* @version 2.8
* @since 2.8
+ * @define Coll immutable.Map
+ * @define coll immutable map
*/
trait MapLike[A, +B, +This <: MapLike[A, B, This] with Map[A, B]]
extends scala.collection.MapLike[A, B, This]
@@ -55,8 +61,8 @@ trait MapLike[A, +B, +This <: MapLike[A, B, This] with Map[A, B]]
override def updated [B1 >: B](key: A, value: B1): immutable.Map[A, B1] = this + ((key, value))
/** Add a key/value pair to this map, returning a new map.
- * @param kv the key/value pair
- * @return A new map with the new binding added to this map
+ * @param kv the key/value pair.
+ * @return A new map with the new binding added to this map.
*/
def + [B1 >: B] (kv: (A, B1)): immutable.Map[A, B1]
@@ -66,6 +72,7 @@ trait MapLike[A, +B, +This <: MapLike[A, B, This] with Map[A, B]]
* @param elem1 the first element to add.
* @param elem2 the second element to add.
* @param elems the remaining elements to add.
+ * @return A new map with the new bindings added to this map.
*/
override def + [B1 >: B] (elem1: (A, B1), elem2: (A, B1), elems: (A, B1) *): immutable.Map[A, B1] =
this + elem1 + elem2 ++ elems
@@ -73,7 +80,8 @@ trait MapLike[A, +B, +This <: MapLike[A, B, This] with Map[A, B]]
/** Adds a number of elements provided by a traversable object
* and returns a new collection with the added elements.
*
- * @param elems the traversable object.
+ * @param xs the traversable object consisting of key-value pairs.
+ * @return a new immutable map with the bindings of this map and those from `xs`.
*/
override def ++[B1 >: B](xs: TraversableOnce[(A, B1)]): immutable.Map[A, B1] =
((repr: immutable.Map[A, B1]) /: xs) (_ + _)
@@ -104,7 +112,7 @@ trait MapLike[A, +B, +This <: MapLike[A, B, This] with Map[A, B]]
}
/** This function transforms all the values of mappings contained
- * in this map with function <code>f</code>.
+ * in this map with function `f`.
*
* @param f A function over keys and values
* @return the updated map
diff --git a/src/library/scala/collection/immutable/MapProxy.scala b/src/library/scala/collection/immutable/MapProxy.scala
index 371af042e7..a511c6d145 100644
--- a/src/library/scala/collection/immutable/MapProxy.scala
+++ b/src/library/scala/collection/immutable/MapProxy.scala
@@ -12,14 +12,12 @@
package scala.collection
package immutable
-/** <p>
- * This is a simple wrapper class for <a href="Map.html"
- * target="contentFrame"><code>scala.collection.mutable.Map</code></a>.
- * </p>
- * <p>
- * It is most useful for assembling customized map abstractions
- * dynamically using object composition and forwarding.
- * </p>
+/**
+ * This is a simple wrapper class for <a href="Map.html"
+ * target="contentFrame">`scala.collection.immutable.Map`</a>.
+ *
+ * It is most useful for assembling customized map abstractions
+ * dynamically using object composition and forwarding.
*
* @author Matthias Zenger, Martin Odersky
* @version 2.0, 31/12/2006
diff --git a/src/library/scala/collection/immutable/NumericRange.scala b/src/library/scala/collection/immutable/NumericRange.scala
index 645c5fed24..67115f7184 100644
--- a/src/library/scala/collection/immutable/NumericRange.scala
+++ b/src/library/scala/collection/immutable/NumericRange.scala
@@ -14,24 +14,28 @@ package immutable
import mutable.{ Builder, ListBuffer }
import generic._
-/** <p>
- * <code>NumericRange</code> is a more generic version of the
- * <code>Range</code> class which works with arbitrary types.
- * It must be supplied with an `Integral` implementation of the
- * range type.
+/** `NumericRange` is a more generic version of the
+ * `Range` class which works with arbitrary types.
+ * It must be supplied with an `Integral` implementation of the
+ * range type.
*
- * Factories for likely types include `Range.BigInt`, `Range.Long`,
- * and `Range.BigDecimal`. `Range.Int` exists for completeness, but
- * the `Int`-based `scala.Range` should be more performant.
- * </p><pre>
- * <b>val</b> r1 = new Range(0, 100, 1)
- * <b>val</b> veryBig = Int.MaxValue.toLong + 1
- * <b>val</b> r2 = Range.Long(veryBig, veryBig + 100, 1)
+ * Factories for likely types include `Range.BigInt`, `Range.Long`,
+ * and `Range.BigDecimal`. `Range.Int` exists for completeness, but
+ * the `Int`-based `scala.Range` should be more performant.
+ *
+ * {{{
+ * val r1 = new Range(0, 100, 1)
+ * val veryBig = Int.MaxValue.toLong + 1
+ * val r2 = Range.Long(veryBig, veryBig + 100, 1)
* assert(r1 sameElements r2.map(_ - veryBig))
- * </pre>
+ * }}}
*
* @author Paul Phillips
* @version 2.8
+ * @define Coll NumericRange
+ * @define coll numeric range
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable
abstract class NumericRange[T]
@@ -68,7 +72,7 @@ extends IndexedSeq[T]
protected def underlying = collection.immutable.IndexedSeq.empty[T]
/** Create a new range with the start and end values of this range and
- * a new <code>step</code>.
+ * a new `step`.
*/
def by(newStep: T): NumericRange[T] = copy(start, end, newStep)
@@ -200,6 +204,8 @@ extends IndexedSeq[T]
}
}
+/** A companion object for numeric ranges.
+ */
object NumericRange {
class Inclusive[T](start: T, end: T, step: T)(implicit num: Integral[T])
extends NumericRange(start, end, step, true) {
diff --git a/src/library/scala/collection/immutable/PagedSeq.scala b/src/library/scala/collection/immutable/PagedSeq.scala
index bd12502520..2a1b3c110c 100644
--- a/src/library/scala/collection/immutable/PagedSeq.scala
+++ b/src/library/scala/collection/immutable/PagedSeq.scala
@@ -15,7 +15,7 @@ package immutable
import java.io._
import scala.util.matching.Regex
-/** The PagedSeq object defines a lazy implementations of
+/** The `PagedSeq` object defines a lazy implementations of
* a random access sequence.
*
* @since 2.7
@@ -108,8 +108,14 @@ import PagedSeq._
/** An implementation of lazily computed sequences, where elements are stored
* in ``pages'', i.e. arrays of fixed size.
*
- * @author Martin Odersky
- * @since 2.7
+ * @tparam T the type of the elements contained in this paged sequence, with a `ClassManifest` context bound.
+ *
+ * @author Martin Odersky
+ * @since 2.7
+ * @define Coll PagedSeq
+ * @define coll paged sequence
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
class PagedSeq[T: ClassManifest] protected(
more: (Array[T], Int, Int) => Int,
diff --git a/src/library/scala/collection/immutable/Queue.scala b/src/library/scala/collection/immutable/Queue.scala
index 02d344ceea..7a903cb201 100644
--- a/src/library/scala/collection/immutable/Queue.scala
+++ b/src/library/scala/collection/immutable/Queue.scala
@@ -15,12 +15,16 @@ package immutable
import generic._
import mutable.{ Builder, ListBuffer }
-/** <code>Queue</code> objects implement data structures that allow to
+/** `Queue` objects implement data structures that allow to
* insert and retrieve elements in a first-in-first-out (FIFO) manner.
*
* @author Erik Stenman
* @version 1.0, 08/07/2003
* @since 1
+ * @define Coll immutable.Queue
+ * @define coll immutable queue
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable
@SerialVersionUID(-7622936493364270175L)
@@ -31,11 +35,11 @@ class Queue[+A] protected(protected val in: List[A], protected val out: List[A])
override def companion: GenericCompanion[Queue] = Queue
- /** Returns the <code>n</code>-th element of this queue.
+ /** Returns the `n`-th element of this queue.
* The first element is at position 0.
*
* @param n index of the element to return
- * @return the element at position <code>n</code> in this queue.
+ * @return the element at position `n` in this queue.
* @throws Predef.NoSuchElementException if the queue is too short.
*/
def apply(n: Int): A = {
@@ -127,7 +131,12 @@ class Queue[+A] protected(protected val in: List[A], protected val out: List[A])
override def toString() = mkString("Queue(", ", ", ")")
}
+/** $factoryInfo
+ * @define Coll immutable.Queue
+ * @define coll immutable queue
+ */
object Queue extends SeqFactory[Queue] {
+ /** $genericCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Queue[A]] = new GenericCanBuildFrom[A]
def newBuilder[A]: Builder[A, Queue[A]] = new ListBuffer[A] mapResult (x => new Queue[A](Nil, x.toList))
override def empty[A]: Queue[A] = new Queue[A](Nil, Nil)
diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala
index 5424a7afcb..8f1f7d58a6 100644
--- a/src/library/scala/collection/immutable/Range.scala
+++ b/src/library/scala/collection/immutable/Range.scala
@@ -10,20 +10,31 @@
package scala.collection.immutable
-/** <p>
- * The <code>Range</code> class represents integer values in range
- * <code>[start;end)</code> with non-zero step value <code>step</code>.
- * It's a special case of an indexed sequence.
- * For example:
- * </p><pre>
- * <b>val</b> r1 = 0 until 10
- * <b>val</b> r2 = r1.start until r1.end by r1.step + 1
+/** The `Range` class represents integer values in range
+ * ''[start;end)'' with non-zero step value `step`.
+ * It's a special case of an indexed sequence.
+ * For example:
+ *
+ * {{{
+ * val r1 = 0 until 10
+ * val r2 = r1.start until r1.end by r1.step + 1
* println(r2.length) // = 5
- * </pre>
+ * }}}
+ *
+ * @param start the start of this range.
+ * @param end the exclusive end of the range.
+ * @param step the step for the range.
*
* @author Martin Odersky
* @version 2.8
* @since 2.5
+ * @define Coll Range
+ * @define coll range
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
+ * @define doesNotUseBuilders
+ * '''Note:''' this method does not use builders to construct a new range,
+ * and its complexity is O(1).
*/
@serializable @SerialVersionUID(7618862778670199309L)
class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int] {
@@ -33,7 +44,9 @@ class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int]
protected def copy(start: Int, end: Int, step: Int): Range = new Range(start, end, step)
/** Create a new range with the `start` and `end` values of this range and
- * a new <code>step</code>.
+ * a new `step`.
+ *
+ * @return a new range with a different step
*/
def by(step: Int): Range = copy(start, end, step)
@@ -84,18 +97,46 @@ class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int]
start
}
+ /** Creates a new range containing the first `n` elements of this range.
+ *
+ * $doesNotUseBuilders
+ *
+ * @param n the number of elements to take.
+ * @return a new range consisting of `n` first elements.
+ */
final override def take(n: Int): Range = if (n > 0 && length > 0) {
Range(start, locationAfterN(n - 1), step).inclusive
} else {
Range(start, start, step)
}
+ /** Creates a new range containing all the elements of this range except the first `n` elements.
+ *
+ * $doesNotUseBuilders
+ *
+ * @param n the number of elements to drop.
+ * @return a new range consisting of all the elements of this range except `n` first elements.
+ */
final override def drop(n: Int): Range =
copy(locationAfterN(n), end, step)
+ /** Creates a new range containing all the elements of this range except the last one.
+ *
+ * $doesNotUseBuilders
+ *
+ * @return a new range consisting of all the elements of this range except the last one.
+ */
final override def init: Range =
take(length - 1)
+ /** Creates a new range contained in the specified slice of this range.
+ *
+ * $doesNotUseBuilders
+ *
+ * @param from the start of the slice.
+ * @param until the end of the slice.
+ * @return a new range consisting of all the elements of this range contained in the specified slice.
+ */
final override def slice(from: Int, until: Int): Range =
drop(from).take(until - from)
@@ -117,12 +158,29 @@ class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int]
(Range(start, split, step), copy(split, end, step))
}
+ /** Creates a pair of new ranges, first consisting of elements before `n`, and the second
+ * of elements after `n`.
+ *
+ * $doesNotUseBuilders
+ */
final override def splitAt(n: Int) = (take(n), drop(n))
+ /** Creates a new range consisting of the `length - n` last elements of the range.
+ *
+ * $doesNotUseBuilders
+ */
final override def takeRight(n: Int): Range = drop(length - n)
+ /** Creates a new range consisting of the initial `length - n` elements of the range.
+ *
+ * $doesNotUseBuilders
+ */
final override def dropRight(n: Int): Range = take(length - n)
+ /** Returns the reverse of this range.
+ *
+ * $doesNotUseBuilders
+ */
final override def reverse: Range = if (length > 0) new Range.Inclusive(last, start, -step) else this
/** Make range inclusive.
@@ -156,6 +214,8 @@ class Range(val start: Int, val end: Int, val step: Int) extends IndexedSeq[Int]
}
}
+/** A companion object for the `Range` class.
+ */
object Range {
private[immutable] val MAX_PRINT = 512 // some arbitrary value
diff --git a/src/library/scala/collection/immutable/RedBlack.scala b/src/library/scala/collection/immutable/RedBlack.scala
index ffa6194838..98a7d67d48 100644
--- a/src/library/scala/collection/immutable/RedBlack.scala
+++ b/src/library/scala/collection/immutable/RedBlack.scala
@@ -12,9 +12,9 @@
package scala.collection
package immutable
-/** A base class containing the implementations for TreeMaps and TreeSets
+/** A base class containing the implementations for `TreeMaps` and `TreeSets`.
*
- * @since 2.3
+ * @since 2.3
*/
@serializable @SerialVersionUID(8691885935445612921L)
abstract class RedBlack[A] {
diff --git a/src/library/scala/collection/immutable/Seq.scala b/src/library/scala/collection/immutable/Seq.scala
index de7804a95c..7e41ff7b94 100644
--- a/src/library/scala/collection/immutable/Seq.scala
+++ b/src/library/scala/collection/immutable/Seq.scala
@@ -19,6 +19,8 @@ import mutable.Builder
* that are guaranteed immutable.
*
* $seqInfo
+ * @define Coll immutable.Seq
+ * @define coll immutable sequence
*/
trait Seq[+A] extends Iterable[A]
with scala.collection.Seq[A]
@@ -27,10 +29,12 @@ trait Seq[+A] extends Iterable[A]
override def companion: GenericCompanion[Seq] = Seq
}
-/**
- * @since 2.8
+/** $factoryInfo
+ * @define Coll immutable.Seq
+ * @define coll immutable sequence
*/
object Seq extends SeqFactory[Seq] {
+ /** genericCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Seq[A]] = new GenericCanBuildFrom[A]
def newBuilder[A]: Builder[A, Seq[A]] = new mutable.ListBuffer
}
diff --git a/src/library/scala/collection/immutable/Set.scala b/src/library/scala/collection/immutable/Set.scala
index 77f16c0d14..769ee37f6b 100644
--- a/src/library/scala/collection/immutable/Set.scala
+++ b/src/library/scala/collection/immutable/Set.scala
@@ -14,23 +14,16 @@ package immutable
import generic._
-/** <p>
- * A generic trait for immutable sets. Concrete set implementations have
- * to provide functionality for the abstract methods in <code>Set</code>:
- * </p>
- * <pre>
- * <b>def</b> contains(elem: A): Boolean
- * <b>def</b> iterator: Iterator[A]
- * <b>def</b> + (elem: A): Self
- * <b>def</b> - (elem: A): Self</pre>
- * <p>
- * where <code>Self</code> is the type of the set.
- * </p>
+/** A generic trait for immutable sets.
+ *
+ * $setnote
*
* @author Matthias Zenger
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @define Coll immutable.Set
+ * @define coll immutable set
*/
trait Set[A] extends Iterable[A]
with scala.collection.Set[A]
@@ -39,10 +32,12 @@ trait Set[A] extends Iterable[A]
override def companion: GenericCompanion[Set] = Set
}
-/**
- * A companion object for immutable sets.
+/** $factoryInfo
+ * @define Coll immutable.Set
+ * @define coll immutable set
*/
object Set extends SetFactory[Set] {
+ /** $setCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Set[A]] = setCanBuildFrom[A]
override def empty[A]: Set[A] = EmptySet.asInstanceOf[Set[A]]
diff --git a/src/library/scala/collection/immutable/SetProxy.scala b/src/library/scala/collection/immutable/SetProxy.scala
index 73c95652b3..d45b2059ff 100644
--- a/src/library/scala/collection/immutable/SetProxy.scala
+++ b/src/library/scala/collection/immutable/SetProxy.scala
@@ -12,14 +12,13 @@
package scala.collection
package immutable
-/** <p>
- * This is a simple wrapper class for <a href="Set.html"
- * target="contentFrame"><code>scala.collection.immutable.Set</code></a>.
- * </p>
- * <p>
- * It is most useful for assembling customized set abstractions
- * dynamically using object composition and forwarding.
- * </p>
+/** This is a simple wrapper class for <a href="Set.html"
+ * target="contentFrame">`scala.collection.immutable.Set`</a>.
+ *
+ * It is most useful for assembling customized set abstractions
+ * dynamically using object composition and forwarding.
+ *
+ * @tparam A type of the elements contained in this set proxy.
*
* @since 2.8
*/
diff --git a/src/library/scala/collection/immutable/SortedMap.scala b/src/library/scala/collection/immutable/SortedMap.scala
index 919b529a49..243636e107 100644
--- a/src/library/scala/collection/immutable/SortedMap.scala
+++ b/src/library/scala/collection/immutable/SortedMap.scala
@@ -18,10 +18,15 @@ import annotation.unchecked.uncheckedVariance
/** A map whose keys are sorted.
*
+ * @tparam A the type of the keys contained in this sorted map.
+ * @tparam B the type of the values associated with the keys.
+ *
* @author Sean McDirmid
* @author Martin Odersky
* @version 2.8
* @since 2.4
+ * @define Coll immutable.SortedMap
+ * @define coll immutable sorted map
*/
trait SortedMap[A, +B] extends Map[A, B]
with scala.collection.SortedMap[A, B]
@@ -62,10 +67,12 @@ trait SortedMap[A, +B] extends Map[A, B]
((repr: SortedMap[A, B1]) /: xs) (_ + _)
}
-/**
- * @since 2.4
+/** $factoryInfo
+ * @define Coll immutable.SortedMap
+ * @define coll immutable sorted map
*/
object SortedMap extends ImmutableSortedMapFactory[SortedMap] {
+ /** $sortedMapCanBuildFromInfo */
implicit def canBuildFrom[A, B](implicit ord: Ordering[A]): CanBuildFrom[Coll, (A, B), SortedMap[A, B]] = new SortedMapCanBuildFrom[A, B]
def empty[A, B](implicit ord: Ordering[A]): SortedMap[A, B] = TreeMap.empty[A, B]
}
diff --git a/src/library/scala/collection/immutable/SortedSet.scala b/src/library/scala/collection/immutable/SortedSet.scala
index 10ff466ff8..6c9433c30c 100644
--- a/src/library/scala/collection/immutable/SortedSet.scala
+++ b/src/library/scala/collection/immutable/SortedSet.scala
@@ -22,18 +22,20 @@ import mutable.Builder
* @author Martin Odersky
* @version 2.8
* @since 2.4
+ * @define Coll immutable.SortedSet
+ * @define coll immutable sorted set
*/
trait SortedSet[A] extends Set[A] with scala.collection.SortedSet[A] with SortedSetLike[A, SortedSet[A]] {
/** Needs to be overridden in subclasses. */
override def empty: SortedSet[A] = SortedSet.empty[A]
}
-/**
- * A companion object for immutable sorted sets.
- *
- * @since 2.4
+/** $factoryInfo
+ * @define Coll immutable.SortedSet
+ * @define coll immutable sorted set
*/
object SortedSet extends ImmutableSortedSetFactory[SortedSet] {
+ /** $sortedSetCanBuildFromInfo */
implicit def canBuildFrom[A](implicit ord: Ordering[A]): CanBuildFrom[Coll, A, SortedSet[A]] = new SortedSetCanBuildFrom[A]
def empty[A](implicit ord: Ordering[A]): SortedSet[A] = TreeSet.empty[A]
}
diff --git a/src/library/scala/collection/immutable/Stack.scala b/src/library/scala/collection/immutable/Stack.scala
index 7d3c8c040b..0323db7211 100644
--- a/src/library/scala/collection/immutable/Stack.scala
+++ b/src/library/scala/collection/immutable/Stack.scala
@@ -15,7 +15,12 @@ package immutable
import generic._
import mutable.{ ArrayBuffer, Builder }
+/** $factoryInfo
+ * @define Coll immutable.Stack
+ * @define coll immutable stack
+ */
object Stack extends SeqFactory[Stack] {
+ /** $genericCanBuildFromInfo */
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Stack[A]] = new GenericCanBuildFrom[A]
def newBuilder[A]: Builder[A, Stack[A]] = new ArrayBuffer[A] mapResult (buf => new Stack(buf.toList))
@@ -26,13 +31,21 @@ object Stack extends SeqFactory[Stack] {
/** This class implements immutable stacks using a list-based data
* structure.
*
- * @note This class exists only for historical reason and as an
- * analogue of mutable stacks
+ * '''Note:''' This class exists only for historical reason and as an
+ * analogue of mutable stacks.
* Instead of an immutable stack you can just use a list.
*
+ * @tparam A the type of the elements contained in this stack.
+ *
* @author Matthias Zenger
* @version 1.0, 10/07/2003
* @since 1
+ * @define Coll immutable.Stack
+ * @define coll immutable stack
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable @SerialVersionUID(1976480595012942526L)
class Stack[+A] protected (protected val elems: List[A]) extends LinearSeq[A]
diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala
index 7f0b21050a..50fa07c2cf 100644
--- a/src/library/scala/collection/immutable/Stream.scala
+++ b/src/library/scala/collection/immutable/Stream.scala
@@ -16,27 +16,33 @@ import generic._
import mutable.{Builder, StringBuilder, LazyBuilder, ListBuffer}
import scala.annotation.tailrec
-/**
- * <p>The class <code>Stream</code> implements lazy lists where elements
- * are only evaluated when they are needed. Here is an example:</p>
- * <pre>
- * <b>object</b> Main <b>extends</b> Application {
+/** The class `Stream` implements lazy lists where elements
+ * are only evaluated when they are needed. Here is an example:
*
- * <b>def</b> from(n: Int): Stream[Int] =
- * Stream.cons(n, from(n + 1))
+ * {{{
+ * object Main extends Application {
*
- * <b>def</b> sieve(s: Stream[Int]): Stream[Int] =
- * Stream.cons(s.head, sieve(s.tail filter { _ % s.head != 0 }))
+ * def from(n: Int): Stream[Int] =
+ * Stream.cons(n, from(n + 1))
*
- * <b>def</b> primes = sieve(from(2))
+ * def sieve(s: Stream[Int]): Stream[Int] =
+ * Stream.cons(s.head, sieve(s.tail filter { _ % s.head != 0 }))
*
- * primes take 10 print
- * }
- * </pre>
+ * def primes = sieve(from(2))
*
- * @author Martin Odersky, Matthias Zenger
- * @version 1.1 08/08/03
- * @since 2.8
+ * primes take 10 print
+ * }
+ * }}}
+ *
+ * @tparam A the type of the elements contained in this stream.
+ *
+ * @author Martin Odersky, Matthias Zenger
+ * @version 1.1 08/08/03
+ * @since 2.8
+ * @define Coll Stream
+ * @define coll stream
+ * @define orderDependent
+ * @define orderDependentFold
*/
abstract class Stream[+A] extends LinearSeq[A]
with GenericTraversableTemplate[A, Stream]
@@ -68,6 +74,7 @@ self =>
/** The stream resulting from the concatenation of this stream with the argument stream.
* @param rest The stream that gets appended to this stream
+ * @return The stream containing elements of this stream and the traversable object.
*/
def append[B >: A](rest: => Traversable[B]): Stream[B] =
if (isEmpty) rest.toStream else new Stream.Cons(head, tail append rest)
@@ -82,7 +89,7 @@ self =>
/** Prints elements of this stream one by one, separated by commas. */
def print() { print(", ") }
- /** Prints elements of this stream one by one, separated by <code>sep</code>.
+ /** Prints elements of this stream one by one, separated by `sep`.
* @param sep The separator string printed between consecutive elements.
*/
def print(sep: String) {
@@ -138,7 +145,7 @@ self =>
)
/** Returns the stream resulting from applying the given function
- * <code>f</code> to each element of this stream.
+ * `f` to each element of this stream.
*
* @param f function to apply to each element.
* @return <code>f(a<sub>0</sub>), ..., f(a<sub>n</sub>)</code> if this
@@ -150,10 +157,11 @@ self =>
else new Stream.Cons(f(head), asStream[B](tail map f))
)
- /** Applies the given function <code>f</code> to each element of
+ /** Applies the given function `f` to each element of
* this stream, then concatenates the results.
*
- * @param f the function to apply on each element.
+ * @param f the function to apply on each element.
+ * @param bf $bfinfo
* @return <code>f(a<sub>0</sub>) ::: ... ::: f(a<sub>n</sub>)</code> if
* this stream is <code>[a<sub>0</sub>, ..., a<sub>n</sub>]</code>.
*/
diff --git a/src/library/scala/collection/immutable/StringLike.scala b/src/library/scala/collection/immutable/StringLike.scala
index 8068267dd2..f12ddebd08 100644
--- a/src/library/scala/collection/immutable/StringLike.scala
+++ b/src/library/scala/collection/immutable/StringLike.scala
@@ -17,8 +17,8 @@ import mutable.Builder
import scala.util.matching.Regex
import scala.math.ScalaNumber
-/**
- * @since 2.8
+/** A companion object for the `StringLike` containing some constants.
+ * @since 2.8
*/
object StringLike {
@@ -31,8 +31,17 @@ object StringLike {
import StringLike._
-/**
- * @since 2.8
+/** A trait describing stringlike collections.
+ *
+ * @tparam Repr The type of the actual collection inheriting `StringLike`.
+ *
+ * @since 2.8
+ * @define Coll String
+ * @define coll string
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
trait StringLike[+Repr] extends IndexedSeqOptimized[Char, Repr] with Ordered[String] {
self =>
@@ -62,15 +71,15 @@ self =>
private def isLineBreak(c: Char) = c == LF || c == FF
/**
- * Strip trailing line end character from this string if it has one.
+ * Strip trailing line end character from this string if it has one.
*
- * A line end character is one of
- * <ul style="list-style-type: none;">
- * <li>LF - line feed (0x0A hex)</li>
- * <li>FF - form feed (0x0C hex)</li>
- * </ul>
- * If a line feed character LF is preceded by a carriage return CR
- * (0x0D hex), the CR character is also stripped (Windows convention).
+ * A line end character is one of
+ * <ul style="list-style-type: none;">
+ * <li>LF - line feed (0x0A hex)</li>
+ * <li>FF - form feed (0x0C hex)</li>
+ * </ul>
+ * If a line feed character LF is preceded by a carriage return CR
+ * (0x0D hex), the CR character is also stripped (Windows convention).
*/
def stripLineEnd: String = {
val len = toString.length
@@ -112,15 +121,15 @@ self =>
}
/** Return all lines in this string in an iterator, excluding trailing line
- * end characters, i.e. apply <code>.stripLineEnd</code> to all lines
- * returned by <code>linesWithSeparators</code>.
+ * end characters, i.e. apply `.stripLineEnd` to all lines
+ * returned by `linesWithSeparators`.
*/
def lines: Iterator[String] =
linesWithSeparators map (line => new WrappedString(line).stripLineEnd)
/** Return all lines in this string in an iterator, excluding trailing line
- * end characters, i.e. apply <code>.stripLineEnd</code> to all lines
- * returned by <code>linesWithSeparators</code>.
+ * end characters, i.e. apply `.stripLineEnd` to all lines
+ * returned by `linesWithSeparators`.
*/
def linesIterator: Iterator[String] =
linesWithSeparators map (line => new WrappedString(line).stripLineEnd)
@@ -135,12 +144,12 @@ self =>
new String(chars)
}
- /** Returns this string with the given <code>prefix</code> stripped. */
+ /** Returns this string with the given `prefix` stripped. */
def stripPrefix(prefix: String) =
if (toString.startsWith(prefix)) toString.substring(prefix.length)
else toString
- /** Returns this string with the given <code>suffix</code> stripped. */
+ /** Returns this string with the given `suffix` stripped. */
def stripSuffix(suffix: String) =
if (toString.endsWith(suffix)) toString.substring(0, toString.length() - suffix.length)
else toString
@@ -150,7 +159,7 @@ self =>
*
* <blockquote>
* Strip a leading prefix consisting of blanks or control characters
- * followed by <code>marginChar</code> from the line.
+ * followed by `marginChar` from the line.
* </blockquote>
*/
def stripMargin(marginChar: Char): String = {
@@ -170,7 +179,7 @@ self =>
*
* <blockquote>
* Strip a leading prefix consisting of blanks or control characters
- * followed by <code>|</code> from the line.
+ * followed by `|` from the line.
* </blockquote>
*/
def stripMargin: String = stripMargin('|')
@@ -230,7 +239,7 @@ self =>
*
* The interpretation of the formatting patterns is described in
* <a href="" target="contentFrame" class="java/util/Formatter">
- * <code>java.util.Formatter</code></a>, with the addition that
+ * `java.util.Formatter`</a>, with the addition that
* classes deriving from `ScalaNumber` (such as `scala.BigInt` and
* `scala.BigDecimal`) are unwrapped to pass a type which `Formatter`
* understands.
@@ -249,7 +258,7 @@ self =>
*
* The interpretation of the formatting patterns is described in
* <a href="" target="contentFrame" class="java/util/Formatter">
- * <code>java.util.Formatter</code></a>, with the addition that
+ * `java.util.Formatter`</a>, with the addition that
* classes deriving from `ScalaNumber` (such as `scala.BigInt` and
* `scala.BigDecimal`) are unwrapped to pass a type which `Formatter`
* understands.
diff --git a/src/library/scala/collection/immutable/StringOps.scala b/src/library/scala/collection/immutable/StringOps.scala
index 4949eb7056..2bdbf672cd 100644
--- a/src/library/scala/collection/immutable/StringOps.scala
+++ b/src/library/scala/collection/immutable/StringOps.scala
@@ -15,15 +15,19 @@ package immutable
import mutable.StringBuilder
/**
- * This class serves as a wrapper providing `String`s with all the operations
- * found in indexed sequences. Where needed, instances of `String` object
- * are implicitly converted into this class.
+ * This class serves as a wrapper providing `String`s with all the operations
+ * found in indexed sequences. Where needed, instances of `String` object
+ * are implicitly converted into this class.
*
- * The difference between this class and `WrappedString` is that calling transformer
- * methods such as `filter` and `map` will yield a `String` object, whereas a
- * `WrappedString` will remain a `WrappedString`.
+ * The difference between this class and `WrappedString` is that calling transformer
+ * methods such as `filter` and `map` will yield a `String` object, whereas a
+ * `WrappedString` will remain a `WrappedString`.
*
- * @since 2.8
+ * @param repr the actual representation of this string operations object.
+ *
+ * @since 2.8
+ * @define Coll StringOps
+ * @define coll string
*/
final class StringOps(override val repr: String) extends StringLike[String] {
diff --git a/src/library/scala/collection/immutable/Traversable.scala b/src/library/scala/collection/immutable/Traversable.scala
index af7f6979c9..8fdb5c7568 100644
--- a/src/library/scala/collection/immutable/Traversable.scala
+++ b/src/library/scala/collection/immutable/Traversable.scala
@@ -26,11 +26,10 @@ trait Traversable[+A] extends scala.collection.Traversable[A]
override def companion: GenericCompanion[Traversable] = Traversable
}
-/** A factory object for the trait <code>Traversable</code>.
- *
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
+/** $factoryInfo
+ * The current default implementation of a $Coll is a `Vector`.
+ * @define coll immutable traversable collection
+ * @define Coll immutable.Traversable
*/
object Traversable extends TraversableFactory[Traversable] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Traversable[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/immutable/TreeMap.scala b/src/library/scala/collection/immutable/TreeMap.scala
index bd04b8d2e2..61cfe2e13b 100644
--- a/src/library/scala/collection/immutable/TreeMap.scala
+++ b/src/library/scala/collection/immutable/TreeMap.scala
@@ -15,22 +15,33 @@ package immutable
import generic._
import mutable.Builder
-/** The canonical factory of <a href="TreeMap.html">TreeMap</a>'s.
- *
- * @since 1
+/** $factoryInfo
+ * @define Coll immutable.TreeMap
+ * @define coll immutable tree map
*/
object TreeMap extends ImmutableSortedMapFactory[TreeMap] {
def empty[A, B](implicit ord: Ordering[A]) = new TreeMap[A, B]()(ord)
+ /** $sortedMapCanBuildFromInfo */
implicit def canBuildFrom[A, B](implicit ord: Ordering[A]): CanBuildFrom[Coll, (A, B), TreeMap[A, B]] = new SortedMapCanBuildFrom[A, B]
private def make[A, B](s: Int, t: RedBlack[A]#Tree[B])(implicit ord: Ordering[A]) = new TreeMap[A, B](s, t)(ord)
}
/** This class implements immutable maps using a tree.
*
+ * @tparam A the type of the keys contained in this tree map.
+ * @tparam B the type of the values associated with the keys.
+ * @param ordering the implicit ordering used to compare objects of type `A`.
+ *
* @author Erik Stenman
* @author Matthias Zenger
* @version 1.1, 03/05/2004
* @since 1
+ * @define Coll immutable.TreeMap
+ * @define coll immutable tree map
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable
class TreeMap[A, +B](override val size: Int, t: RedBlack[A]#Tree[B])(implicit val ordering: Ordering[A])
@@ -65,18 +76,20 @@ class TreeMap[A, +B](override val size: Int, t: RedBlack[A]#Tree[B])(implicit va
* if key is <em>not</em> in the TreeMap, otherwise
* the key is updated with the new entry.
*
- * @param key ...
- * @param value ...
- * @return ...
+ * @tparam B1 type of the value of the new binding which is a supertype of `B`
+ * @param key the key that should be updated
+ * @param value the value to be associated with `key`
+ * @return a new $coll with the updated binding
*/
override def updated [B1 >: B](key: A, value: B1): TreeMap[A, B1] = {
val newsize = if (tree.lookup(key).isEmpty) size + 1 else size
TreeMap.make(newsize, tree.update(key, value))
}
- /** Add a key/value pair to this map.
- * @param kv the key/value pair
- * @return A new map with the new binding added to this map
+ /** Add a key/value pair to this map.
+ * @tparam B1 type of the value of the new binding, a supertype of `B`
+ * @param kv the key/value pair
+ * @return A new $coll with the new binding added to this map
*/
override def + [B1 >: B] (kv: (A, B1)): TreeMap[A, B1] = updated(kv._1, kv._2)
@@ -84,15 +97,22 @@ class TreeMap[A, +B](override val size: Int, t: RedBlack[A]#Tree[B])(implicit va
* either the collection itself (if it is mutable), or a new collection
* with the added elements.
*
+ * @tparam B1 type of the values of the new bindings, a supertype of `B`
* @param elem1 the first element to add.
* @param elem2 the second element to add.
* @param elems the remaining elements to add.
+ * @return a new $coll with the updated bindings
*/
override def + [B1 >: B] (elem1: (A, B1), elem2: (A, B1), elems: (A, B1) *): TreeMap[A, B1] =
this + elem1 + elem2 ++ elems
/** A new TreeMap with the entry added is returned,
* assuming that key is <em>not</em> in the TreeMap.
+ *
+ * @tparam B1 type of the values of the new bindings, a supertype of `B`
+ * @param key the key to be inserted
+ * @param value the value to be associated with `key`
+ * @return a new $coll with the inserted binding, if it wasn't present in the map
*/
def insert [B1 >: B](key: A, value: B1): TreeMap[A, B1] = {
assert(tree.lookup(key).isEmpty)
@@ -103,11 +123,11 @@ class TreeMap[A, +B](override val size: Int, t: RedBlack[A]#Tree[B])(implicit va
if (tree.lookup(key).isEmpty) this
else TreeMap.make(size - 1, tree.delete(key))
- /** Check if this map maps <code>key</code> to a value and return the
+ /** Check if this map maps `key` to a value and return the
* value if it exists.
*
* @param key the key of the mapping of interest
- * @return the value of the mapping, if it exists
+ * @return the value of the mapping, if it exists
*/
override def get(key: A): Option[B] = tree.lookup(key) match {
case n: NonEmpty[b] => Some(n.value)
diff --git a/src/library/scala/collection/immutable/TreeSet.scala b/src/library/scala/collection/immutable/TreeSet.scala
index 79e1a6b00b..7b1f71df5b 100644
--- a/src/library/scala/collection/immutable/TreeSet.scala
+++ b/src/library/scala/collection/immutable/TreeSet.scala
@@ -15,11 +15,11 @@ package immutable
import generic._
import mutable.{Builder, AddingBuilder}
-/** The canonical factory of <a href="TreeSet.html">TreeSet</a>'s.
- *
- * @since 1
+/** $factoryInfo
+ * @define Coll immutable.TreeSet
+ * @define coll immutable tree set
*/
-object TreeSet extends SortedSetFactory[TreeSet] {
+object TreeSet extends ImmutableSortedSetFactory[TreeSet] {
implicit def implicitBuilder[A](implicit ordering: Ordering[A]): Builder[A, TreeSet[A]] = newBuilder[A](ordering)
override def newBuilder[A](implicit ordering: Ordering[A]): Builder[A, TreeSet[A]] =
new AddingBuilder(empty[A](ordering))
@@ -31,9 +31,18 @@ object TreeSet extends SortedSetFactory[TreeSet] {
/** This class implements immutable sets using a tree.
*
+ * @tparam A the type of the elements contained in this tree set
+ * @param ordering the implicit ordering used to compare objects of type `A`
+ *
* @author Martin Odersky
* @version 2.0, 02/01/2007
* @since 1
+ * @define Coll immutable.TreeSet
+ * @define coll immutable tree set
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable @SerialVersionUID(-234066569443569402L)
class TreeSet[A](override val size: Int, t: RedBlack[A]#Tree[Unit])
@@ -54,29 +63,40 @@ class TreeSet[A](override val size: Int, t: RedBlack[A]#Tree[Unit])
*/
override def empty = TreeSet.empty
- /** A new TreeSet with the entry added is returned,
+ /** Creates a new `TreeSet` with the entry added.
+ *
+ * @param elem a new element to add.
+ * @return a new $coll containing `elem` and all the elements of this $coll.
*/
def + (elem: A): TreeSet[A] = {
val newsize = if (tree.lookup(elem).isEmpty) size + 1 else size
newSet(newsize, tree.update(elem, ()))
}
- /** A new TreeSet with the entry added is returned,
+ /** A new `TreeSet` with the entry added is returned,
* assuming that elem is <em>not</em> in the TreeSet.
+ *
+ * @param elem a new element to add.
+ * @return a new $coll containing `elem` and all the elements of this $coll.
*/
def insert(elem: A): TreeSet[A] = {
assert(tree.lookup(elem).isEmpty)
newSet(size + 1, tree.update(elem, ()))
}
+ /** Creates a new `TreeSet` with the entry removed.
+ *
+ * @param elem a new element to add.
+ * @return a new $coll containing all the elements of this $coll except `elem`.
+ */
def - (elem:A): TreeSet[A] =
if (tree.lookup(elem).isEmpty) this
else newSet(size - 1, tree delete elem)
- /** Checks if this set contains element <code>elem</code>.
+ /** Checks if this set contains element `elem`.
*
* @param elem the element to check for membership.
- * @return true, iff <code>elem</code> is contained in this set.
+ * @return true, iff `elem` is contained in this set.
*/
def contains(elem: A): Boolean = !tree.lookup(elem).isEmpty
diff --git a/src/library/scala/collection/immutable/WrappedString.scala b/src/library/scala/collection/immutable/WrappedString.scala
index cefbd96b5c..011774e10d 100644
--- a/src/library/scala/collection/immutable/WrappedString.scala
+++ b/src/library/scala/collection/immutable/WrappedString.scala
@@ -17,14 +17,18 @@ import mutable.{Builder, StringBuilder}
import scala.util.matching.Regex
/**
- * This class serves as a wrapper augmenting `String`s with all the operations
- * found in indexed sequences.
+ * This class serves as a wrapper augmenting `String`s with all the operations
+ * found in indexed sequences.
*
- * The difference between this class and `StringOps` is that calling transformer
- * methods such as `filter` and `map` will yield an object of type `WrappedString`
- * rather than a `String`.
+ * The difference between this class and `StringOps` is that calling transformer
+ * methods such as `filter` and `map` will yield an object of type `WrappedString`
+ * rather than a `String`.
*
- * @since 2.8
+ * @param self a string contained within this wrapped string
+ *
+ * @since 2.8
+ * @define Coll WrappedString
+ * @define coll wrapped string
*/
class WrappedString(override val self: String) extends IndexedSeq[Char] with StringLike[WrappedString] with Proxy {
@@ -38,8 +42,9 @@ class WrappedString(override val self: String) extends IndexedSeq[Char] with Str
new WrappedString(self.substring(from max 0, until min self.length))
}
-/**
- * @since 2.8
+/** A companion object for wrapped strings.
+ *
+ * @since 2.8
*/
object WrappedString {
def newBuilder: Builder[Char, WrappedString] = new StringBuilder() mapResult (new WrappedString(_))
diff --git a/src/library/scala/collection/mutable/ArrayBuffer.scala b/src/library/scala/collection/mutable/ArrayBuffer.scala
index bee531221f..ae656d4e09 100644
--- a/src/library/scala/collection/mutable/ArrayBuffer.scala
+++ b/src/library/scala/collection/mutable/ArrayBuffer.scala
@@ -177,8 +177,8 @@ class ArrayBuffer[A](override protected val initialSize: Int)
/** Factory object for the `ArrayBuffer` class.
*
* $factoryInfo
- * @define coll list
- * @define Coll List
+ * @define coll array buffer
+ * @define Coll ArrayBuffer
*/
object ArrayBuffer extends SeqFactory[ArrayBuffer] {
/** $genericCanBuildFromInfo */
diff --git a/src/library/scala/collection/mutable/ArrayLike.scala b/src/library/scala/collection/mutable/ArrayLike.scala
index b3bd0fbe25..15cafa6ee7 100644
--- a/src/library/scala/collection/mutable/ArrayLike.scala
+++ b/src/library/scala/collection/mutable/ArrayLike.scala
@@ -13,15 +13,15 @@ package scala.collection
package mutable
import generic._
-/** A subtrait of `collection.IndexedSeq` which represents sequences
- * that can be mutated.
- *
- * @since 2.8
+/** A common supertrait of `ArrayOps` and `WrappedArray` that factors out most
+ * operations on arrays and wrapped arrays.
*
* @tparam A type of the elements contained in the array like object.
* @tparam Repr the type of the actual collection containing the elements.
*
* @define Coll ArrayLike
+ * @version 2.8
+ * @since 2.8
*/
trait ArrayLike[A, +Repr] extends IndexedSeqOptimized[A, Repr] { self =>
diff --git a/src/library/scala/collection/mutable/IndexedSeq.scala b/src/library/scala/collection/mutable/IndexedSeq.scala
index 14ee5afc9b..06a6230c6b 100644
--- a/src/library/scala/collection/mutable/IndexedSeq.scala
+++ b/src/library/scala/collection/mutable/IndexedSeq.scala
@@ -27,8 +27,9 @@ trait IndexedSeq[A] extends Seq[A]
}
/** $factoryInfo
- * @define coll indexed sequence
- * @define Coll IndexedSeq
+ * The current default implementation of a $Coll is an `ArrayBuffer`.
+ * @define coll mutable indexed sequence
+ * @define Coll mutable.IndexedSeq
*/
object IndexedSeq extends SeqFactory[IndexedSeq] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, IndexedSeq[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/mutable/IndexedSeqView.scala b/src/library/scala/collection/mutable/IndexedSeqView.scala
index 9a0e7a4010..8d72ac2c49 100644
--- a/src/library/scala/collection/mutable/IndexedSeqView.scala
+++ b/src/library/scala/collection/mutable/IndexedSeqView.scala
@@ -16,14 +16,16 @@ import generic._
import TraversableView.NoBuilder
-/** A non-strict view of a mutable IndexedSeq.
- * This is a leaf class which mixes methods returning a plain IndexedSeq view
- * and methods returning a mutable IndexedSeq view.
- * There is no associated `Like' class.
- * @author Sean McDirmid
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
+/** A non-strict view of a mutable `IndexedSeq`.
+ * $viewinfo
+ * Some of the operations of this class will yield again a mutable indexed sequence,
+ * others will just yield a plain indexed sequence of type `collection.IndexedSeq`.
+ * Because this is a leaf class there is no associated `Like' class.
+ * @author Martin Odersky
+ * @version 2.8
+ * @since 2.8
+ * @tparam A the element type of the view
+ * @tparam Coll the type of the underlying collection containing the elements.
*/
trait IndexedSeqView[A, +Coll] extends IndexedSeq[A]
with IndexedSeqOptimized[A, IndexedSeqView[A, Coll]]
@@ -91,13 +93,13 @@ self =>
override def reverse: IndexedSeqView[A, Coll] = newReversed.asInstanceOf[IndexedSeqView[A, Coll]]
}
-/** $factoryInfo
- * @define coll indexed sequence view
- * @define Coll IndexedSeqView
- * Note that the canBuildFrom factories yield SeqViews, not IndexedSewqViews.
- * This is intentional, because not all operations yield again a mutable.IndexedSeqView.
- * For instance, map just gives a SeqView, which reflects the fact that
- * map cannot do its work and maintain a pointer into the original indexed sequence.
+/** An object containing the necessary implicit definitions to make
+ * `SeqView`s work. Its definitions are generally not accessed directly by clients.
+ *
+ * Note that the `canBuildFrom` factories yield `SeqView`s, not `IndexedSewqView`s.
+ * This is intentional, because not all operations yield again a `mutable.IndexedSeqView`.
+ * For instance, `map` just gives a `SeqView`, which reflects the fact that
+ * `map` cannot do its work and maintain a pointer into the original indexed sequence.
*/
object IndexedSeqView {
type Coll = TraversableView[_, C] forSome {type C <: Traversable[_]}
diff --git a/src/library/scala/collection/mutable/Iterable.scala b/src/library/scala/collection/mutable/Iterable.scala
index 85c6df6fb0..71143f74e3 100644
--- a/src/library/scala/collection/mutable/Iterable.scala
+++ b/src/library/scala/collection/mutable/Iterable.scala
@@ -21,8 +21,9 @@ trait Iterable[A] extends Traversable[A]
}
/** $factoryInfo
- * @define coll indexed sequence
- * @define Coll IndexedSeq
+ * The current default implementation of a $Coll is an `ArrayBuffer`.
+ * @define coll mutable iterable collection
+ * @define Coll mutable.Iterable
*/
object Iterable extends TraversableFactory[Iterable] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Iterable[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/mutable/LinearSeq.scala b/src/library/scala/collection/mutable/LinearSeq.scala
index 185b8c97a3..7567504890 100644
--- a/src/library/scala/collection/mutable/LinearSeq.scala
+++ b/src/library/scala/collection/mutable/LinearSeq.scala
@@ -29,8 +29,9 @@ trait LinearSeq[A] extends Seq[A]
}
/** $factoryInfo
- * @define coll linear sequence
- * @define Coll LinearSeq
+ * The current default implementation of a $Coll is a `MutableList`.
+ * @define coll mutable linear sequence
+ * @define Coll mutable.LinearSeq
*/
object LinearSeq extends SeqFactory[LinearSeq] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, LinearSeq[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/mutable/ListBuffer.scala b/src/library/scala/collection/mutable/ListBuffer.scala
index a2611a8c0f..7ebbf7b4da 100644
--- a/src/library/scala/collection/mutable/ListBuffer.scala
+++ b/src/library/scala/collection/mutable/ListBuffer.scala
@@ -246,7 +246,7 @@ final class ListBuffer[A]
// Overrides of methods in Buffer
/** Removes the element on a given index position. May take time linear in
- * the buffer size
+ * the buffer size.
*
* @param n the index which refers to the element to delete.
* @return n the element that was formerly at position `n`.
diff --git a/src/library/scala/collection/mutable/ListMap.scala b/src/library/scala/collection/mutable/ListMap.scala
index a4321d3818..09b0c6459b 100644
--- a/src/library/scala/collection/mutable/ListMap.scala
+++ b/src/library/scala/collection/mutable/ListMap.scala
@@ -59,8 +59,8 @@ class ListMap[A, B] extends Map[A, B] with MapLike[A, B, ListMap[A, B]] {
}
/** $factoryInfo
- * @define Coll ListMap
- * @define coll list map
+ * @define Coll mutable.ListMap
+ * @define coll mutable list map
*/
object ListMap extends MutableMapFactory[ListMap] {
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), ListMap[A, B]] = new MapCanBuildFrom[A, B]
diff --git a/src/library/scala/collection/mutable/Map.scala b/src/library/scala/collection/mutable/Map.scala
index 73688e3bee..6c42bad0e9 100644
--- a/src/library/scala/collection/mutable/Map.scala
+++ b/src/library/scala/collection/mutable/Map.scala
@@ -14,11 +14,11 @@ package mutable
import generic._
-/** This trait represents mutable maps.
- * All implementations od mutable maps inherit from it.
- *
- * @tparam A the type of the keys of the map.
- * @tparam B the type of associated values.
+/** A base trait for maps that can be mutated.
+ * $mapNote
+ * $mapTags
+ * @since 1.0
+ * @author Matthias Zenger
*/
trait Map[A, B]
extends Iterable[(A, B)]
@@ -40,11 +40,15 @@ trait Map[A, B]
*/
}
-/* The standard factory for mutable maps.
- * Currently this uses `HashMap` as the implementation class.
+/** $factoryInfo
+ * The current default implementation of a $Coll is a `HashMap`.
+ * @define coll mutable map
+ * @define Coll mutable.Map
*/
object Map extends MutableMapFactory[Map] {
+ /** $canBuildFromInfo */
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), Map[A, B]] = new MapCanBuildFrom[A, B]
+
def empty[A, B]: Map[A, B] = new HashMap[A, B]
}
diff --git a/src/library/scala/collection/mutable/MapBuilder.scala b/src/library/scala/collection/mutable/MapBuilder.scala
index 9ce3524d9e..75fb48abd6 100644
--- a/src/library/scala/collection/mutable/MapBuilder.scala
+++ b/src/library/scala/collection/mutable/MapBuilder.scala
@@ -14,6 +14,10 @@ package mutable
/** The canonical builder for immutable maps, working with the map's `+` method
* to add new elements.
* Collections are built from their `empty` element using this + method.
+ *
+ * @tparam A Type of the keys for the map this builder creates.
+ * @tparam B Type of the values for the map this builder creates.
+ * @tparam Coll The type of the actual collection this builder builds.
* @param empty The empty element of the collection.
*
* @since 2.8
diff --git a/src/library/scala/collection/mutable/MapLike.scala b/src/library/scala/collection/mutable/MapLike.scala
index 19e67a6731..676a325c9b 100644
--- a/src/library/scala/collection/mutable/MapLike.scala
+++ b/src/library/scala/collection/mutable/MapLike.scala
@@ -15,41 +15,10 @@ package mutable
import generic._
import annotation.migration
-/** A template trait for mutable maps of type `mutable.Map[A, B]` which
- * associate keys of type `A` with values of type `B`.
- *
- * @tparam A the type of the keys.
- * @tparam B the type of associated values.
- * @tparam This the type of the `Map` itself.
- *
- * $mapnote
- *
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
- * @define mapnote
- * To implement a concrete mutable map, you need to provide implementations
- * of the following methods:
- * {{{
- * def get(key: A): Option[B]
- * def iterator: Iterator[(A, B)]
- * def += (kv: (A, B)): this.type
- * def -= (key: A): this.type
- * }}}
- * If you wish that methods like `take`,
- * `drop`, `filter` return the same kind of map, you
- * should also override:
- * {{{
- * def empty: This
- * }}}
- * If you wish to avoid the unnecessary construction of an `Option`
- * object, you could also override `apply`, `update`,
- * and `delete`.
-
- * It is also good idea to override methods `foreach` and
- * `size` for efficiency.
- * @define coll mutable map
- * @define Coll mutable.Map
+/** A template trait for mutable maps.
+ * $mapNote
+ * $mapTags
+ * @since 2.8
*/
trait MapLike[A, B, +This <: MapLike[A, B, This] with Map[A, B]]
extends scala.collection.MapLike[A, B, This]
diff --git a/src/library/scala/collection/mutable/MapProxy.scala b/src/library/scala/collection/mutable/MapProxy.scala
index cb768f6778..7fbb016a57 100644
--- a/src/library/scala/collection/mutable/MapProxy.scala
+++ b/src/library/scala/collection/mutable/MapProxy.scala
@@ -12,20 +12,17 @@
package scala.collection
package mutable
-/** <p>
- * This is a simple wrapper class for <a href="Map.html"
- * target="contentFrame"><code>scala.collection.mutable.Map</code></a>.
- * </p>
- * <p>
- * It is most useful for assembling customized map abstractions
- * dynamically using object composition and forwarding.
- * </p>
+/**
+ * This trait implements a proxy for <a href="Map.html"
+ * target="contentFrame"><code>scala.collection.mutable.Map</code></a>.
+ *
+ * It is most useful for assembling customized map abstractions
+ * dynamically using object composition and forwarding.
*
* @author Matthias Zenger, Martin Odersky
* @version 2.0, 31/12/2006
* @since 1
*/
-
trait MapProxy[A, B] extends Map[A, B] with MapProxyLike[A, B, Map[A, B]]
{
private def newProxy[B1 >: B](newSelf: Map[A, B1]): MapProxy[A, B1] =
diff --git a/src/library/scala/collection/mutable/MutableList.scala b/src/library/scala/collection/mutable/MutableList.scala
index 4324fa7ef9..4b6d727c34 100644
--- a/src/library/scala/collection/mutable/MutableList.scala
+++ b/src/library/scala/collection/mutable/MutableList.scala
@@ -16,11 +16,10 @@ import generic._
import immutable.{List, Nil}
// !!! todo: convert to LinkedListBuffer?
-/** <p>
- * This class is used internally to represent mutable lists. It is the
- * basis for the implementation of the classes
- * <code>Stack</code>, and <code>Queue</code>.
- * </p>
+/**
+ * This class is used internally to represent mutable lists. It is the
+ * basis for the implementation of the classes
+ * `Stack`, and `Queue`.
*
* @author Matthias Zenger
* @author Martin Odersky
diff --git a/src/library/scala/collection/mutable/ObservableBuffer.scala b/src/library/scala/collection/mutable/ObservableBuffer.scala
index d3bf49a5b4..8881e78ebc 100644
--- a/src/library/scala/collection/mutable/ObservableBuffer.scala
+++ b/src/library/scala/collection/mutable/ObservableBuffer.scala
@@ -15,9 +15,9 @@ package mutable
import script._
/** This class is typically used as a mixin. It adds a subscription
- * mechanism to the <code>Buffer</code> class into which this abstract
- * class is mixed in. Class <code>ObservableBuffer</code> publishes
- * events of the type <code>Message</code>.
+ * mechanism to the `Buffer` class into which this abstract
+ * class is mixed in. Class `ObservableBuffer` publishes
+ * events of the type `Message`.
*
* @author Matthias Zenger
* @version 1.0, 08/07/2003
diff --git a/src/library/scala/collection/mutable/ObservableMap.scala b/src/library/scala/collection/mutable/ObservableMap.scala
index b15b2e54e9..0cde1b2288 100644
--- a/src/library/scala/collection/mutable/ObservableMap.scala
+++ b/src/library/scala/collection/mutable/ObservableMap.scala
@@ -16,9 +16,9 @@ import script._
/** This class is typically used as a mixin. It adds a subscription
- * mechanism to the <code>Map</code> class into which this abstract
- * class is mixed in. Class <code>ObservableMap</code> publishes
- * events of the type <code>Message</code>.
+ * mechanism to the `Map` class into which this abstract
+ * class is mixed in. Class `ObservableMap` publishes
+ * events of the type `Message`.
*
* @author Matthias Zenger
* @author Martin Odersky
diff --git a/src/library/scala/collection/mutable/ObservableSet.scala b/src/library/scala/collection/mutable/ObservableSet.scala
index 024c2415ce..1f2f1789f9 100644
--- a/src/library/scala/collection/mutable/ObservableSet.scala
+++ b/src/library/scala/collection/mutable/ObservableSet.scala
@@ -15,9 +15,9 @@ package mutable
import script._
/** This class is typically used as a mixin. It adds a subscription
- * mechanism to the <code>Set</code> class into which this abstract
- * class is mixed in. Class <code>ObservableSet</code> publishes
- * events of the type <code>Message</code>.
+ * mechanism to the `Set` class into which this abstract
+ * class is mixed in. Class `ObservableSet` publishes
+ * events of the type `Message`.
*
* @author Matthias Zenger
* @version 1.0, 08/07/2003
diff --git a/src/library/scala/collection/mutable/OpenHashMap.scala b/src/library/scala/collection/mutable/OpenHashMap.scala
index cbcc19c3e8..4ecfe0e762 100644
--- a/src/library/scala/collection/mutable/OpenHashMap.scala
+++ b/src/library/scala/collection/mutable/OpenHashMap.scala
@@ -12,8 +12,12 @@
package scala.collection
package mutable
+
/**
- * @since 2.7
+ * @define Coll OpenHashMap
+ * @define coll open hash map
+ *
+ * @since 2.7
*/
object OpenHashMap {
def apply[K, V](elems : (K, V)*) = {
@@ -42,17 +46,26 @@ object OpenHashMap {
private[mutable] def nextPowerOfTwo(i : Int) = highestOneBit(i) << 1;
}
-/**
- * A mutable hash map based on an open hashing scheme. The precise scheme is undefined,
- * but it should make a reasonable effort to ensure that an insert with consecutive hash
- * codes is not unneccessarily penalised. In particular, mappings of consecutive integer
- * keys should work without significant performance loss.
+/** A mutable hash map based on an open hashing scheme. The precise scheme is undefined,
+ * but it should make a reasonable effort to ensure that an insert with consecutive hash
+ * codes is not unneccessarily penalised. In particular, mappings of consecutive integer
+ * keys should work without significant performance loss.
+ *
+ * @tparam Key type of the keys in this map.
+ * @tparam Value type of the values in this map.
+ * @param initialSize the initial size of the internal hash table.
*
- * @author David MacIver
- * @since 2.7
+ * @author David MacIver
+ * @since 2.7
+ *
+ * @define Coll OpenHashMap
+ * @define coll open hash map
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
-class OpenHashMap[Key, Value](initialSize : Int) extends Map[Key, Value]
- with MapLike[Key, Value, OpenHashMap[Key, Value]] {
+class OpenHashMap[Key, Value](initialSize : Int)
+extends Map[Key, Value]
+ with MapLike[Key, Value, OpenHashMap[Key, Value]] {
import OpenHashMap.OpenEntry
type Entry = OpenEntry[Key, Value]
@@ -77,6 +90,7 @@ class OpenHashMap[Key, Value](initialSize : Int) extends Map[Key, Value]
override def size = _size;
private[this] def size_=(s : Int) = _size = s;
+ /** Returns a mangled hash code of the provided key. */
protected def hashOf(key : Key) = {
var h = key.hashCode;
h ^= ((h >>> 20) ^ (h >>> 12));
@@ -173,9 +187,10 @@ class OpenHashMap[Key, Value](initialSize : Int) extends Map[Key, Value]
None;
}
- /**
- * An iterator over the elements of this map. Use of this iterator follows the same
- * contract for concurrent modification as the foreach method.
+ /** An iterator over the elements of this map. Use of this iterator follows the same
+ * contract for concurrent modification as the foreach method.
+ *
+ * @return the iterator
*/
def iterator = new Iterator[(Key, Value)]{
var index = 0;
@@ -203,19 +218,20 @@ class OpenHashMap[Key, Value](initialSize : Int) extends Map[Key, Value]
}
/**
- * Loop over the key, value mappings of this map.
+ * Loop over the key, value mappings of this map.
*
- * The behaviour of modifying the map during an iteration is as follows:
+ * The behaviour of modifying the map during an iteration is as follows:
*
- * <ul>
- * <li>Deleting a mapping is always permitted.</li>
- * <li>Changing the value of mapping which is already present is permitted.</li>
- * <li>Anything else is not permitted. It will usually, but not always, throw an exception.</li>
- * </ul>
+ * <ul>
+ * <li>Deleting a mapping is always permitted.</li>
+ * <li>Changing the value of mapping which is already present is permitted.</li>
+ * <li>Anything else is not permitted. It will usually, but not always, throw an exception.</li>
+ * </ul>
*
- * @param f The function to apply to each key, value mapping.
+ * @tparam U The return type of the specified function `f`, return result of which is ignored.
+ * @param f The function to apply to each key, value mapping.
*/
- override def foreach[U](f : ((Key, Value)) => U) {
+ override def foreach[U](f : ((Key, Value)) => U) {
val startModCount = modCount;
foreachUndeletedEntry(entry => {
if (modCount != startModCount) error("Concurrent Modification")
@@ -226,6 +242,7 @@ class OpenHashMap[Key, Value](initialSize : Int) extends Map[Key, Value]
private[this] def foreachUndeletedEntry(f : Entry => Unit){
table.foreach(entry => if (entry != null && entry.value != None) f(entry));
}
+
override def transform(f : (Key, Value) => Value) = {
foreachUndeletedEntry(entry => entry.value = Some(f(entry.key, entry.value.get)));
this
diff --git a/src/library/scala/collection/mutable/PriorityQueue.scala b/src/library/scala/collection/mutable/PriorityQueue.scala
index eade376abe..37e1b0ccae 100644
--- a/src/library/scala/collection/mutable/PriorityQueue.scala
+++ b/src/library/scala/collection/mutable/PriorityQueue.scala
@@ -19,11 +19,20 @@ import annotation.migration
* To prioritize elements of type T there must be an implicit
* Ordering[T] available at creation.
*
+ * @tparam A type of the elements in this priority queue.
+ * @param ord implicit ordering used to compare the elements of type `A`.
+ *
* @author Matthias Zenger
* @version 1.0, 03/05/2004
* @since 1
+ *
+ * @define Coll PriorityQueue
+ * @define coll priority queue
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
-
@serializable @cloneable
class PriorityQueue[A](implicit ord: Ordering[A])
extends Seq[A]
@@ -98,6 +107,7 @@ class PriorityQueue[A](implicit ord: Ordering[A])
k = k / 2
}
}
+
protected def fixDown(as: Array[AnyRef], m: Int, n: Int): Unit = {
var k: Int = m
while (n >= 2 * k) {
@@ -134,7 +144,8 @@ class PriorityQueue[A](implicit ord: Ordering[A])
/** Inserts a single element into the priority queue.
*
- * @param elem the element to insert
+ * @param elem the element to insert.
+ * @return this $coll.
*/
def +=(elem: A): this.type = {
resarr.p_ensureSize(resarr.p_size0 + 1)
@@ -147,7 +158,8 @@ class PriorityQueue[A](implicit ord: Ordering[A])
/** Adds all elements provided by a `TraversableOnce` object
* into the priority queue.
*
- * @param xs an iterable object
+ * @param xs a traversable object.
+ * @return a new priority queue containing elements of both `xs` and `this`.
*/
def ++(xs: TraversableOnce[A]) = { this.clone() ++= xs }
@@ -203,19 +215,19 @@ class PriorityQueue[A](implicit ord: Ordering[A])
}
}
- /**
- * Returns the reverse of this queue. The priority queue that gets
- * returned will have an inversed ordering - if for some elements
- * `x` and `y` the original queue's ordering
- * had `compare` returning an integer ''w'', the new one will return ''-w'',
- * assuming the original ordering abides its contract.
+
+ /** Returns the reverse of this queue. The priority queue that gets
+ * returned will have an inversed ordering - if for some elements
+ * `x` and `y` the original queue's ordering
+ * had `compare` returning an integer ''w'', the new one will return ''-w'',
+ * assuming the original ordering abides its contract.
*
- * Note that the order of the elements will be reversed unless the
- * `compare` method returns 0. In this case, such elements
- * will be subsequent, but their corresponding subinterval may be inappropriately
- * reversed. However, due to the compare-equals contract, they will also be equal.
+ * Note that the order of the elements will be reversed unless the
+ * `compare` method returns 0. In this case, such elements
+ * will be subsequent, but their corresponding subinterval may be inappropriately
+ * reversed. However, due to the compare-equals contract, they will also be equal.
*
- * @return A reversed priority queue.
+ * @return A reversed priority queue.
*/
override def reverse = {
val revq = new PriorityQueue[A]()(new math.Ordering[A] {
diff --git a/src/library/scala/collection/mutable/PriorityQueueProxy.scala b/src/library/scala/collection/mutable/PriorityQueueProxy.scala
index 3f1ee5d217..f99755128f 100644
--- a/src/library/scala/collection/mutable/PriorityQueueProxy.scala
+++ b/src/library/scala/collection/mutable/PriorityQueueProxy.scala
@@ -13,7 +13,7 @@ package mutable
/** This class servers as a proxy for priority queues. The
* elements of the queue have to be ordered in terms of the
- * <code>Ordered[T]</code> class.
+ * `Ordered[T]` class.
*
* @author Matthias Zenger
* @version 1.0, 03/05/2004
@@ -22,7 +22,6 @@ package mutable
abstract class PriorityQueueProxy[A](implicit ord: Ordering[A]) extends PriorityQueue[A]
with Proxy
{
-
def self: PriorityQueue[A]
/** Creates a new iterator over all elements contained in this
diff --git a/src/library/scala/collection/mutable/Publisher.scala b/src/library/scala/collection/mutable/Publisher.scala
index 58e4394ef7..f91864f974 100644
--- a/src/library/scala/collection/mutable/Publisher.scala
+++ b/src/library/scala/collection/mutable/Publisher.scala
@@ -13,12 +13,14 @@ package scala.collection
package mutable
-/** <code>Publisher[A,This]</code> objects publish events of type <code>A</code>
+/** `Publisher[A,This]` objects publish events of type `A`
* to all registered subscribers. When subscribing, a subscriber may specify
* a filter which can be used to constrain the number of events sent to the
* subscriber. Subscribers may suspend their subscription, or reactivate a
- * suspended subscription. Class <code>Publisher</code> is typically used
- * as a mixin. The abstract type <code>Pub</code> models the type of the publisher itself.
+ * suspended subscription. Class `Publisher` is typically used
+ * as a mixin. The abstract type `Pub` models the type of the publisher itself.
+ *
+ * @tparam Evt type of the published event.
*
* @author Matthias Zenger
* @author Martin Odersky
diff --git a/src/library/scala/collection/mutable/Queue.scala b/src/library/scala/collection/mutable/Queue.scala
index 3754dbc3f2..3132e2f422 100644
--- a/src/library/scala/collection/mutable/Queue.scala
+++ b/src/library/scala/collection/mutable/Queue.scala
@@ -14,13 +14,20 @@ package mutable
import generic._
-/** <code>Queue</code> objects implement data structures that allow to
+/** `Queue` objects implement data structures that allow to
* insert and retrieve elements in a first-in-first-out (FIFO) manner.
*
* @author Matthias Zenger
* @author Martin Odersky
* @version 2.8
* @since 1
+ *
+ * @define Coll mutable.Queue
+ * @define coll mutable queue
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable @cloneable
class Queue[A] extends MutableList[A] with Cloneable[Queue[A]] {
diff --git a/src/library/scala/collection/mutable/QueueProxy.scala b/src/library/scala/collection/mutable/QueueProxy.scala
index b2548b26cc..6adb3d490b 100644
--- a/src/library/scala/collection/mutable/QueueProxy.scala
+++ b/src/library/scala/collection/mutable/QueueProxy.scala
@@ -12,9 +12,11 @@
package scala.collection
package mutable
-/** <code>Queue</code> objects implement data structures that allow to
+/** `Queue` objects implement data structures that allow to
* insert and retrieve elements in a first-in-first-out (FIFO) manner.
*
+ * @tparam A type of the elements in this queue proxy.
+ *
* @author Matthias Zenger
* @version 1.1, 03/05/2004
* @since 1
diff --git a/src/library/scala/collection/mutable/ResizableArray.scala b/src/library/scala/collection/mutable/ResizableArray.scala
index 80ab1cd559..96d24136cf 100644
--- a/src/library/scala/collection/mutable/ResizableArray.scala
+++ b/src/library/scala/collection/mutable/ResizableArray.scala
@@ -17,6 +17,8 @@ import generic._
/** This class is used internally to implement data structures that
* are based on resizable arrays.
*
+ * @tparam A type of the elements contained in this resizeable array.
+ *
* @author Matthias Zenger, Burak Emir
* @author Martin Odersky
* @version 2.8
diff --git a/src/library/scala/collection/mutable/RevertibleHistory.scala b/src/library/scala/collection/mutable/RevertibleHistory.scala
index 62e1efba2f..b16577486a 100644
--- a/src/library/scala/collection/mutable/RevertibleHistory.scala
+++ b/src/library/scala/collection/mutable/RevertibleHistory.scala
@@ -13,10 +13,13 @@ package scala.collection
package mutable
-/** A revertible history is a <code>History</code> object which supports
- * an undo operation. Type variable <code>A</code> refers to the type
- * of the published events, <code>B</code> denotes the publisher type.
- * Type <code>B</code> is typically a subtype of <code>Publisher</code>.
+/** A revertible history is a `History` object which supports
+ * an undo operation. Type variable `Evt` refers to the type
+ * of the published events, `Pub` denotes the publisher type.
+ * Type `Pub` is typically a subtype of `Publisher`.
+ *
+ * @tparam Evt type of the events
+ * @tparam Pub type of the publisher
*
* @author Matthias Zenger
* @version 1.0, 08/07/2003
diff --git a/src/library/scala/collection/mutable/Seq.scala b/src/library/scala/collection/mutable/Seq.scala
index 8d11e14063..679cc24389 100644
--- a/src/library/scala/collection/mutable/Seq.scala
+++ b/src/library/scala/collection/mutable/Seq.scala
@@ -14,12 +14,16 @@ package mutable
import generic._
-/** A subtrait of <code>collection.Seq</code> which represents sequences
+
+/** A subtrait of `collection.Seq` which represents sequences
* that can be mutated.
*
* $seqInfo
*
- * The class adds an <code>update</code> method to <code>collection.Seq</code>.
+ * The class adds an `update` method to `collection.Seq`.
+ *
+ * @define Coll mutable.Seq
+ * @define coll mutable sequence
*/
trait Seq[A] extends Iterable[A]
with scala.collection.Seq[A]
@@ -36,11 +40,10 @@ trait Seq[A] extends Iterable[A]
def update(idx: Int, elem: A)
}
-/** A factory object for the trait <code>Seq</code>.
- *
- * @author Martin Odersky
- * @version 2.8
- * @since 2.8
+/** $factoryInfo
+ * The current default implementation of a $Coll is an `ArrayBuffer`.
+ * @define coll mutable sequence
+ * @define Coll mutable.Seq
*/
object Seq extends SeqFactory[Seq] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Seq[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/mutable/Set.scala b/src/library/scala/collection/mutable/Set.scala
index cca592b5a0..2e7f1cbc6b 100644
--- a/src/library/scala/collection/mutable/Set.scala
+++ b/src/library/scala/collection/mutable/Set.scala
@@ -14,18 +14,11 @@ package mutable
import generic._
-/** A generic trait for mutable sets. Concrete set implementations
- * have to provide functionality for the abstract methods in Set:
- *
- * def contains(elem: A): Boolean
- * def iterator: Iterator[A]
- * def += (elem: A): this.type
- * def -= (elem: A): this.type
- *
+/** A base trait for sets that can be mutated.
+ * $setNote
+ * $setTags
+ * @since 1.0
* @author Matthias Zenger
- * @author Martin Odersky
- * @version 2.8
- * @since 1
*/
trait Set[A] extends Iterable[A]
with scala.collection.Set[A]
@@ -34,8 +27,10 @@ trait Set[A] extends Iterable[A]
override def companion: GenericCompanion[Set] = Set
}
-/** The canonical factory methods for <a href="Set.html">mutable sets</a>.
- * Currently this returns a HashSet.
+/** $factoryInfo
+ * The current default implementation of a $Coll is a `HashSet`.
+ * @define coll mutable set
+ * @define Coll mutable.Set
*/
object Set extends SetFactory[Set] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Set[A]] = setCanBuildFrom[A]
diff --git a/src/library/scala/collection/mutable/SetBuilder.scala b/src/library/scala/collection/mutable/SetBuilder.scala
index 450d76463c..b8903372bd 100644
--- a/src/library/scala/collection/mutable/SetBuilder.scala
+++ b/src/library/scala/collection/mutable/SetBuilder.scala
@@ -15,6 +15,8 @@ import generic._
/** The canonical builder for mutable Sets.
*
+ * @tparam A The type of the elements that will be contained in this set.
+ * @tparam Coll The type of the actual collection this set builds.
* @param empty The empty element of the collection.
* @since 2.8
*/
diff --git a/src/library/scala/collection/mutable/Stack.scala b/src/library/scala/collection/mutable/Stack.scala
index c224c030a4..72e2f928c8 100644
--- a/src/library/scala/collection/mutable/Stack.scala
+++ b/src/library/scala/collection/mutable/Stack.scala
@@ -20,10 +20,18 @@ import annotation.migration
/** A stack implements a data structure which allows to store and retrieve
* objects in a last-in-first-out (LIFO) fashion.
*
+ * @tparam A type of the elements contained in this stack.
+ *
* @author Matthias Zenger
* @author Martin Odersky
* @version 2.8
* @since 1
+ * @define Coll Stack
+ * @define coll stack
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
@serializable @cloneable
class Stack[A] private (var elems: List[A]) extends scala.collection.Seq[A] with Cloneable[Stack[A]] {
diff --git a/src/library/scala/collection/mutable/StackProxy.scala b/src/library/scala/collection/mutable/StackProxy.scala
index d3810dd158..740afdfd7d 100644
--- a/src/library/scala/collection/mutable/StackProxy.scala
+++ b/src/library/scala/collection/mutable/StackProxy.scala
@@ -12,9 +12,12 @@
package scala.collection
package mutable
+
/** A stack implements a data structure which allows to store and retrieve
* objects in a last-in-first-out (LIFO) fashion.
*
+ * @tparam A type of the elements in this stack proxy.
+ *
* @author Matthias Zenger
* @version 1.0, 10/05/2004
* @since 1
diff --git a/src/library/scala/collection/mutable/StringBuilder.scala b/src/library/scala/collection/mutable/StringBuilder.scala
index d622d15056..40e7e991ee 100644
--- a/src/library/scala/collection/mutable/StringBuilder.scala
+++ b/src/library/scala/collection/mutable/StringBuilder.scala
@@ -16,11 +16,8 @@ import generic._
import compat.Platform.arraycopy
import scala.reflect.Manifest
-/** <p>
- * A mutable sequence of characters. This class provides an API compatible
- * with <a class="java/lang/StringBuilder" href="" target="_top">
- * <code>java.lang.StringBuilder</code></a>.
- * </p>generic/
+/** A builder for mutable sequence of characters. This class provides an API compatible
+ * with <a class="java/lang/StringBuilder" href="" target="_top">`java.lang.StringBuilder`</a>.
*
* @author Stephane Micheloud
* @author Martin Odersky
diff --git a/src/library/scala/collection/mutable/SynchronizedBuffer.scala b/src/library/scala/collection/mutable/SynchronizedBuffer.scala
index 0fef1a6635..7bdbd5e520 100644
--- a/src/library/scala/collection/mutable/SynchronizedBuffer.scala
+++ b/src/library/scala/collection/mutable/SynchronizedBuffer.scala
@@ -14,12 +14,16 @@ package mutable
import script._
-/** This class should be used as a mixin. It synchronizes the <code>Buffer</code>
+/** This class should be used as a mixin. It synchronizes the `Buffer`
* methods of the class into which it is mixed in.
*
+ * @tparam A type of the elements contained in this buffer.
+ *
* @author Matthias Zenger
* @version 1.0, 08/07/2003
* @since 1
+ * @define Coll SynchronizedBuffer
+ * @define coll synchronized buffer
*/
trait SynchronizedBuffer[A] extends Buffer[A] {
diff --git a/src/library/scala/collection/mutable/SynchronizedMap.scala b/src/library/scala/collection/mutable/SynchronizedMap.scala
index dabcaa7e1c..08c370ce90 100644
--- a/src/library/scala/collection/mutable/SynchronizedMap.scala
+++ b/src/library/scala/collection/mutable/SynchronizedMap.scala
@@ -14,12 +14,17 @@ package mutable
import annotation.migration
-/** This class should be used as a mixin. It synchronizes the <code>Map</code>
+/** This class should be used as a mixin. It synchronizes the `Map`
* functions of the class into which it is mixed in.
*
+ * @tparam A type of the keys contained in this map.
+ * @tparam B type of the values associated with keys.
+ *
* @author Matthias Zenger, Martin Odersky
* @version 2.0, 31/12/2006
* @since 1
+ * @define Coll SynchronizedMap
+ * @define coll synchronized map
*/
trait SynchronizedMap[A, B] extends Map[A, B] {
diff --git a/src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala b/src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala
index 933b3b41a4..bc70e35993 100644
--- a/src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala
+++ b/src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala
@@ -13,12 +13,16 @@ package scala.collection
package mutable
/** This class implements synchronized priority queues using a binary heap.
- * The elements of the queue have to be ordered in terms of the
- * <code>Ordered[T]</code> class.
+ * The elements of the queue have to be ordered in terms of the `Ordered[T]` class.
+ *
+ * @tparam A type of the elements contained in this synchronized priority queue
+ * @param ord implicit ordering used to compared elements of type `A`
*
* @author Matthias Zenger
* @version 1.0, 03/05/2004
* @since 1
+ * @define Coll SynchronizedPriorityQueue
+ * @define coll synchronized priority queue
*/
class SynchronizedPriorityQueue[A](implicit ord: Ordering[A]) extends PriorityQueue[A] {
diff --git a/src/library/scala/collection/mutable/SynchronizedQueue.scala b/src/library/scala/collection/mutable/SynchronizedQueue.scala
index b09687a78e..7a0f9f5f6f 100644
--- a/src/library/scala/collection/mutable/SynchronizedQueue.scala
+++ b/src/library/scala/collection/mutable/SynchronizedQueue.scala
@@ -13,13 +13,17 @@ package scala.collection
package mutable
-/** This is a synchronized version of the <code>Queue[T]</code> class. It
+/** This is a synchronized version of the `Queue[T]` class. It
* implements a data structure that allows one to insert and retrieve
* elements in a first-in-first-out (FIFO) manner.
*
+ * @tparam A type of elements contained in this synchronized queue.
+ *
* @author Matthias Zenger
* @version 1.0, 03/05/2004
* @since 1
+ * @define Coll SynchronizedQueue
+ * @define coll synchronized queue
*/
class SynchronizedQueue[A] extends Queue[A] {
import scala.collection.Traversable
diff --git a/src/library/scala/collection/mutable/SynchronizedSet.scala b/src/library/scala/collection/mutable/SynchronizedSet.scala
index d3023b9136..904da541c2 100644
--- a/src/library/scala/collection/mutable/SynchronizedSet.scala
+++ b/src/library/scala/collection/mutable/SynchronizedSet.scala
@@ -13,12 +13,16 @@ package mutable
import script._
-/** This class should be used as a mixin. It synchronizes the <code>Set</code>
+/** This class should be used as a mixin. It synchronizes the `Set`
* functions of the class into which it is mixed in.
*
+ * @tparam A type of the elements contained in this synchronized set.
+ *
* @author Matthias Zenger
* @version 1.0, 08/07/2003
* @since 1
+ * @define Coll SynchronizedSet
+ * @define coll synchronized set
*/
trait SynchronizedSet[A] extends Set[A] {
import scala.collection.Traversable
diff --git a/src/library/scala/collection/mutable/SynchronizedStack.scala b/src/library/scala/collection/mutable/SynchronizedStack.scala
index 4940884302..9109d2ef5d 100644
--- a/src/library/scala/collection/mutable/SynchronizedStack.scala
+++ b/src/library/scala/collection/mutable/SynchronizedStack.scala
@@ -13,13 +13,17 @@ package scala.collection
package mutable
-/** This is a synchronized version of the <code>Stack[T]</code> class. It
+/** This is a synchronized version of the `Stack[T]` class. It
* implements a data structure which allows to store and retrieve
* objects in a last-in-first-out (LIFO) fashion.
*
+ * @tparam A type of the elements contained in this stack.
+ *
* @author Matthias Zenger
* @version 1.0, 03/05/2004
* @since 1
+ * @define Coll SynchronizedStack
+ * @define coll synchronized stack
*/
class SynchronizedStack[A] extends Stack[A] {
import scala.collection.Traversable
diff --git a/src/library/scala/collection/mutable/Traversable.scala b/src/library/scala/collection/mutable/Traversable.scala
index 89c8868314..871e3a825d 100644
--- a/src/library/scala/collection/mutable/Traversable.scala
+++ b/src/library/scala/collection/mutable/Traversable.scala
@@ -25,10 +25,10 @@ trait Traversable[A] extends scala.collection.Traversable[A]
override def companion: GenericCompanion[Traversable] = Traversable
}
-/** A factory object for the trait <code>Traversable</code>.
- *
- * @author Martin Odersky
- * @version 2.8
+/** $factoryInfo
+ * The current default implementation of a $Coll is an `ArrayBuffer`.
+ * @define coll mutable traversable collection
+ * @define Coll mutable.Traversable
*/
object Traversable extends TraversableFactory[Traversable] {
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, Traversable[A]] = new GenericCanBuildFrom[A]
diff --git a/src/library/scala/collection/mutable/Undoable.scala b/src/library/scala/collection/mutable/Undoable.scala
index 782e407843..45d3121bd3 100644
--- a/src/library/scala/collection/mutable/Undoable.scala
+++ b/src/library/scala/collection/mutable/Undoable.scala
@@ -13,8 +13,8 @@ package scala.collection
package mutable
-/** Classes that mix in the <code>Undoable</code> class provide an operation
- * <code>undo</code> which can be used to undo the last operation.
+/** Classes that mix in the `Undoable` class provide an operation
+ * `undo` which can be used to undo the last operation.
*
* @author Matthias Zenger
* @version 1.0, 08/07/2003
diff --git a/src/library/scala/collection/mutable/WeakHashMap.scala b/src/library/scala/collection/mutable/WeakHashMap.scala
index 8f496add1e..929c3f8fed 100644
--- a/src/library/scala/collection/mutable/WeakHashMap.scala
+++ b/src/library/scala/collection/mutable/WeakHashMap.scala
@@ -16,15 +16,35 @@ import JavaConversions._
import generic._
-/** A hash map with weak references to entries which are weakly reachable.
+/** A hash map with references to entries which are weakly reachable.
+ *
+ * @tparam A type of keys contained in this map
+ * @tparam B type of values associated with the keys
*
* @since 2.8
+ * @define Coll WeakHashMap
+ * @define coll weak hash map
+ * @define thatinfo the class of the returned collection. In the standard library configuration,
+ * `That` is always `WeakHashMap[A, B]` if the elements contained in the resulting collection are
+ * pairs of type `(A, B)`. This is because an implicit of type `CanBuildFrom[WeakHashMap, (A, B), WeakHashMap[A, B]]`
+ * is defined in object `WeakHashMap`. Otherwise, `That` resolves to the most specific type that doesn't have
+ * to contain pairs of type `(A, B)`, which is `Iterable`.
+ * @define $bfinfo an implicit value of class `CanBuildFrom` which determines the
+ * result class `That` from the current representation type `Repr`
+ * and the new element type `B`. This is usually the `canBuildFrom` value
+ * defined in object `WeakHashMap`.
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
class WeakHashMap[A, B] extends JMapWrapper[A, B](new java.util.WeakHashMap)
with JMapWrapperLike[A, B, WeakHashMap[A, B]] {
override def empty = new WeakHashMap[A, B]
}
+/** $factoryInfo
+ * @define Coll WeakHashMap
+ * @define coll weak hash map
+ */
object WeakHashMap extends MutableMapFactory[WeakHashMap] {
implicit def canBuildFrom[A, B]: CanBuildFrom[Coll, (A, B), WeakHashMap[A, B]] = new MapCanBuildFrom[A, B]
def empty[A, B]: WeakHashMap[A, B] = new WeakHashMap[A, B]
diff --git a/src/library/scala/collection/mutable/WrappedArray.scala b/src/library/scala/collection/mutable/WrappedArray.scala
index 10117a1086..b9e803d8dc 100644
--- a/src/library/scala/collection/mutable/WrappedArray.scala
+++ b/src/library/scala/collection/mutable/WrappedArray.scala
@@ -16,11 +16,19 @@ import scala.reflect.ClassManifest
import scala.collection.generic._
/**
- * <p>A class representing <code>Array[T]</code></p>
+ * A class representing `Array[T]`.
+ *
+ * @tparam T type of the elements in this wrapped array.
*
* @author Martin Odersky, Stephane Micheloud
* @version 1.0
* @since 2.8
+ * @define Coll WrappedArray
+ * @define coll wrapped array
+ * @define orderDependent
+ * @define orderDependentFold
+ * @define mayNotTerminateInf
+ * @define willNotTerminateInf
*/
abstract class WrappedArray[T] extends IndexedSeq[T] with ArrayLike[T, WrappedArray[T]] {
@@ -59,6 +67,8 @@ abstract class WrappedArray[T] extends IndexedSeq[T] with ArrayLike[T, WrappedAr
new WrappedArrayBuilder[T](elemManifest)
}
+/** A companion object used to create instances of `WrappedArray`.
+ */
object WrappedArray {
def make[T](x: AnyRef): WrappedArray[T] = x match {
case x: Array[AnyRef] => wrapRefArray[AnyRef](x).asInstanceOf[WrappedArray[T]]
diff --git a/src/library/scala/collection/mutable/WrappedArrayBuilder.scala b/src/library/scala/collection/mutable/WrappedArrayBuilder.scala
index 7f1e4b3254..012a0be862 100644
--- a/src/library/scala/collection/mutable/WrappedArrayBuilder.scala
+++ b/src/library/scala/collection/mutable/WrappedArrayBuilder.scala
@@ -15,7 +15,10 @@ package mutable
import generic._
import scala.reflect.ClassManifest
-/** A builder class for arrays
+/** A builder class for arrays.
+ *
+ * @tparam A type of elements that can be added to this builder.
+ * @param manifest class manifest for objects of type `A`.
*
* @since 2.8
*/
diff --git a/src/library/scala/math/BigDecimal.scala b/src/library/scala/math/BigDecimal.scala
index bb6965fcdc..c4cccd1f52 100644
--- a/src/library/scala/math/BigDecimal.scala
+++ b/src/library/scala/math/BigDecimal.scala
@@ -30,6 +30,9 @@ object BigDecimal
private val minCached = -512
private val maxCached = 512
+ val MinLong = BigDecimal(Long.MinValue)
+ val MaxLong = BigDecimal(Long.MaxValue)
+
/** Cache ony for defaultMathContext using BigDecimals in a small range. */
private lazy val cache = new Array[BigDecimal](maxCached - minCached + 1)
@@ -173,12 +176,11 @@ extends ScalaNumber with ScalaNumericConversions
else doubleValue.hashCode()
/** Compares this BigDecimal with the specified value for equality.
- * Will only claim equality with scala.BigDecimal and java.math.BigDecimal.
*/
override def equals (that: Any): Boolean = that match {
case that: BigDecimal => this equals that
case that: BigInt => this.toBigIntExact exists (that equals _)
- case x => unifiedPrimitiveEquals(x)
+ case x => (this <= BigDecimal.MaxLong && this >= BigDecimal.MinLong) && unifiedPrimitiveEquals(x)
}
protected[math] def isWhole = (this remainder 1) == BigDecimal(0)
diff --git a/src/library/scala/math/BigInt.scala b/src/library/scala/math/BigInt.scala
index 5267ad8b95..f0988f2934 100644
--- a/src/library/scala/math/BigInt.scala
+++ b/src/library/scala/math/BigInt.scala
@@ -124,7 +124,7 @@ class BigInt(val bigInteger: BigInteger) extends ScalaNumber with ScalaNumericCo
override def equals(that: Any): Boolean = that match {
case that: BigInt => this equals that
case that: BigDecimal => that.toBigIntExact exists (this equals _)
- case x => unifiedPrimitiveEquals(x)
+ case x => (this <= BigInt.MaxLong && this >= BigInt.MinLong) && unifiedPrimitiveEquals(x)
}
protected[math] def isWhole = true
diff --git a/src/library/scala/math/ScalaNumericConversions.scala b/src/library/scala/math/ScalaNumericConversions.scala
index d983595c17..2e754c2584 100644
--- a/src/library/scala/math/ScalaNumericConversions.scala
+++ b/src/library/scala/math/ScalaNumericConversions.scala
@@ -33,15 +33,28 @@ trait ScalaNumericConversions extends ScalaNumber {
else lv.hashCode
}
+ /** Should only be called after all known non-primitive
+ * types have been excluded. This method won't dispatch
+ * anywhere else after checking against the primitives
+ * to avoid infinite recursion between equals and this on
+ * unknown "Number" variants.
+ *
+ * Additionally, this should only be called if the numeric
+ * type is happy to be converted to Long, Float, and Double.
+ * If for instance a BigInt much larger than the Long range is
+ * sent here, it will claim equality with whatever Long is left
+ * in its lower 64 bits. Or a BigDecimal with more precision
+ * than Double can hold: same thing. There's no way given the
+ * interface available here to prevent this error.
+ */
protected def unifiedPrimitiveEquals(x: Any) = x match {
case x: Char => isValidChar && (toInt == x.toInt)
case x: Byte => isValidByte && (toByte == x)
case x: Short => isValidShort && (toShort == x)
case x: Int => isValidInt && (toInt == x)
- case x: Long => toLong == x // XXX
- case x: Float => toFloat == x // XXX
- case x: Double => toDouble == x // XXX
- case x: Number => this equals x
+ case x: Long => toLong == x
+ case x: Float => toFloat == x
+ case x: Double => toDouble == x
case _ => false
}
}
diff --git a/src/library/scala/runtime/AbstractFunction0.scala b/src/library/scala/runtime/AbstractFunction0.scala
index 2d7d613132..a9e564f6f8 100644
--- a/src/library/scala/runtime/AbstractFunction0.scala
+++ b/src/library/scala/runtime/AbstractFunction0.scala
@@ -6,31 +6,14 @@
** |/ **
\* */
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
package scala.runtime
-abstract class AbstractFunction0[@specialized(Unit, Int, Long, Double) +R] extends Function0[R] { }
-abstract class AbstractFunction1[@specialized(Int, Long, Double) -T1,
- @specialized(Unit, Int, Long, Double) +R] extends Function1[T1, R] { }
-abstract class AbstractFunction2[@specialized(Int, Long, Double) -T1,
- @specialized(Int, Long, Double) -T2,
- @specialized(Unit, Int, Long, Double) +R] extends Function2[T1, T2, R] { }
-abstract class AbstractFunction3[-T1, -T2, -T3, +R] extends Function3[T1, T2, T3, R] { }
-abstract class AbstractFunction4[-T1, -T2, -T3, -T4, +R] extends Function4[T1, T2, T3, T4, R] { }
-abstract class AbstractFunction5[-T1, -T2, -T3, -T4, -T5, +R] extends Function5[T1, T2, T3, T4, T5, R] { }
-abstract class AbstractFunction6[-T1, -T2, -T3, -T4, -T5, -T6, +R] extends Function6[T1, T2, T3, T4, T5, T6, R] { }
-abstract class AbstractFunction7[-T1, -T2, -T3, -T4, -T5, -T6, -T7, +R] extends Function7[T1, T2, T3, T4, T5, T6, T7, R] { }
-abstract class AbstractFunction8[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, +R] extends Function8[T1, T2, T3, T4, T5, T6, T7, T8, R] { }
-abstract class AbstractFunction9[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, +R] extends Function9[T1, T2, T3, T4, T5, T6, T7, T8, T9, R] { }
-abstract class AbstractFunction10[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, +R] extends Function10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R] { }
-abstract class AbstractFunction11[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, +R] extends Function11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R] { }
-abstract class AbstractFunction12[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, +R] extends Function12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R] { }
-abstract class AbstractFunction13[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, +R] extends Function13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R] { }
-abstract class AbstractFunction14[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, +R] extends Function14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R] { }
-abstract class AbstractFunction15[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, +R] extends Function15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R] { }
-abstract class AbstractFunction16[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, +R] extends Function16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R] { }
-abstract class AbstractFunction17[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, +R] extends Function17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, R] { }
-abstract class AbstractFunction18[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, +R] extends Function18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, R] { }
-abstract class AbstractFunction19[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, +R] extends Function19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, R] { }
-abstract class AbstractFunction20[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, +R] extends Function20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, R] { }
-abstract class AbstractFunction21[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, -T21, +R] extends Function21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, R] { }
-abstract class AbstractFunction22[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, -T21, -T22, +R] extends Function22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, R] { }
+
+
+abstract class AbstractFunction0[@specialized +R] extends Function0[R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction1.scala b/src/library/scala/runtime/AbstractFunction1.scala
new file mode 100644
index 0000000000..0a8a754236
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction1.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction1[@specialized(Int, Long, Double) -T1, @specialized(Unit, Boolean, Int, Long, Double) +R] extends Function1[T1, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction10.scala b/src/library/scala/runtime/AbstractFunction10.scala
new file mode 100644
index 0000000000..0830054e1a
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction10.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction10[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, +R] extends Function10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction11.scala b/src/library/scala/runtime/AbstractFunction11.scala
new file mode 100644
index 0000000000..6ee68126d5
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction11.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction11[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, +R] extends Function11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction12.scala b/src/library/scala/runtime/AbstractFunction12.scala
new file mode 100644
index 0000000000..cda522dd37
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction12.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction12[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, +R] extends Function12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction13.scala b/src/library/scala/runtime/AbstractFunction13.scala
new file mode 100644
index 0000000000..016bcd4a31
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction13.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction13[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, +R] extends Function13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction14.scala b/src/library/scala/runtime/AbstractFunction14.scala
new file mode 100644
index 0000000000..fc97bc8936
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction14.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction14[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, +R] extends Function14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction15.scala b/src/library/scala/runtime/AbstractFunction15.scala
new file mode 100644
index 0000000000..9dc7a75b36
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction15.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction15[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, +R] extends Function15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction16.scala b/src/library/scala/runtime/AbstractFunction16.scala
new file mode 100644
index 0000000000..3f8f19621a
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction16.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction16[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, +R] extends Function16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction17.scala b/src/library/scala/runtime/AbstractFunction17.scala
new file mode 100644
index 0000000000..1b8ea58c56
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction17.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction17[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, +R] extends Function17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction18.scala b/src/library/scala/runtime/AbstractFunction18.scala
new file mode 100644
index 0000000000..63aa6cf8d1
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction18.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction18[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, +R] extends Function18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction19.scala b/src/library/scala/runtime/AbstractFunction19.scala
new file mode 100644
index 0000000000..7a511ddd6e
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction19.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction19[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, +R] extends Function19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction2.scala b/src/library/scala/runtime/AbstractFunction2.scala
new file mode 100644
index 0000000000..0f75b2af87
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction2.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction2[@specialized(Int, Long, Double) -T1, @specialized(Int, Long, Double) -T2, @specialized(Unit, Boolean, Int, Long, Double) +R] extends Function2[T1, T2, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction20.scala b/src/library/scala/runtime/AbstractFunction20.scala
new file mode 100644
index 0000000000..6afb329503
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction20.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction20[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, +R] extends Function20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction21.scala b/src/library/scala/runtime/AbstractFunction21.scala
new file mode 100644
index 0000000000..8996f2f397
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction21.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction21[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, -T21, +R] extends Function21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction22.scala b/src/library/scala/runtime/AbstractFunction22.scala
new file mode 100644
index 0000000000..8b33534291
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction22.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction22[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, -T10, -T11, -T12, -T13, -T14, -T15, -T16, -T17, -T18, -T19, -T20, -T21, -T22, +R] extends Function22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction3.scala b/src/library/scala/runtime/AbstractFunction3.scala
new file mode 100644
index 0000000000..463d3d8a1d
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction3.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction3[-T1, -T2, -T3, +R] extends Function3[T1, T2, T3, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction4.scala b/src/library/scala/runtime/AbstractFunction4.scala
new file mode 100644
index 0000000000..f7bc7d12a9
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction4.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction4[-T1, -T2, -T3, -T4, +R] extends Function4[T1, T2, T3, T4, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction5.scala b/src/library/scala/runtime/AbstractFunction5.scala
new file mode 100644
index 0000000000..6642bb75bb
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction5.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction5[-T1, -T2, -T3, -T4, -T5, +R] extends Function5[T1, T2, T3, T4, T5, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction6.scala b/src/library/scala/runtime/AbstractFunction6.scala
new file mode 100644
index 0000000000..70944947e7
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction6.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction6[-T1, -T2, -T3, -T4, -T5, -T6, +R] extends Function6[T1, T2, T3, T4, T5, T6, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction7.scala b/src/library/scala/runtime/AbstractFunction7.scala
new file mode 100644
index 0000000000..ba4a35f743
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction7.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction7[-T1, -T2, -T3, -T4, -T5, -T6, -T7, +R] extends Function7[T1, T2, T3, T4, T5, T6, T7, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction8.scala b/src/library/scala/runtime/AbstractFunction8.scala
new file mode 100644
index 0000000000..c3a0f0f9e3
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction8.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction8[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, +R] extends Function8[T1, T2, T3, T4, T5, T6, T7, T8, R] {
+
+}
diff --git a/src/library/scala/runtime/AbstractFunction9.scala b/src/library/scala/runtime/AbstractFunction9.scala
new file mode 100644
index 0000000000..7e0541e246
--- /dev/null
+++ b/src/library/scala/runtime/AbstractFunction9.scala
@@ -0,0 +1,19 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+
+// $Id$
+
+// generated by genprod on Mon Apr 12 15:28:18 CEST 2010
+
+package scala.runtime
+
+
+
+abstract class AbstractFunction9[-T1, -T2, -T3, -T4, -T5, -T6, -T7, -T8, -T9, +R] extends Function9[T1, T2, T3, T4, T5, T6, T7, T8, T9, R] {
+
+}
diff --git a/src/library/scala/util/Random.scala b/src/library/scala/util/Random.scala
index ffa248d638..cd9d5eed0e 100644
--- a/src/library/scala/util/Random.scala
+++ b/src/library/scala/util/Random.scala
@@ -89,14 +89,12 @@ class Random(val self: java.util.Random) {
List.fill(length)(safeChar()).mkString
}
- /** Returns a pseudorandomly generated String drawing upon
- * only ASCII characters between 33 and 126.
+ /** Returns the next pseudorandom, uniformly distributed value
+ * from the ASCII range 33-126.
*/
- def nextASCIIString(length: Int) = {
- val (min, max) = (33, 126)
- def nextDigit = nextInt(max - min) + min
-
- new String(Array.fill(length)(nextDigit.toByte), "ASCII")
+ def nextPrintableChar(): Char = {
+ val (low, high) = (33, 126)
+ (self.nextInt(high - low) + low).toChar
}
def setSeed(seed: Long) { self.setSeed(seed) }
@@ -111,6 +109,17 @@ object Random extends Random {
import collection.mutable.ArrayBuffer
import collection.generic.CanBuildFrom
+ /** Returns a Stream of pseudorandomly chosen alphanumeric characters,
+ * equally chosen from A-Z, a-z, and 0-9.
+ *
+ * @since 2.8
+ */
+ def alphanumeric: Stream[Char] = {
+ def isAlphaNum(c: Char) = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')
+
+ Stream continually nextPrintableChar filter isAlphaNum
+ }
+
/** Returns a new collection of the same type in a randomly chosen order.
*
* @param coll the TraversableOnce to shuffle