summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | Format collection conversions Scaladoc as code blocks instead of bulletsJanek Bogucki2016-03-093-49/+49
| | |_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | - Makes the list of conversions easier to scan - Makes main comment formatting internally consistent
* | | | | | | Merge pull request #5014 from janekdb/2.12.x-WeakHashSet-spellingSeth Tisue2016-03-141-6/+6
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix var spelling in WeakHashSet
| * | | | | | | Fix var spelling in WeakHashSetJanek Bogucki2016-03-091-6/+6
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | WeakHashSet is internal so an exception was made against binary compatibility to allow the var to be made private.
* | / / / / / Change behavior of clear-button on input fieldsFelix Mulder2016-03-142-19/+13
| |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes the behavior to only remove the "x" if there is no input in the input field. The old behavior was to bind the blur event to be fired later - but this had the drawback of not working properly on fast hardware as the timeout would actually beat the click event.
* | | | | | Merge pull request #4717 from Ichoran/issue/9347Adriaan Moors2016-03-146-3/+79
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-9347 Efficient head/tail, if possible, for immutable maps & sets
| * | | | | | SI-9347 Efficient head/tail, if possible, for immutable maps & setsRex Kerr2016-02-176-3/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most immutable collections, including sets and maps, have a better-than-O(n) method for removing an element. In those cases, tail and possibly head were overridden so the head/tail pattern can be used with less of a performance penalty. Speed improvements on head/tail pattern are (for sets/maps of size 1024, unless otherwise specified): ``` BitSet 190x HashSet 250x Set 400x Set2 9x Set4 12x HashMap 430x ListMap 2500x // size 128 Map 430x ``` Note: `ListMap` is actually `init`/`last` because it's maintained in reverse order. Altered ListMap docs to explain that reverse traversal is the fast way to do it. All tested sets/maps that were already fast are still fast. Test code is reproduced below, except it does ListSet with head/tail which doesn't show the improvement: ```scala object BenchTailSetMap { val th = new ichi.bench.Thyme val standard = 1 to 1024 val sets = Map[String, Set[Int]]( "Set" -> (Set.empty[Int] ++ standard), "Set4"-> Set(4, 7, 2, 1), "Set2"-> Set(3, 4), "HashSet" -> (collection.immutable.HashSet.empty[Int] ++ standard), "BitSet" -> (collection.immutable.BitSet.empty ++ standard), "SortedSet" -> (collection.immutable.SortedSet.empty[Int] ++ standard), "ListSet" -> (collection.immutable.ListSet.empty[Int] ++ standard) ) val pairs = standard.map(i => i -> i.toString) // ListMap implementation is HORRIBLE, O(n^3) tail! Cut down size. val maps = Map[String, Map[Int, String]]( "Map" -> (Map.empty[Int, String] ++ pairs), "HashMap" -> (collection.immutable.HashMap.empty[Int, String] ++ pairs), "SortedMap" -> (collection.immutable.SortedMap.empty[Int, String] ++ pairs), "ListMap" -> (collection.immutable.ListMap.empty[Int, String] ++ pairs.take(128)) ) def hts(s: Set[Int]) = { var si = s var x = 0 while (si.nonEmpty) { x += si.head si = si.tail } x } def htm(m: Map[Int, String]) = { var mi = m var x = 0 while (mi.nonEmpty) { x += mi.head._2.length mi = mi.tail } x } def run() { sets.toList.sortBy(_._1).foreach{ case (name, s) => th.pbench(hts(s), s.size, name) } maps.toList.sortBy(_._1).foreach{ case (name, m) => th.pbench(htm(m), m.size, name) } } } ```
* | | | | | | Remove unused classes from ScaladocFelix Mulder2016-03-1411-1226/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several elements of the old Scaladoc are not in use anymore. To help with any reverting, the removal of these is done in a single commit (this one). The removal includes: - Old `Index`, the old top "index.html" - The letter index (with "_" and "deprecated") - The old `Template` which is superceded by `Entity`
* | | | | | | Scaladoc: Fix elidable threshold off-by-one comment and link elidableJanek Bogucki2016-03-091-8/+8
| |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When -Xelide-below is 2000 (i.e. at least ASSERTION) the assert methods are not elided. - Fixed the above off-by-one error. - Made elidable a link
* | | | | | Fix typomathhun2016-03-091-2/+2
| | | | | |
* | | | | | Merge pull request #4970 from retronym/ticket/9658Jason Zaugg2016-03-091-2/+2
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | SI-9658 Fix crosstalk between partial fun. and GADT match
| * | | | | SI-9658 Fix crosstalk between partial fun. and GADT matchJason Zaugg2016-03-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When typechecking the synthetic default case of a pattern matching anonymous partial function, we failed to create a new `Context`. This led to crosstalk with the management of the saved type bounds of an enclosing GADT pattern match. This commit avoids the direct call to `typeCase` and instead indirects through `typedCases`, which spawns a new nested typer context, and hence avoids the crosstalk when `restoreSavedTypeBounds` runs.
* | | | | | Add fallback typefaces for monospaced sections in scaladocFelix Mulder2016-03-073-31/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit will also fix the `Filter All Members` input appearing if there are no members - please see root for an example. There's also a small CSS fix that addresses a vertical scrollbar on smaller viewports (footer was not responsively resized). review: @VladUreche lol
* | | | | | SI-6886: Deprecate -expand-all-typesJanek Bogucki2016-03-041-1/+5
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This Scaladoc flag was added to assist with debugging and was not intended to have general availability. If an element requires a separate Scaladoc page add @documentable.
* | | | | Fix diagrams for `Content Hierarchies` in scaladocFelix Mulder2016-03-023-10/+14
| | | | |
* | | | | Merge pull request #4934 from Shadow53/2.12.xSeth Tisue2016-03-011-0/+2
|\ \ \ \ \ | | | | | | | | | | | | Added Properties.isLinux to compliment the isWin and isMac methods
| * | | | | Added Properties.isLinux to compliment the isWin and isMac methodsShadow532016-01-301-0/+2
| | | | | |
* | | | | | Unclutter scaladoc entity membersFelix Mulder2016-03-017-145/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit attempts to fix some minor annoyances regarding the UI when it comes to how things are shown. I.e. the complete definition is now hidden. Long signatures like: ```scala class HashMap[A, +B] extends AbstractMap[A, B] with Map[A, B] with MapLike[A, B, HashMap[A, B]] with Serializable with CustomParallelizable[(A, B), ParHashMap[A, B]] ``` will be reduced to: `class HashMap[A, +B]`. Full signature will be shown on hover and unfold. The package-view has been tweaked to look better on non-HiDPI displays. Also, subpackages to current package are now displayed before other entities.
* | | | | | Add package view to scaladocFelix Mulder2016-02-265-11/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The package view shows the current package's: - siblings - children packages - path to root package - child entities (objects, traits, abstract types and classes)
* | | | | | Merge remote-tracking branch 'origin/2.11.x' into ↵Jason Zaugg2016-02-2541-86/+108
|\ \ \ \ \ \ | | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | merge/2.11.x-to-2.12.x-20160225 Conflicts: scripts/jobs/integrate/bootstrap src/build/maven/scala-actors-pom.xml test/files/pos/t3420.flags Conflicts were trivial to resolve.
| * | | | | Typesafe is now LightbendSeth Tisue2016-02-249-18/+18
| | | | | |
| * | | | | Remove GIJ memory configuration advice from fsc, scala and scalac man pages.Janek Bogucki2016-02-203-15/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GIJ is uncommonly used so general guidance on setting memory configuration in the fsc, scala and scalac man pages would only be of use to a highly select group of individuals. For 99.99999999999999% of users this info would be an historical curio at best and random noise at worst.
| * | | | | fix smhasher urlxuwei-k2016-02-152-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | google code is dead http://google-opensource.blogspot.jp/2015/03/farewell-to-google-code.html
| * | | | | Fix off-by-one documentation error in Product<N>Janek Bogucki2016-02-1123-24/+23
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sanity check: scala> case class P2(i: Int, j: Int) defined class P2 val p2 = P2(1, 3) p2.productElement(0) res0: Any = 1 p2.productElement(1) res1: Any = 3 p2.productElement(2) java.lang.IndexOutOfBoundsException: 2 at P2.productElement(<console>:10)
| * | | | Merge pull request #4954 from retronym/topic/fullnameLukas Rytz2016-02-101-13/+25
| |\ \ \ \ | | | | | | | | | | | | Micro optimise Symbol#fullName
| | * | | | Micro optimise Symbol#fullNameJason Zaugg2016-02-091-13/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old approach of recursively calling `fullNameAsName` creates a lot of garbage for intermediate results, in addition to needless interning of those results into the name table. This commit instead creates a string buffer of the correct capacity and writes the component names directly into this. I compared old and new approaches and this shows a 2x speedup. ``` scala> val th = ichi.bench.Thyme.warmed(verbose = print) th: ichi.bench.Thyme = ichi.bench.Thyme@1643e817 scala> val w_old = th.Warm(sym.fullNameAsNameOld('.')) w_old: th.Warm[$r.intp.global.Name] = ichi.bench.Thyme$Warm@7a8d001b scala> val w_new = th.Warm(sym.fullNameAsName('.')) w_new: th.Warm[$r.intp.global.Name] = ichi.bench.Thyme$Warm@1ec14586 scala> th.pbenchOffWarm("", x => println(x))(w_old, 10, "old")(w_new, 10, "new") Benchmark comparison (in 4.084 s) old vs new Significantly different (p ~= 0) Time ratio: 0.53572 95% CI 0.51618 - 0.55525 (n=20) old 64.54 ns 95% CI 62.41 ns - 66.67 ns new 34.57 ns 95% CI 34.04 ns - 35.11 ns res3: $r.intp.global.Name = scala.collection.parallel.mutable.ParSeq ``` It is still expensive enough that we should still consider caching. The call to full name in `classBTypeFromSymbol` in the new backed is a prime candidate for optimization.
| * | | | | Merge pull request #4939 from szeiger/issue/9624Lukas Rytz2016-02-103-15/+25
| |\ \ \ \ \ | | | | | | | | | | | | | | SI-9624 Improve documentation for TraversableOnce
| | * | | | | SI-9624 Improve documentation for TraversableOnceStefan Zeiger2016-02-043-15/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Move the doc comment for `hasDefiniteSize` up from TraversableLike to GenTraversableOnce and improve it. - Add a note to `GenTraversableOnce.isEmpty` that implementations must not consume elements. - Clarify alternatives to subclassing TraversableOnce.
| * | | | | | Merge pull request #4928 from szeiger/wip/document-e-ncLukas Rytz2016-02-102-1/+14
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | Document that `scala -e` starts/uses a compilation daemon
| | * | | | | | Document when the `scala` command starts/uses a compilation daemonStefan Zeiger2016-02-012-1/+14
| | | | | | | |
* | | | | | | | Merge pull request #4968 from lrytz/oldOptCleanupAdriaan Moors2016-02-2410-98/+36
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Remove -Y settings that are no longer used in 2.12
| * | | | | | | | Remove -Y settings that are no longer used in 2.12Lukas Rytz2016-02-1610-98/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a deprecation warning for `-optimize`. Later we'll also graduate `-Yopt` to `-opt`, probably for 2.12.0-M5.
* | | | | | | | | Merge pull request #4958 from adriaanm/typerefrefactorAdriaan Moors2016-02-244-180/+187
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Simplify TypeRef hierarchy. baseType returns NoType, as needed for isSubtype. Also improves performance.
| * | | | | | | | | thisInfo.parents also needs separate treatmentAdriaan Moors2016-02-121-1/+5
| | | | | | | | | |
| * | | | | | | | | Less distribution of logic across TypeRef subclassesAdriaan Moors2016-02-122-108/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Redeem myself for e1c732db44 -- hopefully. I inlined `thisInfo` (== `sym.info`), and made sure to use `relativeInfo` wherever prefix and args influence the result of the query that we're delegating to the underlying type. For type aliases, use `normalize` for `baseClasses` and `decls`, since `relativeInfo` breaks the gnarly SI-8177. I think normalize is okay for aliases, as the prefix should not matter when computing base classes, and infos for the members in `decls` are given the `asSeenFrom` treatment individually downstream. (It's a tight rope between rewriting too many symbols and maintaining correctness. Documented the trade-off in the code.) Renamed the unimaginative `transform` to `relativize`, which, although everything is relative, hopefully says a bit more about its usage than `transform`. Removed a lot of over-factoring in the TypeRef hierarchy. Ultimately, we need to reduce the number of TypeRef subclasses further, I think. It's really hard to follow what's going on. Removed the `thisInfo` cache, since `sym.info` and `relativeInfo` are both cached. Made the cache invalidation hooks a bit more OO-y. Compare `Symbol`s with `eq` -- they don't define an `equals` method. Also, don't recurse in isSubtype when a `baseType` results in `NoType`. This happens a lot and is cheap to check, so I posit (without proof), that it's better for performance (and clarity) to check before recursing.
| * | | | | | | | | SI-9540 typedFunction is erasure awareAdriaan Moors2016-02-122-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When typer is running during erasure, must assign erased FunctionType in typedFunction. This removes a bunch of unneeded casts now we no longer assign a half-erased FunctionType. I poked around a bit, and it looks like erasure doesn't want typer to erase built-in types (like Unit/Any/Nothing). They are already treated specially during erasure.
| * | | | | | | | | Towards understanding `TypeRef`'s `transformInfo`/`baseType`Adriaan Moors2016-02-101-94/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By reducing excessive factoring, we can save an extraneous call to `asSeenFrom`, and hopefully in a following commit figure out a bigger problem with `baseType` that is causing wrong subtyping results. This commit is a pure refactoring, save for the dropped ASF call, which is explained below. To motivate the following change to `relativeInfo`: ``` private[Types] def relativeInfo = /*trace(s"relativeInfo(${safeToString}})")*/{ if (relativeInfoPeriod != currentPeriod) { - val memberInfo = pre.memberInfo(sym) - relativeInfoCache = transformInfo(memberInfo) + relativeInfoCache = memberInfoInstantiated ``` Let's consolidate the two removed line in this new method: ``` def memberInfoInstantiated = transformInfo(pre.memberInfo(sym)) ``` To understand what `transformInfo` does, take these helpers spread over various `*TypeRef` traits, and consolidate them: ``` - def asSeenFromOwner(tp: Type) = tp.asSeenFrom(pre, sym.owner) // regular type refs: - def transformInfo(tp: Type): Type = appliedType(asSeenFromOwner(tp), args) // for no-args type refs: - override def transformInfo(tp: Type): Type = appliedType(asSeenFromOwner(tp), dummyArgs) ``` By removing the dynamic dispatch, we get the following method (given `require(args0 ne Nil, this)` in `ArgsTypeRef`, and `args eq Nil` by construction in `NoArgsTypeRef` ): ``` def transformInfo(tp: Type) = appliedType(tp.asSeenFrom(pre, sym.owner), if (args.isEmpty) dummyArgs else args) ``` Inlining `memberInfo`, which is defined as: ``` def memberInfo(sym: Symbol): Type = { require(sym ne NoSymbol, this) sym.info.asSeenFrom(this, sym.owner) } ``` gives us: ``` def memberInfoInstantiated = transformInfo(sym.info.asSeenFrom(pre, sym.owner)) ``` Inlining `transformInfo` as reworked above: ``` def memberInfoInstantiated = appliedType(sym.info.asSeenFrom(pre, sym.owner).asSeenFrom(pre, sym.owner), if (args.isEmpty) dummyArgs else args) ``` Whoops! One `asSeenFrom` should do... ``` + final protected def memberInfoInstantiated: Type = + appliedType(sym.info.asSeenFrom(pre, sym.owner), if (args.isEmpty) dummyArgs else args) ```
* | | | | | | | | | Add doc annotation `@shortDescription` to enable explicit synopsisFelix Mulder2016-02-222-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Entities with this annotation will be able to control what is shown in the method summary on entity pages as well as the hover text on search results. Review: @VladUreche
* | | | | | | | | | Add progress bar for searchFelix Mulder2016-02-184-42/+57
| | | | | | | | | |
* | | | | | | | | | Add better hover-text in search resultsFelix Mulder2016-02-186-27/+24
| |_|_|_|_|_|_|/ / |/| | | | | | | |
* | | | | | | | | Merge pull request #4973 from felixmulder/topic/scaladoc-replace-utf8-glyphsLukas Rytz2016-02-173-43/+75
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Scaladoc: Replace UTF8 glyphs with the Material Typeface
| * | | | | | | | | Replace UTF8 glyphs with the Material TypefaceFelix Mulder2016-02-173-43/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit removes arrows and other symbols previously provided by UTF8-symbols. Instead it uses the Material Typeface that we've used for the search icon and graph symbols. review: @VladUreche, @lrytz
* | | | | | | | | | Merge pull request #4969 from lrytz/valPatternOptStefan Zeiger2016-02-171-4/+18
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | Tests for optimizing val patterns
| * | | | | | | | | Tests for optimizing val patternsLukas Rytz2016-02-161-4/+18
| | |/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | Fixes https://github.com/scala/scala-dev/issues/28
* | | | | | | | | Add package member filteringFelix Mulder2016-02-171-22/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously only entities like classes and traits would allow for filter of members. This commit removes that restriction by always including the `<div id="order">` in the entity template.
* | | | | | | | | Scaladoc: Add new search, featuring entity and member searchFelix Mulder2016-02-1719-940/+2183
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a revamped search function for the scaladoc tool. It also contains a number of small fixes for HTML-layout and JavaScript issues. The search is implemented by enhancing the scheduler and using JavaScript promises. List of changes/additions: * Revamped search functionality - Search members as well as entities - Preserve keyboard navigation - Scroll to selected entity if outside of viewport - Non-blocking, cancelable * Display of library name (top left) * Refactored scheduler * Cleanup of HTML layout - Remove left pane - Better mobile layout, no need for dynamic offsets - Remove unused element classes - Remove iframe structure - Better layout for kinds
* | | | | | | | SD-79 don't issue spurious inliner warnings under l:projectLukas Rytz2016-02-154-15/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When enabling `-Yopt:inline-project` (or `-Yopt:l:project`), the inliner would spuriously warn about callsites to methods marked `@inline` that are read from the classpath (not being compiled currently). This patch introduces yet another field to the `Callsite` class, which is growing a bit too large. But the call graph representation will get an overhaul when implementing the new inliner heuristics (2.12.0-M5), so this is just a temporary fix that would be nice to have in M4.
* | | | | | | | Avoid generating ACONST_NULL; POP; ACONST_NULL when loading nullLukas Rytz2016-02-142-11/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When loading a value of type scala.runtime.Null$ we need to add POP; ACONST_NULL, see comment in BCodeBodyBuilder.adapt. This is however not necessary if the null value is a simple ACONST_NULL. This patch eliminates that redundancy.
* | | | | | | | Generate leaner code for branchesLukas Rytz2016-02-132-87/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GenBCode used to generate more bytecode for branching instructions than GenASM. A simple method def f(x: Int, b: Boolean) = if (b) 1 else 2 would generate ILOAD 2 IFNE L1 GOTO L2 L1 ICONST_1 GOTO L3 L2 ICONST_2 L3 IRETURN If the conditional branch is negated (IFEQ) the GOTO is unnecessary. While -Yopt:l:method would clean this up, it's also not too hard to generate the leaner bytecode in the first place.
* | | | | | | | Merge pull request #4944 from lrytz/stringBuilderNoBoxLukas Rytz2016-02-122-9/+20
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-9571 Avoid boxing primitives in string concatenation
| * | | | | | | | SI-9571 Avoid boxing primitives in string concatenationMarko Elezovic2016-02-062-9/+20
| | | | | | | | |