Permalink
Browse files

Fixing an incomplete svnmerge; second, merge ag...

Fixing an incomplete svnmerge; second, merge again from trunk.
  • Loading branch information...
1 parent e5ad9c5 commit 517acfdd56af4562d3c4f2963f656f2834ca23e2 Antonio Cunei committed Apr 20, 2011
Showing with 5,429 additions and 3,320 deletions.
  1. +3 −1 build.xml
  2. +1 −1 lib/jline.jar.desired.sha1
  3. +1 −1 lib/msil.jar.desired.sha1
  4. +1 −1 lib/scala-compiler.jar.desired.sha1
  5. +1 −1 lib/scala-library-src.jar.desired.sha1
  6. +1 −1 lib/scala-library.jar.desired.sha1
  7. +1 −1 src/actors/scala/actors/Debug.scala
  8. +3 −3 src/actors/scala/actors/Future.scala
  9. +4 −4 src/actors/scala/actors/IScheduler.scala
  10. +2 −2 src/actors/scala/actors/MessageQueue.scala
  11. +1 −1 src/actors/scala/actors/Reaction.scala
  12. +1 −1 src/actors/scala/actors/Scheduler.scala
  13. +6 −6 src/actors/scala/actors/package.scala
  14. +2 −2 src/actors/scala/actors/remote/RemoteActor.scala
  15. +3 −2 src/actors/scala/actors/remote/TcpService.scala
  16. +1 −1 src/actors/scala/actors/scheduler/TerminationMonitor.scala
  17. +3 −3 src/build/genprod.scala
  18. +1 −1 src/compiler/scala/tools/cmd/gen/AnyVals.scala
  19. +6 −1 src/compiler/scala/tools/nsc/CompileSocket.scala
  20. +12 −7 src/compiler/scala/tools/nsc/ast/DocComments.scala
  21. +3 −2 src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
  22. +5 −0 src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
  23. +2 −2 src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
  24. +40 −24 src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
  25. +1 −1 src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
  26. +2 −2 src/compiler/scala/tools/nsc/doc/Index.scala
  27. +31 −2 src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala
  28. +5 −13 src/compiler/scala/tools/nsc/doc/html/page/Index.scala
  29. +29 −13 src/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala
  30. +30 −23 src/compiler/scala/tools/nsc/doc/html/page/Template.scala
  31. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/constructorsbg.gif
  32. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/defbg-blue.gif
  33. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/defbg-green.gif
  34. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filter_box_left.png
  35. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filter_box_left2.gif
  36. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filter_box_right.png
  37. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterbg.gif
  38. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterboxbarbg.gif
  39. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterboxbarbg.png
  40. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterboxbg.gif
  41. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/fullcommenttopbg.gif
  42. +128 −25 src/compiler/scala/tools/nsc/doc/html/resource/lib/index.css
  43. +70 −9 src/compiler/scala/tools/nsc/doc/html/resource/lib/index.js
  44. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/navigation-li-a.png
  45. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/navigation-li.png
  46. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/ownderbg2.gif
  47. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/ownerbg.gif
  48. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/ownerbg2.gif
  49. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/packagesbg.gif
  50. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/selected-right.png
  51. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/selected.png
  52. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/selected2-right.png
  53. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/selected2.png
  54. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/signaturebg.gif
  55. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/signaturebg2.gif
  56. +184 −45 src/compiler/scala/tools/nsc/doc/html/resource/lib/template.css
  57. +7 −1 src/compiler/scala/tools/nsc/doc/html/resource/lib/template.js
  58. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/typebg.gif
  59. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/unselected.png
  60. BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/valuemembersbg.gif
  61. +8 −9 src/compiler/scala/tools/nsc/doc/model/IndexModelFactory.scala
  62. +1 −1 src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
  63. +4 −3 src/compiler/scala/tools/nsc/interactive/Global.scala
  64. +3 −1 src/compiler/scala/tools/nsc/plugins/Plugin.scala
  65. +2 −1 src/compiler/scala/tools/nsc/symtab/Symbols.scala
  66. +1 −1 src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
  67. +1 −1 src/compiler/scala/tools/nsc/transform/CleanUp.scala
  68. +19 −4 src/compiler/scala/tools/nsc/transform/Erasure.scala
  69. +37 −13 src/compiler/scala/tools/nsc/transform/LazyVals.scala
  70. +2 −3 src/compiler/scala/tools/nsc/transform/Mixin.scala
  71. +2 −2 src/compiler/scala/tools/nsc/typechecker/Contexts.scala
  72. +135 −9 src/compiler/scala/tools/nsc/typechecker/Implicits.scala
  73. +22 −12 src/compiler/scala/tools/nsc/typechecker/Infer.scala
  74. +15 −1 src/compiler/scala/tools/nsc/typechecker/Namers.scala
  75. +45 −29 src/compiler/scala/tools/nsc/typechecker/Typers.scala
  76. +2 −0 src/compiler/scala/tools/nsc/util/Statistics.scala
  77. +0 −273 src/jline/pom.xml
  78. +2 −2 src/jline/project/build.properties
  79. +1 −1 src/jline/project/plugins/project/build.properties
  80. +9 −1 src/jline/src/main/java/scala/tools/jline/TerminalSupport.java
  81. +14 −1 src/jline/src/main/java/scala/tools/jline/UnixTerminal.java
  82. +23 −23 src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java
  83. +6 −0 src/jline/src/main/java/scala/tools/jline/console/Key.java
  84. +3 −0 src/jline/src/main/resources/scala/tools/jline/keybindings.properties
  85. +62 −0 src/jline/src/main/resources/scala/tools/jline/macbindings.properties
  86. +1 −1 src/library/scala/Application.scala
  87. +14 −14 src/library/scala/Array.scala
  88. +1 −1 src/library/scala/Cell.scala
  89. +1 −1 src/library/scala/CountedIterator.scala
  90. +1 −1 src/library/scala/Double.scala
  91. +3 −3 src/library/scala/Either.scala
  92. +1 −1 src/library/scala/Float.scala
  93. +4 −4 src/library/scala/Function.scala
  94. +1 −1 src/library/scala/Function0.scala
  95. +1 −1 src/library/scala/Function10.scala
  96. +1 −1 src/library/scala/Function11.scala
  97. +1 −1 src/library/scala/Function12.scala
  98. +1 −1 src/library/scala/Function13.scala
  99. +1 −1 src/library/scala/Function14.scala
  100. +1 −1 src/library/scala/Function15.scala
  101. +1 −1 src/library/scala/Function16.scala
  102. +1 −1 src/library/scala/Function17.scala
  103. +1 −1 src/library/scala/Function18.scala
  104. +1 −1 src/library/scala/Function19.scala
  105. +1 −1 src/library/scala/Function2.scala
  106. +1 −1 src/library/scala/Function20.scala
  107. +1 −1 src/library/scala/Function21.scala
  108. +1 −1 src/library/scala/Function22.scala
  109. +1 −1 src/library/scala/Function3.scala
  110. +1 −1 src/library/scala/Function4.scala
  111. +1 −1 src/library/scala/Function5.scala
  112. +1 −1 src/library/scala/Function6.scala
  113. +1 −1 src/library/scala/Function7.scala
  114. +1 −1 src/library/scala/Function8.scala
  115. +1 −1 src/library/scala/Function9.scala
  116. +23 −23 src/library/scala/Math.scala
  117. +1 −1 src/library/scala/NotDefinedError.scala
  118. +5 −5 src/library/scala/Predef.scala
  119. +1 −1 src/library/scala/Product.scala
  120. +1 −1 src/library/scala/Tuple2.scala
  121. +1 −1 src/library/scala/Tuple3.scala
  122. +1 −1 src/library/scala/annotation/serializable.scala
  123. +1 −2 src/library/scala/collection/CustomParallelizable.scala
  124. +36 −0 src/library/scala/collection/GenIterable.scala
  125. +143 −0 src/library/scala/collection/GenIterableLike.scala
  126. +18 −0 src/library/scala/collection/GenIterableView.scala
  127. +83 −0 src/library/scala/collection/GenIterableViewLike.scala
  128. +36 −0 src/library/scala/collection/GenMap.scala
  129. +64 −0 src/library/scala/collection/GenMapLike.scala
  130. +36 −0 src/library/scala/collection/GenSeq.scala
  131. +410 −0 src/library/scala/collection/GenSeqLike.scala
  132. +18 −0 src/library/scala/collection/GenSeqView.scala
  133. +164 −0 src/library/scala/collection/GenSeqViewLike.scala
  134. +37 −0 src/library/scala/collection/GenSet.scala
  135. +131 −0 src/library/scala/collection/GenSetLike.scala
  136. +39 −0 src/library/scala/collection/GenTraversable.scala
  137. +333 −0 src/library/scala/collection/GenTraversableLike.scala
  138. +510 −0 src/library/scala/collection/GenTraversableOnce.scala
  139. +18 −0 src/library/scala/collection/GenTraversableView.scala
  140. +141 −0 src/library/scala/collection/GenTraversableViewLike.scala
  141. +4 −4 src/library/scala/collection/IndexedSeqOptimized.scala
  142. +8 −5 src/library/scala/collection/Iterable.scala
  143. +10 −107 src/library/scala/collection/IterableLike.scala
  144. +3 −3 src/library/scala/collection/IterableProxyLike.scala
  145. +1 −1 src/library/scala/collection/IterableView.scala
  146. +32 −60 src/library/scala/collection/IterableViewLike.scala
  147. +17 −15 src/library/scala/collection/Iterator.scala
  148. +34 −34 src/library/scala/collection/JavaConversions.scala
  149. +11 −11 src/library/scala/collection/JavaConverters.scala
  150. +1 −1 src/library/scala/collection/LinearSeqOptimized.scala
  151. +2 −2 src/library/scala/collection/Map.scala
  152. +7 −36 src/library/scala/collection/MapLike.scala
  153. +1 −1 src/library/scala/collection/MapProxyLike.scala
  154. +2 −2 src/library/scala/collection/Parallel.scala
  155. +4 −2 src/library/scala/collection/Parallelizable.scala
  156. +3 −2 src/library/scala/collection/Seq.scala
  157. +26 −305 src/library/scala/collection/SeqLike.scala
  158. +13 −13 src/library/scala/collection/SeqProxyLike.scala
  159. +1 −1 src/library/scala/collection/SeqView.scala
  160. +26 −134 src/library/scala/collection/SeqViewLike.scala
  161. +4 −4 src/library/scala/collection/Set.scala
  162. +9 −85 src/library/scala/collection/SetLike.scala
  163. +7 −7 src/library/scala/collection/SetProxyLike.scala
  164. +1 −1 src/library/scala/collection/SortedSetLike.scala
  165. +9 −3 src/library/scala/collection/Traversable.scala
  166. +15 −202 src/library/scala/collection/TraversableLike.scala
  167. +32 −325 src/library/scala/collection/TraversableOnce.scala
  168. +2 −2 src/library/scala/collection/TraversableProxyLike.scala
  169. +3 −2 src/library/scala/collection/TraversableView.scala
  170. +30 −109 src/library/scala/collection/TraversableViewLike.scala
  171. +2 −2 src/library/scala/collection/generic/Addable.scala
  172. +9 −0 src/library/scala/collection/generic/CanCombineFrom.scala
  173. +10 −1 src/library/scala/collection/generic/FilterMonadic.scala
  174. +1 −1 src/library/scala/collection/generic/GenericCompanion.scala
  175. +9 −0 src/library/scala/collection/generic/GenericParCompanion.scala
  176. +15 −1 src/library/scala/collection/generic/GenericParTemplate.scala
  177. +1 −1 src/library/scala/collection/generic/GenericSetTemplate.scala
  178. +1 −1 src/library/scala/collection/generic/GenericTraversableTemplate.scala
  179. +9 −0 src/library/scala/collection/generic/HasNewCombiner.scala
  180. +1 −1 src/library/scala/collection/generic/IterableForwarder.scala
  181. +3 −3 src/library/scala/collection/generic/MapFactory.scala
  182. +9 −2 src/library/scala/collection/generic/ParFactory.scala
  183. +9 −0 src/library/scala/collection/generic/ParMapFactory.scala
  184. +9 −0 src/library/scala/collection/generic/ParSetFactory.scala
  185. +1 −1 src/library/scala/collection/generic/SeqFactory.scala
  186. +9 −9 src/library/scala/collection/generic/SeqForwarder.scala
  187. +1 −1 src/library/scala/collection/generic/SetFactory.scala
  188. +8 −0 src/library/scala/collection/generic/Signalling.scala
  189. +1 −1 src/library/scala/collection/generic/Subtractable.scala
  190. +1 −1 src/library/scala/collection/generic/TraversableFactory.scala
  191. +37 −0 src/library/scala/collection/immutable/GenIterable.scala.disabled
  192. +36 −0 src/library/scala/collection/immutable/GenMap.scala.disabled
  193. +49 −0 src/library/scala/collection/immutable/GenSeq.scala.disabled
  194. +43 −0 src/library/scala/collection/immutable/GenSet.scala.disabled
  195. +41 −0 src/library/scala/collection/immutable/GenTraversable.scala.disabled
  196. +13 −34 src/library/scala/collection/immutable/HashMap.scala
  197. +10 −30 src/library/scala/collection/immutable/HashSet.scala
  198. +4 −1 src/library/scala/collection/immutable/Iterable.scala
  199. +27 −27 src/library/scala/collection/immutable/List.scala
  200. +2 −2 src/library/scala/collection/immutable/ListMap.scala
  201. +2 −2 src/library/scala/collection/immutable/ListSet.scala
  202. +2 −1 src/library/scala/collection/immutable/Map.scala
  203. +2 −2 src/library/scala/collection/immutable/MapLike.scala
  204. +1 −1 src/library/scala/collection/immutable/MapProxy.scala
  205. +3 −3 src/library/scala/collection/immutable/Queue.scala
  206. +1 −1 src/library/scala/collection/immutable/Range.scala
  207. +5 −4 src/library/scala/collection/immutable/RedBlack.scala
  208. +4 −2 src/library/scala/collection/immutable/Seq.scala
  209. +5 −3 src/library/scala/collection/immutable/Set.scala
  210. +2 −2 src/library/scala/collection/immutable/SortedMap.scala
  211. +1 −1 src/library/scala/collection/immutable/Stack.scala
  212. +12 −11 src/library/scala/collection/immutable/Stream.scala
  213. +6 −6 src/library/scala/collection/immutable/StreamViewLike.scala
  214. +2 −0 src/library/scala/collection/immutable/StringOps.scala
  215. +2 −0 src/library/scala/collection/immutable/Traversable.scala
  216. +2 −2 src/library/scala/collection/immutable/TreeMap.scala
  217. +219 −0 src/library/scala/collection/immutable/TrieIterator.scala
  218. +0 −184 src/library/scala/collection/immutable/TrieIteratorBase.scala
  219. +5 −5 src/library/scala/collection/immutable/Vector.scala
  220. +3 −3 src/library/scala/collection/interfaces/IterableMethods.scala
  221. +1 −1 src/library/scala/collection/interfaces/MapMethods.scala
  222. +1 −1 src/library/scala/collection/interfaces/SeqMethods.scala
  223. +2 −2 src/library/scala/collection/interfaces/TraversableMethods.scala
  224. +1 −1 src/library/scala/collection/mutable/AddingBuilder.scala
  225. +4 −4 src/library/scala/collection/mutable/ArrayLike.scala
  226. +3 −0 src/library/scala/collection/mutable/ArrayOps.scala
  227. +1 −1 src/library/scala/collection/mutable/ArraySeq.scala
  228. +1 −1 src/library/scala/collection/mutable/ArrayStack.scala
  229. +5 −5 src/library/scala/collection/mutable/BufferLike.scala
  230. +3 −3 src/library/scala/collection/mutable/BufferProxy.scala
  231. +1 −0 src/library/scala/collection/mutable/Cloneable.scala
  232. +37 −0 src/library/scala/collection/mutable/GenIterable.scala.disabled
  233. +40 −0 src/library/scala/collection/mutable/GenMap.scala.disabled
  234. +44 −0 src/library/scala/collection/mutable/GenSeq.scala.disabled
  235. +46 −0 src/library/scala/collection/mutable/GenSet.scala.disabled
  236. +38 −0 src/library/scala/collection/mutable/GenTraversable.scala.disabled
  237. +1 −1 src/library/scala/collection/mutable/HashTable.scala
  238. +1 −1 src/library/scala/collection/mutable/ImmutableMapAdaptor.scala
  239. +2 −1 src/library/scala/collection/mutable/ImmutableSetAdaptor.scala
  240. +4 −1 src/library/scala/collection/mutable/Iterable.scala
  241. +1 −0 src/library/scala/collection/mutable/Map.scala
  242. +1 −1 src/library/scala/collection/mutable/MapBuilder.scala
  243. +5 −5 src/library/scala/collection/mutable/MapLike.scala
  244. +1 −1 src/library/scala/collection/mutable/MapProxy.scala
  245. +1 −1 src/library/scala/collection/mutable/MultiMap.scala
  246. +1 −1 src/library/scala/collection/mutable/MutableList.scala
  247. +11 −3 src/library/scala/collection/mutable/PriorityQueue.scala
  248. +8 −0 src/library/scala/collection/mutable/PriorityQueueProxy.scala
  249. +1 −1 src/library/scala/collection/mutable/ResizableArray.scala
  250. +4 −3 src/library/scala/collection/mutable/Seq.scala
  251. +2 −1 src/library/scala/collection/mutable/SeqLike.scala
  252. +1 −0 src/library/scala/collection/mutable/Set.scala
  253. +3 −3 src/library/scala/collection/mutable/SetLike.scala
  254. +1 −1 src/library/scala/collection/mutable/Stack.scala
  255. +2 −1 src/library/scala/collection/mutable/StackProxy.scala
  256. +7 −7 src/library/scala/collection/mutable/StringBuilder.scala
  257. +1 −1 src/library/scala/collection/mutable/SynchronizedBuffer.scala
  258. +8 −0 src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala
  259. +2 −2 src/library/scala/collection/mutable/SynchronizedSet.scala
  260. +2 −0 src/library/scala/collection/mutable/Traversable.scala
  261. +3 −2 src/library/scala/collection/parallel/Combiner.scala
  262. +9 −3 src/library/scala/collection/parallel/ParIterable.scala
  263. +223 −183 src/library/scala/collection/parallel/ParIterableLike.scala
  264. +6 −3 src/library/scala/collection/parallel/ParIterableView.scala
  265. +47 −33 src/library/scala/collection/parallel/ParIterableViewLike.scala
  266. +5 −2 src/library/scala/collection/parallel/ParMap.scala
  267. +10 −5 src/library/scala/collection/parallel/ParMapLike.scala
  268. +8 −5 src/library/scala/collection/parallel/ParSeq.scala
  269. +97 −73 src/library/scala/collection/parallel/ParSeqLike.scala
  270. +3 −3 src/library/scala/collection/parallel/ParSeqView.scala
  271. +43 −36 src/library/scala/collection/parallel/ParSeqViewLike.scala
  272. +4 −17 src/library/scala/collection/parallel/ParSet.scala
  273. +11 −35 src/library/scala/collection/parallel/ParSetLike.scala
  274. +64 −0 src/library/scala/collection/parallel/PreciseSplitter.scala
  275. +71 −70 src/library/scala/collection/parallel/RemainsIterator.scala
  276. +0 −51 src/library/scala/collection/parallel/Splitter.scala
  277. +1 −1 src/library/scala/collection/parallel/Tasks.scala
  278. +10 −23 src/library/scala/collection/parallel/immutable/ParHashMap.scala
  279. +10 −39 src/library/scala/collection/parallel/immutable/ParHashSet.scala
  280. +3 −2 src/library/scala/collection/parallel/immutable/ParIterable.scala
  281. +3 −1 src/library/scala/collection/parallel/immutable/ParMap.scala
  282. +2 −2 src/library/scala/collection/parallel/immutable/ParRange.scala
  283. +5 −5 src/library/scala/collection/parallel/immutable/ParSeq.scala
  284. +2 −1 src/library/scala/collection/parallel/immutable/ParSet.scala
  285. +7 −8 src/library/scala/collection/parallel/immutable/ParVector.scala
  286. +2 −2 src/library/scala/collection/parallel/immutable/package.scala
  287. +1 −2 src/library/scala/collection/parallel/mutable/LazyCombiner.scala
  288. +9 −9 src/library/scala/collection/parallel/mutable/ParArray.scala
  289. +3 −3 src/library/scala/collection/parallel/mutable/ParFlatHashTable.scala
  290. +7 −7 src/library/scala/collection/parallel/mutable/ParHashMap.scala
  291. +6 −7 src/library/scala/collection/parallel/mutable/ParHashSet.scala
  292. +5 −5 src/library/scala/collection/parallel/mutable/ParHashTable.scala
  293. +6 −4 src/library/scala/collection/parallel/mutable/ParIterable.scala
  294. +5 −1 src/library/scala/collection/parallel/mutable/ParMap.scala
  295. +15 −4 src/library/scala/collection/parallel/mutable/ParMapLike.scala
  296. +6 −5 src/library/scala/collection/parallel/mutable/ParSeq.scala
  297. +6 −3 src/library/scala/collection/parallel/mutable/ParSet.scala
  298. +12 −7 src/library/scala/collection/parallel/mutable/ParSetLike.scala
  299. +111 −0 src/library/scala/collection/parallel/mutable/ResizableParArrayCombiner.scala
  300. +12 −94 src/library/scala/collection/parallel/mutable/UnrolledParArrayCombiner.scala
Sorry, we could not display the entire diff because too many files (366) changed.
View
4 build.xml
@@ -375,7 +375,7 @@ LOCAL REFERENCE BUILD (LOCKER)
<include name="**/*.properties"/>
<include name="**/*.swf"/>
<include name="**/*.png"/>
-
+ <include name="**/*.gif"/>
</fileset>
</copy>
<touch file="${build-locker.dir}/compiler.complete" verbose="no"/>
@@ -590,6 +590,7 @@ QUICK BUILD (QUICK)
<include name="**/*.properties"/>
<include name="**/*.swf"/>
<include name="**/*.png"/>
+ <include name="**/*.gif"/>
</fileset>
</copy>
<touch file="${build-quick.dir}/compiler.complete" verbose="no"/>
@@ -1101,6 +1102,7 @@ BOOTSTRAPPING BUILD (STRAP)
<include name="**/*.properties"/>
<include name="**/*.swf"/>
<include name="**/*.png"/>
+ <include name="**/*.gif"/>
</fileset>
</copy>
<touch file="${build-strap.dir}/compiler.complete" verbose="no"/>
View
2 lib/jline.jar.desired.sha1
@@ -1 +1 @@
-32f4eb98f8135b0d565e4e7aa72550f34fc4c133 ?jline.jar
+115e0f58e2ffa089c083c466b0161216dd4c916e ?jline.jar
View
2 lib/msil.jar.desired.sha1
@@ -1 +1 @@
-411bfee5f3b2b6bae5f6ac06f84b4f4624370492 ?msil.jar
+58f64cd00399c724e7d526e5bdcbce3e2b79f78b ?msil.jar
View
2 lib/scala-compiler.jar.desired.sha1
@@ -1 +1 @@
-4b2f54712dab89071f1909f07367673635beffda ?scala-compiler.jar
+e0382dfa2712e567b49f5826ac50eae59cf03cb3 ?scala-compiler.jar
View
2 lib/scala-library-src.jar.desired.sha1
@@ -1 +1 @@
-f015b1389419b997796a3a9814bedac6343f108e ?scala-library-src.jar
+5ad90238f4fc57e8147fb69496c68d02ca073ca0 ?scala-library-src.jar
View
2 lib/scala-library.jar.desired.sha1
@@ -1 +1 @@
-af0438e6911f357a2af0d068482baa1f526dbac0 ?scala-library.jar
+678ada3690dd149c2bd302407e315a74de0bfd42 ?scala-library.jar
View
2 src/actors/scala/actors/Debug.scala
@@ -43,5 +43,5 @@ private[actors] class Logger(tag: String) {
if (lev > 0) b
}
-@deprecated("this class is going to be removed in a future release")
+@deprecated("this class is going to be removed in a future release", "2.7.7")
class Debug(tag: String) extends Logger(tag) {}
View
6 src/actors/scala/actors/Future.scala
@@ -27,12 +27,12 @@ abstract class Future[+T] extends Responder[T] with Function0[T] {
private[actors] var fvalue: Option[Any] = None
private[actors] def fvalueTyped = fvalue.get.asInstanceOf[T]
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.8.0")
def ch: InputChannel[Any] = inputChannel
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.8.0")
protected def value: Option[Any] = fvalue
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.8.0")
protected def value_=(x: Option[Any]) { fvalue = x }
/** Tests whether the future's result is available.
View
8 src/actors/scala/actors/IScheduler.scala
@@ -67,16 +67,16 @@ trait IScheduler {
def managedBlock(blocker: scala.concurrent.ManagedBlocker): Unit
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.7.7")
def tick(a: Actor) {}
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.7.7")
def onLockup(handler: () => Unit) {}
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.7.7")
def onLockup(millis: Int)(handler: () => Unit) {}
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.7.7")
def printActorDump {}
}
View
4 src/actors/scala/actors/MessageQueue.scala
@@ -16,7 +16,7 @@ package scala.actors
* @author Philipp Haller
*/
@SerialVersionUID(7124278808020037465L)
-@deprecated("this class is going to be removed in a future release")
+@deprecated("this class is going to be removed in a future release", "2.7.7")
class MessageQueueElement(msg: Any, session: OutputChannel[Any], next: MessageQueueElement) extends MQueueElement[Any](msg, session, next) with Serializable {
def this() = this(null, null, null)
def this(msg: Any, session: OutputChannel[Any]) = this(msg, session, null)
@@ -36,7 +36,7 @@ private[actors] class MQueueElement[Msg >: Null](val msg: Msg, val session: Outp
* @author Philipp Haller
*/
@SerialVersionUID(2168935872884095767L)
-@deprecated("this class is going to be removed in a future release")
+@deprecated("this class is going to be removed in a future release", "2.7.7")
class MessageQueue(label: String) extends MQueue[Any](label) with Serializable
private[actors] class MQueue[Msg >: Null](protected val label: String) {
View
2 src/actors/scala/actors/Reaction.scala
@@ -24,7 +24,7 @@ private[actors] class KillActorControl extends ControlThrowable
*
* @author Philipp Haller
*/
-@deprecated("This class will be removed in a future release")
+@deprecated("This class will be removed in a future release", "2.7.7")
class Reaction(a: Actor, f: PartialFunction[Any, Any], msg: Any)
extends ActorTask(a, if (f == null) (() => a.act()) else null, f, msg) {
View
2 src/actors/scala/actors/Scheduler.scala
@@ -40,7 +40,7 @@ object Scheduler extends DelegatingScheduler {
/* Only <code>ForkJoinScheduler</code> implements this method.
*/
- @deprecated("snapshot will be removed")
+ @deprecated("snapshot will be removed", "2.8.0")
def snapshot() {
if (sched.isInstanceOf[ForkJoinScheduler]) {
sched.asInstanceOf[ForkJoinScheduler].snapshot()
View
12 src/actors/scala/actors/package.scala
@@ -20,26 +20,26 @@ package object actors {
// type of Reactors tracked by termination detector
private[actors] type TrackedReactor = Reactor[A] forSome { type A >: Null }
- @deprecated("use scheduler.ForkJoinScheduler instead")
+ @deprecated("use scheduler.ForkJoinScheduler instead", "2.8.0")
type FJTaskScheduler2 = scala.actors.scheduler.ForkJoinScheduler
- @deprecated("use scheduler.ForkJoinScheduler instead")
+ @deprecated("use scheduler.ForkJoinScheduler instead", "2.8.0")
type TickedScheduler = scala.actors.scheduler.ForkJoinScheduler
- @deprecated("use scheduler.ForkJoinScheduler instead")
+ @deprecated("use scheduler.ForkJoinScheduler instead", "2.8.0")
type WorkerThreadScheduler = scala.actors.scheduler.ForkJoinScheduler
- @deprecated("this class is going to be removed in a future release")
+ @deprecated("this class is going to be removed in a future release", "2.8.0")
type WorkerThread = java.lang.Thread
- @deprecated("use scheduler.SingleThreadedScheduler instead")
+ @deprecated("use scheduler.SingleThreadedScheduler instead", "2.8.0")
type SingleThreadedScheduler = scala.actors.scheduler.SingleThreadedScheduler
// This used to do a blind cast and throw a CCE after the package
// object was loaded. I have replaced with a variation that should work
// in whatever cases that was working but fail less exceptionally for
// those not intentionally using it.
- @deprecated("this value is going to be removed in a future release")
+ @deprecated("this value is going to be removed in a future release", "2.8.0")
val ActorGC = scala.actors.Scheduler.impl match {
case x: scala.actors.scheduler.ActorGC => x
case _ => null
View
4 src/actors/scala/actors/remote/RemoteActor.scala
@@ -81,7 +81,7 @@ object RemoteActor {
kern
}
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.8.0")
def createKernelOnPort(port: Int): NetKernel =
createNetKernelOnPort(port)
@@ -121,7 +121,7 @@ object RemoteActor {
private[remote] def someNetKernel: NetKernel =
kernels.valuesIterator.next
- @deprecated("this member is going to be removed in a future release")
+ @deprecated("this member is going to be removed in a future release", "2.8.0")
def someKernel: NetKernel =
someNetKernel
}
View
5 src/actors/scala/actors/remote/TcpService.scala
@@ -99,16 +99,17 @@ class TcpService(port: Int, cl: ClassLoader) extends Thread with Service {
// we are not connected, yet
try {
val newWorker = connect(node)
- newWorker transmit data
// any pending sends?
pendingSends.get(node) match {
case None =>
// do nothing
case Some(msgs) =>
- msgs foreach {newWorker transmit _}
+ msgs.reverse foreach {newWorker transmit _}
pendingSends -= node
}
+
+ newWorker transmit data
} catch {
case uhe: UnknownHostException =>
bufferMsg(uhe)
View
2 src/actors/scala/actors/scheduler/TerminationMonitor.scala
@@ -66,7 +66,7 @@ private[scheduler] trait TerminationMonitor {
}
/** Deprecated non-actor-private version */
- @deprecated("this method is going to be removed in a future release")
+ @deprecated("this method is going to be removed in a future release", "2.7.7")
def allTerminated: Boolean = allActorsTerminated
/** Checks for actors that have become garbage. */
View
6 src/build/genprod.scala
@@ -238,7 +238,7 @@ class Function(val i: Int) extends Group("Function") with Arity {
curryComment +
" def curried: %s => R = {\n %s\n }\n".format(
targs mkString " => ", body
- ) + """ @deprecated("Use 'curried' instead")""" + "\n def curry = curried\n"
+ ) + """ @deprecated("Use 'curried' instead", "2.8.0")""" + "\n def curry = curried\n"
}
override def moreMethods = curryMethod + tupleMethod
@@ -280,7 +280,7 @@ object TupleTwo extends Tuple(2)
*/
def swap: Tuple2[T2,T1] = Tuple2(_2, _1)
- @deprecated("Use `zipped` instead.")
+ @deprecated("Use `zipped` instead.", "2.9.0")
def zip[Repr1, El1, El2, To](implicit w1: T1 => TLike[El1, Repr1],
w2: T2 => Iterable[El2],
cbf1: CBF[Repr1, (El1, El2), To]): To = {
@@ -387,7 +387,7 @@ object TupleThree extends Tuple(3) {
override def imports = Tuple.zipImports
override def moreMethods = """
- @deprecated("Use `zipped` instead.")
+ @deprecated("Use `zipped` instead.", "2.9.0")
def zip[Repr1, El1, El2, El3, To](implicit w1: T1 => TLike[El1, Repr1],
w2: T2 => Iterable[El2],
w3: T3 => Iterable[El3],
View
2 src/compiler/scala/tools/cmd/gen/AnyVals.scala
@@ -206,7 +206,7 @@ final val NaN = @boxed@.NaN
final val PositiveInfinity = @boxed@.POSITIVE_INFINITY
final val NegativeInfinity = @boxed@.NEGATIVE_INFINITY
-@deprecated("use @name@.MinPositiveValue instead")
+@deprecated("use @name@.MinPositiveValue instead", "2.9.0")
final val Epsilon = MinPositiveValue
/** The negative number with the greatest (finite) absolute value which is representable
View
7 src/compiler/scala/tools/nsc/CompileSocket.scala
@@ -95,7 +95,12 @@ class CompileSocket extends CompileOutputCommon {
private def startNewServer(vmArgs: String) = {
val cmd = serverCommand(vmArgs split " " toSeq)
info("[Executing command: %s]" format cmd.mkString(" "))
- cmd.daemonized().run()
+
+ // Hiding inadequate daemonized implementation from public API for now
+ Process(cmd) match {
+ case x: ProcessBuilder.AbstractBuilder => x.daemonized().run()
+ case x => x.run()
+ }
}
/** The port identification file */
View
19 src/compiler/scala/tools/nsc/ast/DocComments.scala
@@ -328,13 +328,18 @@ trait DocComments { self: SymbolTable =>
pos withStart start1 withPoint start1 withEnd end1
}
- def defineVariables(sym: Symbol) {
- for (str <- defines) {
- val start = skipWhitespace(str, "@define".length)
- var idx = skipVariable(str, start)
- val vble = variableName(str.substring(start, idx))
-
- defs(sym) += vble -> (str drop idx).trim.replaceAll("""\s+\*+$""", "")
+ def defineVariables(sym: Symbol) = {
+ val Trim = "(?s)^[\\s&&[^\n\r]]*(.*?)\\s*$".r
+
+ defs(sym) ++= defines.map {
+ str => {
+ val start = skipWhitespace(str, "@define".length)
+ val (key, value) = str.splitAt(skipVariable(str, start))
+ key.drop(start) -> value
+ }
+ } map {
+ case (key, Trim(value)) =>
+ variableName(key) -> value.replaceAll("\\s+\\*+$", "")
}
}
}
View
5 src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -991,6 +991,7 @@ abstract class GenICode extends SubComponent {
case Select(qualifier, selector) =>
val sym = tree.symbol
generatedType = toTypeKind(sym.info)
+ val hostClass = qualifier.tpe.typeSymbol.orElse(sym.owner)
if (sym.isModule) {
if (settings.debug.value)
@@ -999,11 +1000,11 @@ abstract class GenICode extends SubComponent {
genLoadModule(ctx, sym, tree.pos)
ctx
} else if (sym.isStaticMember) {
- ctx.bb.emit(LOAD_FIELD(sym, true), tree.pos)
+ ctx.bb.emit(LOAD_FIELD(sym, true) setHostClass hostClass, tree.pos)
ctx
} else {
val ctx1 = genLoadQualifier(tree, ctx)
- ctx1.bb.emit(LOAD_FIELD(sym, false), tree.pos)
+ ctx1.bb.emit(LOAD_FIELD(sym, false) setHostClass hostClass, tree.pos)
ctx1
}
View
5 src/compiler/scala/tools/nsc/backend/icode/Opcodes.scala
@@ -171,6 +171,11 @@ trait Opcodes { self: ICodes =>
override def consumedTypes = if (isStatic) Nil else List(REFERENCE(field.owner));
override def producedTypes = List(toTypeKind(field.tpe));
+
+ // more precise information about how to load this field
+ // see #4283
+ var hostClass: Symbol = field.owner
+ def setHostClass(cls: Symbol): this.type = { hostClass = cls; this }
}
case class LOAD_MODULE(module: Symbol) extends Instruction {
View
4 src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
@@ -1172,8 +1172,8 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid {
case LOAD_LOCAL(local) =>
jcode.emitLOAD(indexOf(local), javaType(local.kind))
- case LOAD_FIELD(field, isStatic) =>
- var owner = javaName(field.owner)
+ case lf @ LOAD_FIELD(field, isStatic) =>
+ var owner = javaName(lf.hostClass)
if (settings.debug.value)
log("LOAD_FIELD with owner: " + owner +
" flags: " + Flags.flagsToString(field.owner.flags))
View
64 src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
@@ -108,14 +108,14 @@ abstract class GenMSIL extends SubComponent {
val objParam = Array(MOBJECT)
-// val toBool: MethodInfo = SystemConvert.GetMethod("ToBoolean", objParam)
- val toSByte: MethodInfo = SystemConvert.GetMethod("ToSByte", objParam)
- val toShort: MethodInfo = SystemConvert.GetMethod("ToInt16", objParam)
- val toChar: MethodInfo = SystemConvert.GetMethod("ToChar", objParam)
- val toInt: MethodInfo = SystemConvert.GetMethod("ToInt32", objParam)
- val toLong: MethodInfo = SystemConvert.GetMethod("ToInt64", objParam)
- val toFloat: MethodInfo = SystemConvert.GetMethod("ToSingle", objParam)
- val toDouble: MethodInfo = SystemConvert.GetMethod("ToDouble", objParam)
+ val toBool: MethodInfo = SystemConvert.GetMethod("ToBoolean", objParam) // see comment in emitUnbox
+ val toSByte: MethodInfo = SystemConvert.GetMethod("ToSByte", objParam)
+ val toShort: MethodInfo = SystemConvert.GetMethod("ToInt16", objParam)
+ val toChar: MethodInfo = SystemConvert.GetMethod("ToChar", objParam)
+ val toInt: MethodInfo = SystemConvert.GetMethod("ToInt32", objParam)
+ val toLong: MethodInfo = SystemConvert.GetMethod("ToInt64", objParam)
+ val toFloat: MethodInfo = SystemConvert.GetMethod("ToSingle", objParam)
+ val toDouble: MethodInfo = SystemConvert.GetMethod("ToDouble", objParam)
//val boxedUnit: FieldInfo = msilType(definitions.BoxedUnitModule.info).GetField("UNIT")
val boxedUnit: FieldInfo = fields(definitions.BoxedUnit_UNIT)
@@ -460,9 +460,8 @@ abstract class GenMSIL extends SubComponent {
}
private[GenMSIL] def ilasmFileName(iclass: IClass) : String = {
- val singleBackslashed = iclass.cunit.source.file.toString
- val doubleBackslashed = singleBackslashed.replace("\\", "\\\\")
- doubleBackslashed
+ // method.sourceFile contains just the filename
+ iclass.cunit.source.file.toString.replace("\\", "\\\\")
}
private[GenMSIL] def genClass(iclass: IClass) {
@@ -564,6 +563,10 @@ abstract class GenMSIL extends SubComponent {
val labels: HashMap[BasicBlock, Label] = new HashMap()
+ /* when emitting .line, it's enough to include the full filename just once per method, thus reducing filesize.
+ * this scheme relies on the fact that the entry block is emitted first. */
+ var dbFilenameSeen = false
+
def genCode(m: IMethod) {
def makeLabels(blocks: List[BasicBlock]) = {
@@ -587,6 +590,7 @@ abstract class GenMSIL extends SubComponent {
// debug val MButNotL = (blocksInM.toSet) diff (blocksInL.toSet) // if non-empty, a jump to B fails to find a label for B (case CJUMP, case CZJUMP)
// debug if(!MButNotL.isEmpty) { }
+ dbFilenameSeen = false
genBlocks(linearization)
// RETURN inside exception blocks are replaced by Leave. The target of the
@@ -897,6 +901,7 @@ abstract class GenMSIL extends SubComponent {
var previousWasNEW = false
var lastLineNr: Int = 0
+ var lastPos: Position = NoPosition
// EndExceptionBlock must happen before MarkLabel because it adds the
@@ -932,18 +937,24 @@ abstract class GenMSIL extends SubComponent {
}
for (instr <- block) {
- val currentLineNr = try {
- instr.pos.line
- } catch {
- case _: UnsupportedOperationException =>
- log("Warning: wrong position in: " + method)
- lastLineNr
- }
-
- if (currentLineNr != lastLineNr) {
- mcode.setPosition(currentLineNr, ilasmFileName(clasz)) // method.sourceFile contains just the filename
- lastLineNr = currentLineNr
- }
+ try {
+ val currentLineNr = instr.pos.line
+ val skip = if(instr.pos.isRange) instr.pos.sameRange(lastPos) else (currentLineNr == lastLineNr);
+ if(!skip || !dbFilenameSeen) {
+ val fileName = if(dbFilenameSeen) "" else {dbFilenameSeen = true; ilasmFileName(clasz)};
+ if(instr.pos.isRange) {
+ val startLine = instr.pos.focusStart.line
+ val endLine = instr.pos.focusEnd.line
+ val startCol = instr.pos.focusStart.column
+ val endCol = instr.pos.focusEnd.column
+ mcode.setPosition(startLine, endLine, startCol, endCol, fileName)
+ } else {
+ mcode.setPosition(instr.pos.line, fileName)
+ }
+ lastLineNr = currentLineNr
+ lastPos = instr.pos
+ }
+ } catch { case _: UnsupportedOperationException => () }
if (previousWasNEW)
assert(instr.isInstanceOf[DUP], block)
@@ -2194,7 +2205,12 @@ abstract class GenMSIL extends SubComponent {
def emitUnbox(code: ILGenerator, boxType: TypeKind) = (boxType: @unchecked) match {
case UNIT => code.Emit(OpCodes.Pop)
- case BOOL => code.Emit(OpCodes.Unbox, MBOOL); code.Emit(OpCodes.Ldind_I1)
+ /* (1) it's essential to keep the code emitted here (as of now plain calls to System.Convert.ToBlaBla methods)
+ behaviorally.equiv.wrt. BoxesRunTime.unboxToBlaBla methods
+ (case null: that's easy, case boxed: track changes to unboxBlaBla)
+ (2) See also: asInstanceOf to cast from Any to number,
+ tracked in http://lampsvn.epfl.ch/trac/scala/ticket/4437 */
+ case BOOL => code.Emit(OpCodes.Call, toBool)
case BYTE => code.Emit(OpCodes.Call, toSByte)
case SHORT => code.Emit(OpCodes.Call, toShort)
case CHAR => code.Emit(OpCodes.Call, toChar)
View
2 src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
@@ -534,7 +534,7 @@ abstract class Inliners extends SubComponent {
if (settings.debug.value)
log("Making not-private symbol out of synthetic: " + f)
- f setFlag Flags.notPRIVATE
+ if (f hasFlag Flags.PRIVATE) f setFlag Flags.notPRIVATE
true
}
View
4 src/compiler/scala/tools/nsc/doc/Index.scala
@@ -5,8 +5,8 @@ import scala.collection._
trait Index {
- type SymbolMap = SortedMap[String, SortedSet[model.TemplateEntity]]
+ type SymbolMap = SortedMap[String, SortedSet[model.MemberEntity]]
def firstLetterIndex: Map[Char, SymbolMap]
-}
+}
View
33 src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala
@@ -45,11 +45,11 @@ class HtmlFactory(val universe: doc.Universe, index: doc.Index) {
copyResource("lib/scheduler.js")
copyResource("lib/index.js")
copyResource("lib/template.js")
+
copyResource("lib/index.css")
copyResource("lib/ref-index.css")
copyResource("lib/template.css")
- copyResource("lib/arrow-down.png")
- copyResource("lib/arrow-right.png")
+
copyResource("lib/class.png")
copyResource("lib/class_big.png")
copyResource("lib/object.png")
@@ -58,9 +58,38 @@ class HtmlFactory(val universe: doc.Universe, index: doc.Index) {
copyResource("lib/trait_big.png")
copyResource("lib/package.png")
copyResource("lib/package_big.png")
+
+ copyResource("lib/arrow-down.png")
+ copyResource("lib/arrow-right.png")
copyResource("lib/filter_box_left.png")
copyResource("lib/filter_box_right.png")
+ copyResource("lib/filter_box_left2.gif")
+ copyResource("lib/filterbg.gif")
+ copyResource("lib/filterboxbarbg.gif")
+ copyResource("lib/filterboxbg.gif")
+
+ copyResource("lib/constructorsbg.gif")
+ copyResource("lib/defbg-blue.gif")
+ copyResource("lib/defbg-green.gif")
+ copyResource("lib/fullcommenttopbg.gif")
+ copyResource("lib/ownderbg2.gif")
+ copyResource("lib/ownerbg.gif")
+ copyResource("lib/ownerbg2.gif")
+ copyResource("lib/signaturebg.gif")
+ copyResource("lib/signaturebg2.gif")
+ copyResource("lib/packagesbg.gif")
+ copyResource("lib/typebg.gif")
+ copyResource("lib/valuemembersbg.gif")
+ copyResource("lib/filterboxbarbg.png")
+
copyResource("lib/remove.png")
+ copyResource("lib/navigation-li-a.png")
+ copyResource("lib/navigation-li.png")
+ copyResource("lib/selected-right.png")
+ copyResource("lib/selected.png")
+ copyResource("lib/selected2-right.png")
+ copyResource("lib/selected2.png")
+ copyResource("lib/unselected.png")
new page.Index(universe, index) writeFor this
View
18 src/compiler/scala/tools/nsc/doc/html/page/Index.scala
@@ -37,10 +37,10 @@ class Index(universe: doc.Universe, index: doc.Index) extends HtmlPage {
val body =
<body>
<div id="library">
- <img class='class icon' width="13" height="13" src={ relativeLinkTo{List("class.png", "lib")} }/>
- <img class='trait icon' width="13" height="13" src={ relativeLinkTo{List("trait.png", "lib")} }/>
- <img class='object icon' width="13" height="13" src={ relativeLinkTo{List("object.png", "lib")} }/>
- <img class='package icon' width="13" height="13" src={ relativeLinkTo{List("package.png", "lib")} }/>
+ <img class='class icon' src={ relativeLinkTo{List("class.png", "lib")} }/>
+ <img class='trait icon' src={ relativeLinkTo{List("trait.png", "lib")} }/>
+ <img class='object icon' src={ relativeLinkTo{List("object.png", "lib")} }/>
+ <img class='package icon' src={ relativeLinkTo{List("package.png", "lib")} }/>
</div>
{ browser }
<div id="content" class="ui-layout-center">
@@ -66,21 +66,13 @@ class Index(universe: doc.Universe, index: doc.Index) extends HtmlPage {
def browser =
<xml:group>
<div id="browser" class="ui-layout-west">
- <div class="ui-west-north">{
- <div class="letters">
- { for(l <- index.firstLetterIndex.keySet.toList.sortBy( _.toString )) yield { // TODO there should be a better way to do that
- val ch = if(l=='#') "%23" else l // url encoding if needed
- <a target="template" href={"index/index-"+ch+".html"}>{l.toUpper}</a> ++ xml.Text(" ")
- } }
- </div>
- }</div>
<div class="ui-west-center">
<div id="filter"></div>
<div class="pack" id="tpl">{
def packageElem(pack: model.Package): NodeSeq = {
<xml:group>
{ if (!pack.isRootPackage)
- <h3><a class="tplshow" href={ relativeLinkTo(pack) } target="template">{ pack.qualifiedName }</a></h3>
+ <a class="tplshow" href={ relativeLinkTo(pack) } target="template">{ pack.qualifiedName }</a>
else NodeSeq.Empty
}
<ol class="templates">{
View
42 src/compiler/scala/tools/nsc/doc/html/page/ReferenceIndex.scala
@@ -7,7 +7,7 @@ package scala.tools.nsc
package doc
package html
package page
-
+import doc.model._
class ReferenceIndex(letter: Char, index: doc.Index, universe: Universe) extends HtmlPage {
@@ -25,18 +25,34 @@ class ReferenceIndex(letter: Char, index: doc.Index, universe: Universe) extends
<script type="text/javascript" src={ relativeLinkTo{List("jquery.js", "lib")} }></script>
</xml:group>
+
+ private def entry(name: String, methods: Iterable[MemberEntity]) = {
+ val occurrences = methods.map(method => {
+ val html = templateToHtml(method.inDefinitionTemplates.head)
+ if (method.deprecation.isDefined) {
+ <strike>{ html }</strike>
+ } else {
+ html
+ }
+ })
+
+ <div class="entry">
+ <div class="name">{
+ if (methods.find { ! _.deprecation.isDefined } != None)
+ name
+ else
+ <strike>{ name }</strike>
+ }</div>
+ <div class="occurrences">{
+ for (owner <- occurrences) yield owner ++ xml.Text(" ")
+ }</div>
+ </div>
+ }
+
def body =
- <body>
- { for(groups <- index.firstLetterIndex(letter)) yield {
- <div class="entry">
- <div class="name">{ groups._1 }</div>
- <div class="occurrences">
- { for(owner <- groups._2.view) yield {
- templateToHtml(owner) ++ xml.Text(" ")
- } }
- </div>
- </div>
- } }
- </body>
+ <body>{
+ for(groups <- index.firstLetterIndex(letter)) yield
+ entry(groups._1, groups._2.view)
+ }</body>
}
View
53 src/compiler/scala/tools/nsc/doc/html/page/Template.scala
@@ -79,20 +79,23 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage {
{ if (tpl.linearizationTemplates.isEmpty) NodeSeq.Empty else
<div id="order">
<span class="filtertype">Ordering</span>
- <ol><li class="alpha in">Alphabetic</li><li class="inherit out">By inheritance</li></ol>
+ <ol><li class="alpha in"><span>Alphabetic</span></li><li class="inherit out"><span>By inheritance</span></li></ol>
</div>
}
{ if (tpl.linearizationTemplates.isEmpty) NodeSeq.Empty else
<div id="ancestors">
<span class="filtertype">Inherited</span>
- <ol><li class="hideall">Hide All</li><li class="showall">Show all</li></ol>
- <ol id="linearization">{ (tpl :: tpl.linearizationTemplates) map { wte => <li class="in" name={ wte.qualifiedName }>{ wte.name }</li> } }</ol>
+ <ol><li class="hideall out"><span>Hide All</span></li>
+ <li class="showall in"><span>Show all</span></li></ol>
+ <ol id="linearization">{
+ (tpl :: tpl.linearizationTemplates) map { wte => <li class="in" name={ wte.qualifiedName }><span>{ wte.name }</span></li> }
+ }</ol>
</div>
}
{
<div id="visbl">
<span class="filtertype">Visibility</span>
- <ol><li class="public in">Public</li><li class="all out">All</li></ol>
+ <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
</div>
}
</div>
@@ -197,7 +200,7 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage {
case dte: DocTemplateEntity if isSelf =>
// comment of class itself
<xml:group>
- <div id="comment" class="fullcomment">{ memberToCommentBodyHtml(mbr, isSelf = true) }</div>
+ <div id="comment" class="fullcommenttop">{ memberToCommentBodyHtml(mbr, isSelf = true) }</div>
</xml:group>
case dte: DocTemplateEntity if mbr.comment.isDefined =>
// comment of inner, documented class (only short comment, full comment is on the class' own page)
@@ -317,18 +320,28 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage {
case _ => NodeSeq.Empty
}
- val annotations: Seq[scala.xml.Node] =
+ val annotations: Seq[scala.xml.Node] = {
+ // A list of annotations which don't show their arguments, e. g. because they are shown separately.
+ val annotationsWithHiddenArguments = List("deprecated", "Deprecated")
+
+ def showArguments(annotation: Annotation) = {
+ if (annotationsWithHiddenArguments.contains(annotation.qualifiedName)) false else true
+ }
+
if (!mbr.annotations.isEmpty) {
<dt>Annotations</dt>
<dd>{
mbr.annotations.map { annot =>
<xml:group>
- <span class="name">@{ templateToHtml(annot.annotationClass) }</span>{ argumentsToHtml(annot.arguments) }
+ <span class="name">@{ templateToHtml(annot.annotationClass) }</span>{
+ if (showArguments(annot)) argumentsToHtml(annot.arguments) else NodeSeq.Empty
+ }
</xml:group>
}
}
</dd>
} else NodeSeq.Empty
+ }
val sourceLink: Seq[scala.xml.Node] = mbr match {
case dtpl: DocTemplateEntity if (isSelf && dtpl.sourceUrl.isDefined && dtpl.inSource.isDefined && !isReduced) =>
@@ -395,28 +408,22 @@ class Template(tpl: DocTemplateEntity) extends HtmlPage {
val linearization = mbr match {
case dtpl: DocTemplateEntity if isSelf && !isReduced && dtpl.linearizationTemplates.nonEmpty =>
- <div class="toggleContainer">
- <div class="attributes block">
- <span class="link showElement">Linear Supertypes</span>
- <span class="link hideElement">Linear Supertypes</span>
- </div>
- <div class="superTypes hiddenContent">
- <p>{ typesToHtml(dtpl.linearizationTypes, hasLinks = true, sep = xml.Text(", ")) }</p>
- </div>
+ <div class="toggleContainer block">
+ <span class="toggle">Linear Supertypes</span>
+ <div class="superTypes hiddenContent">{
+ typesToHtml(dtpl.linearizationTypes, hasLinks = true, sep = xml.Text(", "))
+ }</div>
</div>
case _ => NodeSeq.Empty
}
val subclasses = mbr match {
case dtpl: DocTemplateEntity if isSelf && !isReduced && dtpl.subClasses.nonEmpty =>
- <div class="toggleContainer">
- <div class="attributes block">
- <span class="link showElement">Known Subclasses</span>
- <span class="link hideElement">Known Subclasses</span>
- </div>
- <div class="subClasses hiddenContent">
- <p>{ templatesToHtml(dtpl.subClasses.sortBy(_.name), xml.Text(", ")) }</p>
- </div>
+ <div class="toggleContainer block">
+ <span class="toggle">Known Subclasses</span>
+ <div class="subClasses hiddenContent">{
+ templatesToHtml(dtpl.subClasses.sortBy(_.name), xml.Text(", "))
+ }</div>
</div>
case _ => NodeSeq.Empty
}
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/constructorsbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/defbg-blue.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/defbg-green.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filter_box_left.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filter_box_left2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filter_box_right.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterboxbarbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterboxbarbg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/filterboxbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/fullcommenttopbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
153 src/compiler/scala/tools/nsc/doc/html/resource/lib/index.css
@@ -2,7 +2,7 @@
color: inherit;
font-size: 10pt;
text-decoration: none;
- font-family: sans-serif;
+ font-family: Arial;
border-width: 0px;
padding: 0px;
margin: 0px;
@@ -20,9 +20,13 @@ h1 {
display: none;
}
-.letters {
+/*.letters {
+ font-family: monospace;
+ font-size: 2pt;
padding: 5px;
-}
+ background-color: #DADADA;
+ text-shadow: #ffffff 0 1px 0;
+}*/
#library {
display: none;
@@ -40,16 +44,70 @@ h1 {
#filter {
position: absolute;
display: block;
- padding: 5px;
+/* padding: 5px;*/
right: 0;
left: 0;
top: 0;
- background-color: #DADADA;
+ background-image:url('filterbg.gif');
+ background-repeat:repeat-x;
+ background-color: #ededee; /* light gray */
+ /*background-color: #DADADA;*/
+ border:1px solid #bbbbbb;
+ border-top:0;
+ border-left:0;
+ border-right:0;
}
#textfilter {
position: relative;
display: block;
+ height: 20px;
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+#textfilter > .pre {
+ display: block;
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 23px;
+ width: 21px;
+ background: url("filter_box_left.png");
+}
+
+#textfilter > .input {
+ display: block;
+ position: absolute;
+ top: 0;
+ right: 20px;
+ left: 20px;
+}
+
+#textfilter > .input > input {
+ height: 21px;
+ padding: 1px;
+ font-weight: bold;
+ color: #000000;
+ background-color: white;
+ background: url("filterboxbarbg.png");
+ background-repeat:repeat-x;
+ width: 100%;
+}
+
+#textfilter > .post {
+ display: block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 23px;
+ width: 21px;
+ background: url("filter_box_right.png");
+}
+
+/*#textfilter {
+ position: relative;
+ display: block;
height: 20px;
margin-bottom: 5px;
}
@@ -89,17 +147,20 @@ h1 {
height: 20px;
width: 20px;
background: url("filter_box_right.png");
-}
+}*/
#focusfilter {
position: relative;
+ text-align: center;
display: block;
padding: 5px;
- background-color: pink;
+ background-color: #fffebd; /* light yellow*/
+ text-shadow: #ffffff 0 1px 0;
}
#focusfilter .focuscoll {
font-weight: bold;
+ text-shadow: #ffffff 0 1px 0;
}
#focusfilter img {
@@ -111,14 +172,41 @@ h1 {
position: relative;
display: block;
padding: 5px;
- background-color: #999;
+/* background-color: #999;*/
text-align: center;
}
-
#kindfilter > a {
- color: white;
- text-decoration: underline;
+ color: black;
+/* text-decoration: underline;*/
+ text-shadow: #ffffff 0 1px 0;
+
+}
+
+#kindfilter > a:hover {
+ color: #4C4C4C;
+ text-decoration: none;
+ text-shadow: #ffffff 0 1px 0;
+
+}
+
+#letters {
+ position: relative;
+ text-align: center;
+ padding-bottom: 5px;
+ border:1px solid #bbbbbb;
+ border-top:0;
+ border-left:0;
+ border-right:0;
+}
+
+#letters > a {
+/* font-family: monospace;*/
+ color: #858484;
+ font-weight: bold;
+ font-size: 8pt;
+ text-shadow: #ffffff 0 1px 0;
+ padding-right: 2px;
}
#tpl {
@@ -138,7 +226,6 @@ h1 {
float: right;
font-weight: normal;
color: white;
- padding: 0 8px;
}
#tpl .packfocus {
@@ -149,47 +236,57 @@ h1 {
}
#tpl .packages > ol {
- /*margin-bottom: 5px;*/
+ background-color: #dadfe6;
+ /*margin-bottom: 5px;*/
}
-#tpl .packages > ol > li {
+/*#tpl .packages > ol > li {
margin-bottom: 1px;
+}*/
+
+#tpl .packages > li > a {
+ padding: 0px 5px;
}
-#tpl .packages > li > h3 {
+#tpl .packages > li > a.tplshow {
display: block;
color: white;
font-weight: bold;
display: block;
+ text-shadow: #000000 0 1px 0;
}
#tpl ol > li.pack {
- background-color: #2C475C;
padding: 3px 5px;
+ background: url("packagesbg.gif");
+ background-repeat:repeat-x;
+ min-height: 14px;
+ background-color: #6e808e;
}
#tpl ol > li {
display: block;
}
#tpl .templates > li {
- padding-left: 5px;
+ padding-left: 5px;
+ min-height: 18px;
}
#tpl ol > li .icon {
- padding-right: 5px;
+ padding-right: 5px;
bottom: -2px;
position: relative;
}
#tpl .templates div.placeholder {
- padding-right: 5px;
- width: 13px;
- display: inline-block;
+ padding-right: 5px;
+ width: 13px;
+ display: inline-block;
}
#tpl .templates span.tplLink {
- padding-left: 5px;
+ padding-left: 5px;
}
#content {
@@ -212,12 +309,18 @@ h1 {
}
.ui-layout-pane {
- background: #FFF;
- overflow: auto;
+ background: #FFF;
+ overflow: auto;
}
.ui-layout-resizer {
- background: #DDD;
+ background-image:url('filterbg.gif');
+ background-repeat:repeat-x;
+ background-color: #ededee; /* light gray */
+ border:1px solid #bbbbbb;
+ border-top:0;
+ border-bottom:0;
+ border-left: 0;
}
.ui-layout-toggler {
View
79 src/compiler/scala/tools/nsc/doc/html/resource/lib/index.js
@@ -9,18 +9,22 @@ var scheduler = undefined;
var kindFilterState = undefined;
var focusFilterState = undefined;
-var title = $(document).attr('title')
+var title = $(document).attr('title');
+
+var lastHash = "";
$(document).ready(function() {
$('body').layout({ west__size: '20%' });
$('#browser').layout({
center__paneSelector: ".ui-west-center"
//,center__initClosed:true
,north__paneSelector: ".ui-west-north"
- });
+ });
$('iframe').bind("load", function(){
var subtitle = $(this).contents().find('title').text();
$(document).attr('title', (title ? title + " - " : "") + subtitle);
+
+ setUrlFragmentFromFrameSrc();
});
// workaround for IE's iframe sizing lack of smartness
@@ -43,8 +47,60 @@ $(document).ready(function() {
configureKindFilter();
configureEntityList();
+ setFrameSrcFromUrlFragment();
+
+ // If the url fragment changes, adjust the src of iframe "template".
+ $(window).bind('hashchange', function() {
+ if(lastFragment != window.location.hash) {
+ lastFragment = window.location.hash;
+ setFrameSrcFromUrlFragment();
+ }
+ });
});
+// Set the iframe's src according to the fragment of the current url.
+// fragment = "#scala.Either" => iframe url = "scala/Either.html"
+// fragment = "#scala.Either@isRight:Boolean" => iframe url = "scala/Either.html#isRight:Boolean"
+function setFrameSrcFromUrlFragment() {
+ var fragment = location.hash.slice(1);
+ if(fragment) {
+ var loc = fragment.split("@")[0].replace(/\./g, "/");
+ if(loc.indexOf(".html") < 0) loc += ".html";
+ if(fragment.indexOf('@') > 0) loc += ("#" + fragment.split("@", 2)[1]);
+ frames["template"].location.replace(loc);
+ }
+ else
+ frames["template"].location.replace("package.html");
+}
+
+// Set the url fragment according to the src of the iframe "template".
+// iframe url = "scala/Either.html" => url fragment = "#scala.Either"
+// iframe url = "scala/Either.html#isRight:Boolean" => url fragment = "#scala.Either@isRight:Boolean"
+function setUrlFragmentFromFrameSrc() {
+ try {
+ var commonLength = location.pathname.lastIndexOf("/");
+ var frameLocation = frames["template"].location;
+ var relativePath = frameLocation.pathname.slice(commonLength + 1);
+
+ if(!relativePath || frameLocation.pathname.indexOf("/") < 0)
+ return;
+
+ // Add #, remove ".html" and replace "/" with "."
+ fragment = "#" + relativePath.replace(/\.html$/, "").replace(/\//g, ".");
+
+ // Add the frame's hash after an @
+ if(frameLocation.hash) fragment += ("@" + frameLocation.hash.slice(1));
+
+ // Use replace to not add history items
+ lastFragment = fragment;
+ location.replace(fragment);
+ }
+ catch(e) {
+ // Chrome doesn't allow reading the iframe's location when
+ // used on the local file system.
+ }
+}
+
var Index = {};
(function (ns) {
@@ -70,12 +126,11 @@ var Index = {};
return [
'<li class="pack">',
'<a class="packfocus">focus</a><a class="packhide">hide</a>',
- '<h3>',
'<a class="tplshow" target="template" href="',
pack.replace(/\./g, '/'),
'/package.html">',
pack,
- '</a></h3></li>'
+ '</a></li>'
].join('');
};
@@ -139,13 +194,13 @@ var Index = {};
function subPackages(pack) {
return $.grep($('#tpl ol.packages'), function (element, index) {
- var pack = $('h3', element).text();
+ var pack = $('li.pack > .tplshow', element).text();
return pack.indexOf(pack + '.') == 0;
});
}
ns.hidePackage = function (ol) {
- var selected = $('h3', ol).text();
+ var selected = $('li.pack > .tplshow', ol).text();
hiddenPackages[selected] = true;
$('ol.templates', ol).hide();
@@ -156,7 +211,7 @@ var Index = {};
}
ns.showPackage = function (ol, state) {
- var selected = $('h3', ol).text();
+ var selected = $('li.pack > .tplshow', ol).text();
hiddenPackages[selected] = false;
$('ol.templates', ol).show();
@@ -166,7 +221,7 @@ var Index = {};
// When the filter is in "packs" state,
// we don't want to show the `.templates`
- var key = $('h3', element).text();
+ var key = $('li.pack > .tplshow', element).text();
if (hiddenPackages[key] || state == 'packs') {
$('ol.templates', element).hide();
}
@@ -209,6 +264,7 @@ function prepareEntityList() {
function configureTextFilter() {
scheduler.add("init", function() {
$("#filter").append("<div id='textfilter'><span class='pre'/><span class='input'><input type='text' accesskey='/'/></span><span class='post'/></div>");
+ printAlphabet();
var input = $("#textfilter input");
resizeFilterBlock();
input.bind("keyup", function(event) {
@@ -343,7 +399,7 @@ function configureFocusFilter() {
function focusFilter(package) {
scheduler.clear("filter");
- var currentFocus = $('h3', package).text();
+ var currentFocus = $('li.pack > .tplshow', package).text();
$("#focusfilter > .focuscoll").empty();
$("#focusfilter > .focuscoll").append(currentFocus);
@@ -391,3 +447,8 @@ function kindFilterSync() {
function resizeFilterBlock() {
$("#tpl").css("top", $("#filter").outerHeight(true));
}
+
+function printAlphabet() {
+ $("#filter").append("<div id='letters'><a target='template' href='index/index-%23.html'>#</a><a target='template' href='index/index-a.html'>A</a><a target='template' href='index/index-b.html'>B</a><a target='template' href='index/index-c.html'>C</a><a target='template' href='index/index-d.html'>D</a><a target='template' href='index/index-e.html'>E</a><a target='template' href='index/index-f.html'>F</a><a target='template' href='index/index-g.html'>G</a><a target='template' href='index/index-h.html'>H</a><a target='template' href='index/index-i.html'>I</a><a target='template' href='index/index-j.html'>J</a><a target='template' href='index/index-k.html'>K</a><a target='template' href='index/index-l.html'>L</a><a target='template' href='index/index-m.html'>M</a><a target='template' href='index/index-n.html'>N</a><a target='template' href='index/index-o.html'>O</a><a target='template' href='index/index-p.html'>P</a><a target='template' href='index/index-q.html'>Q</a><a target='template' href='index/index-r.html'>R</a><a target='template' href='index/index-s.html'>S</a><a target='template' href='index/index-t.html'>T</a><a target='template' href='index/index-u.html'>U</a><a target='template' href='index/index-v.html'>V</a><a target='template' href='index/index-w.html'>W</a><a target='template' href='index/index-x.html'>X</a><a target='template' href='index/index-y.html'>Y</a><a target='template' href='index/index-z.html'>Z</a></div>");
+}
+
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/navigation-li-a.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/navigation-li.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/ownderbg2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/ownerbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/ownerbg2.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/packagesbg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/selected-right.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN src/compiler/scala/tools/nsc/doc/html/resource/lib/selected.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN