summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #4862 from retronym/ticket/9567Lukas Rytz2015-12-182-4/+16
|\ | | | | SI-9567 Fix pattern match on 23+ param, method local case class
| * SI-9567 Fix pattern match on 23+ param, method local case classJason Zaugg2015-11-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Typechecking constructor patterns of method local case classes was only working because of the existence of the unapply method in the companion, which is used if navigation to the case class companion object fails. We now support defintion of, and pattern matching on, case classes with more than 22 parameters. These have no `unapply` method in the companion, as we don't have a large enough tuple type to return. So for such case classes, the fallback that we inadvertently relied on would no longer save us, and we'd end up with a compile error advising that the identifier in the constructor pattern was neither a case class nor an extractor. This is due to the propensity of `Symbol#companionXxx` to return `NoSymbol` when in the midst of typechecking. That method should only be relied upon after typechecking. During typechecking, `Namers#companionSymbolOf` should be used instead, which looks in the scopes of enclosing contexts for symbol companionship. That's what I've done in this commit.
| * SI-9567 Fix latent bugs in patmat's reasoning about mutabilityJason Zaugg2015-11-251-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under -optimize, the pattern matcher tries to avoid local variables in favour of directly accessing to non-var case class accessors. However, the code that analysed the patterns failed to account properly for repeated parameters, which could either lead to a compiler crash (when assuming that the n-th subpattern must have a corresponding param accessor), or could lead to a correctness problem (when failing to eagerly the bound elements from the sequence.) The test case that tried to cover seems only to have been working because of a separate bug (the primary subject of SI-9567) related to method-local case classes: they were treated during typechecking as extractors, rather than native case classes. The subsequent commit will fix that problem, but first we must pave the way with this commit that emits local vals for bound elements of case class repeated params.
* | Merge pull request #4882 from janekdb/2.11.x-scaladoc-tables-1Lukas Rytz2015-12-182-6/+11
|\ \ | | | | | | Document JavaConverters conversion from java.util.Properties to Map
| * | Document JavaConverters conversion from java.util.Properties to MapJanek Bogucki2015-12-122-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | Also - Fix grammar on duplicated DecorateAsJava comment by copying over from JavaConverters - Remove author tags
* | | Merge pull request #4831 from martijnhoekstra/patch-4Seth Tisue2015-12-171-0/+12
|\ \ \ | | | | | | | | add doc for log, sqrt
| * | | change phrasing around eulers number for `log(x)`martijnhoekstra2015-12-111-3/+1
| | | |
| * | | add doc for log, sqrtmartijnhoekstra2015-10-301-0/+14
| | | | | | | | | | | | | | | | It's useful to know that log is the natural logarithm, not 10log or 2log or so. Also did sqrt "while I was at it"
* | | | Apply title case to Scaladoc buttons: By Inheritance & Show AllJanek Bogucki2015-12-151-2/+2
| | | | | | | | | | | | | | | | | | | | The alternative choice was to change "Hide All" to "Hide all" to match existing capitalization but title case fits for this UI.
* | | | SI-9581 Fix overflow on Vector take and drop methodsRui Gonçalves2015-12-061-2/+2
| |/ / |/| | | | | | | | | | | | | | Fixes the index/length comparison in `Vector#take` and `Vector#drop` so that they handle all possible integer values. Given the collection's invariants `startIndex >= endIndex` and `0 >= startIndex, endIndex`, it is sufficient to change the arithmetic in the comparison as done in this commit to avoid overflows. As cases when `n <= 0` are handled beforehand, `endIndex - n` cannot overflow, contrary to `startIndex + n`. If without the danger of overflows the condition yields true, on the other hand, `startIndex + n` cannot overflow as it is smaller than `endIndex` (as the previous formulation of the condition shows).
* | | Apply some static code analysis recommendationsJanek Bogucki2015-11-2614-31/+31
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix a batch of code inspection recommendations generated by IntelliJ 14.1.5. Categories of fix, Unnecessary public modifier in interface Replace filter+size with count Replace filter+nonEmpty with exists Replace filter+headOption with find Replace `if (x != null) Some(x) else None` with Option(x) Replace getOrElse null with orNull Drop redundant semicolons Replace anon fun with PF Replace anon fun with method
* | Merge pull request #4855 from szeiger/wip/sbt-osgiLukas Rytz2015-11-241-0/+10
|\ \ | | | | | | Create a full Scala distribution from sbt
| * | [nomerge] Build man pages and scala-dist.jar from sbtStefan Zeiger2015-11-241-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | - ManMaker is compiled in a new subproject “manual”. A simple command line runner complements the ant task so that it can be run from sbt. - Another new subproject “scala-dist” is responsible for building the scala-dist.jar artifact.
* | | Merge pull request #4860 from ↵Lukas Rytz2015-11-241-5/+5
|\ \ \ | | | | | | | | | | | | | | | | janekdb/2.11.x-scaladoc-fix-one-off-dot-restart-note Align DotRunner dot restart count with command option description
| * | | Align DotRunner dot restart count with command option descriptionJanek Bogucki2015-11-231-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the command option description, val docDiagramsDotRestart = IntSetting( "-diagrams-dot-restart", "The number of times to restart a malfunctioning dot process before disabling diagrams (default: 5)", 5, None, _ => None ) Prior to this change dot was restarted four times instead of five. Maybe the intention of the option was to allow a total number of attempts to be specified but with 5 restarts we need 6 attempts. The local var was renamed to reflect this.
* | | | Merge pull request #4849 from ↵Lukas Rytz2015-11-231-2/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | janekdb/2.11.x-remove-lagged-scaladoc-setttings-notes Remove notes about -doc-title and -doc-version not being used
| * | | | Remove notes about -doc-title and -doc-version not being usedJanek Bogucki2015-11-181-2/+2
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Confirmed these options are used by editing build-ant-macros.xml and viewing the output, <scaladoc docRootContent="${src.dir}/@{project}/${@{project}.docroot}" destdir="${build-docs.dir}/@{project}" - doctitle="${@{project}.description}" + doctitle="${@{project}.description} - test-title" docfooter="epfl" - docversion="${version.number}" + docversion="${version.number} - test-version"
* | | | Merge pull request #4850 from ↵Lukas Rytz2015-11-231-1/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | janekdb/2.11.x-add-missing-scaladoc-commands-to-help-output Add two missed scaladoc commands into scaladoc specific help section
| * | | | Add two missed scaladoc commands into scaladoc specific help sectionJanek Bogucki2015-11-181-1/+2
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this change these scaladoc options were buried in the scalac section of the help text, -doc-external-doc -implicits-sound-shadowing With this change the options are listed in the scaladoc section. This will make the commands easier to discover.
* | | | Merge pull request #4856 from ↵Lukas Rytz2015-11-231-11/+23
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | janekdb/2.11.x-scaladoc-excluded-classnames-more-data-like Refactor excluded qname test to be more data like
| * | | | Refactor excluded qname test to be more data likeJanek Bogucki2015-11-201-11/+23
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | This refactoring extracts data from code into a form which is closer to configuration data. This is a step change toward making this configurable.
* / / / Fix List Scaladoc time & space formattingJanek Bogucki2015-11-221-13/+13
|/ / / | | | | | | | | | | | | | | | | | | | | | The Performance section got sucked into a wormhole and popped up in the example tag. The laws of physics differ in the attributes block resulting in the loss of the line break between the Time and Space paragraphs. Fixed by moving the section out of the example tag.
* | | Merge pull request #4828 from retronym/topic/existential-containsLukas Rytz2015-11-162-13/+29
|\ \ \ | | | | | | | | Attacking exponential complexity in TypeMaps
| * | | Attacking exponential complexity in TypeMapsJason Zaugg2015-11-132-13/+29
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Don't normalize existentials during the `contain`-s type map; `ExistentialType#normalize' calls contains internally and an exponential blowup ensues. - Ensure that the type map used in variance validation never returns modified types in order to avoid needless cloning of symbols. The enclosed test case still gets stuck in Uncurry, thanks to the way that `TypeMap#mapOver(List[Symbol])` recurses through the type first to check whether the type map would be an no-op or not. If not, it repeats the type map with cloned symbols. Doing the work twice at each level of recursion blows up the complexity. Removing that "fast path" allows the enclosed test to compile completely. As at this commit, it gets stuck in uncurry, which dealiases `s.List` to `s.c.i.List` within the type. Some more background on the troublesome part of `TypeMap`: http://lrytz.github.io/scala-aladdin-bugtracker/displayItem.do%3Fid=1210.html https://github.com/scala/scala/commit/f8b2b21050e7a2ca0f537ef70e3e0c8eead43abc
* | | Merge pull request #4839 from SethTisue/reword-dependent-type-errorSeth Tisue2015-11-141-1/+1
|\ \ \ | |_|/ |/| | less confusing wording for a dependent method type error
| * | less confusing wording for a dependent method type errorSeth Tisue2015-11-071-1/+1
| |/ | | | | | | | | | | | | | | note to reviewers: the error messages in this file are over the place about whether they're called "parameter sections", or "argument lists", or what, so there's no point in being picky about that here for context see SI-823
* | Merge pull request #4824 from szeiger/wip/sbt-mkBinJason Zaugg2015-11-131-1/+1
|\ \ | | | | | | Improvements to the sbt build
| * | Create shaded JLine in sbt buildStefan Zeiger2015-10-291-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reusing parts of #4593, this commits adds two additional subprojects to the sbt build: - repl-jline, which is already used by the ant build, builds the part of the REPL that depends on JLine. The actual JLine depenency is moved to this project. - repl-jline-shaded uses JarJar to create a shaded version of repl-jline and jline.jar. Unlike the ant build, this setup does not use any circular dependencies. dist/mkBin puts all of quick/repl, quick/repl-jline and quick/repl-jline-shaded onto the classpath of build-sbt/quick/bin/scala. A future addition to the sbt build for building build-sbt/pack will have to put the generated classfiles into the correct JARs, mirroring the old structure.
* | Merge pull request #4809 from wpopielarski/delambdafy-multiple-outputsJason Zaugg2015-11-132-5/+5
|\ \ | | | | | | Multi output problem with delambdafied compilation
| * | Sets source for newly created lambda classwpopielarski2015-11-051-0/+1
| | | | | | | | | | | | | | | This source is then used to figure out output folder for compilation product.
| * | Allows to propagate fatal errors when output folder not found.wpopielarski2015-11-052-23/+8
| | |
| * | Multi output problem with delambdafied compilationwpopielarski2015-11-042-9/+23
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | User code compilation with -Ybackend:GenBCode -Ydelambdafy:method fails for projects with multiple output directories. The problem has its root in a fact that some `lambdaClass` symbols the `associatedFile` field is not set. It can be done in Delambdafy.scala (`makeAnonymousClass` method) and is working for following lambda examples: {{{ package acme object Delambdafy { type -->[D, I] = PartialFunction[D, I] def main(args: Array[String]): Unit = { val result = List(1, 2, 4).map { a => val list = List("1", "2", "3").map { _ + "test" } list.find { _ == a.toString + "test" } } lazy val _foo = foo(result) { case x::xs if x isDefined => x.get.length case _ => 0 } lazy val bar: Int => Int = { case 2 => 13 case _ => val v = List(1).map(_ + 42).head v + 1 } } def foo(b: List[Option[String]])(a: List[Option[String]] => Int): Int = a(b) } }}} but is NOT working for following lambda: {{{ package acme object Delambdafy { type -->[D, I] = PartialFunction[D, I] def main(args: Array[String]): Unit = { lazy val _baz = baz { case 1 => val local = List(1).map(_ + 1) local.head } } def baz[T](f: Any --> Any): Any => Any = f } }}} so that's why source of compilation unit is used to determine output directory in case when source file is not found for symbol.
* | Merge pull request #4843 from SethTisue/scaladoc-little-d-pleaseJason Zaugg2015-11-137-10/+10
|\ \ | | | | | | it's Scaladoc, not ScalaDoc
| * | it's Scaladoc, not "ScalaDoc" or "Scala doc"Seth Tisue2015-11-127-10/+10
| |/ | | | | | | | | renaming the existing ScalaDoc and ScalaDocReporter classes might break stuff, sadly, but at least we can fix the rest
* | Merge pull request #4810 from ruippeixotog/fix-mutable-setlike-clearAdriaan Moors2015-11-121-1/+3
|\ \ | | | | | | SI-9497 Fix SetLike#clear() default implementation
| * | SI-9497 Fix SetLike#clear() default implementationRui Gonçalves2015-10-211-1/+3
| | | | | | | | | | | | When dealing with mutable collections, it is not safe to assume iterators will remain consistent when the collection is modified mid-traversal. The bug reported in SI-9497 is very similar to SI-7269, "ConcurrentModificationException when filtering converted Java HashMap". Then, only the `retain` method was fixed. This commit fixes `clear`, which had the same problem.
* | | Merge pull request #4804 from jvican/issue/9503Adriaan Moors2015-11-121-1/+2
|\ \ \ | | | | | | | | [SI-9503] Deprecate scala.collection.immutable.PagedSeq
| * | | [SI-9503] Deprecate scala.collection.immutable.PagedSeqjvican2015-11-041-1/+2
| | | |
* | | | Improve collections documentation and prefer () to {}vsalvis2015-10-275-88/+85
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | - Remove some duplicate method documentation that is now inherited - Whitespace edits - Rewording of method docs - Clearer usage examples - tparam alignment for some usecase tags - Prefer () to { } for do nothing bodies
* | | Merge pull request #4803 from janekdb/2.11.x-conform-foreach-tparamSeth Tisue2015-10-2727-169/+170
|\ \ \ | |_|/ |/| | Conform foreach tparam to majority naming convention
| * | Conform foreach tparam to majority naming conventionvsalvis2015-10-2127-169/+170
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'U' is the common choice for the foreach function result tparam. This command summarises the naming diversity before and after this change. $ fgrep -r 'def foreach[' *|cut -f2 -d:|cut -f1 -d'('|tr -s ' '|sed 's/override //g'|sort|uniq -c|sort -nr Before, 80 def foreach[U] 6 def foreach[C] 6 def foreach[B] 4 final def foreach[U] 3 def foreach[S] 2 inline final def foreach[U] 2 def foreach[A] 1 inline final def foreach[specialized 1 final def foreach[B] 1 * def foreach[U] 1 def foreach[Q] 1 def foreach[D] 1 def foreach[A,B,U] After, 98 def foreach[U] 5 final def foreach[U] 2 inline final def foreach[U] 1 inline final def foreach[specialized 1 * def foreach[U] 1 def foreach[A,B,U] (@ symbols removed.)
* | Merge pull request #4800 from sjrd/remove-lingering-printlnLukas Rytz2015-10-212-4/+1
|\ \ | |/ |/| Remove two lingering `println`s in non-debug methods of the library.
| * Remove two lingering `println`s in non-debug methods of the library.Sébastien Doeraene2015-10-132-4/+1
| |
* | Merge pull request #4792 from SethTisue/round-of-readme-updatesLukas Rytz2015-10-163-18/+24
|\ \ | | | | | | misc upgrades to README
| * | more readme improvementsSeth Tisue2015-10-083-18/+24
| | | | | | | | | | | | | | | | | | * be clearer about required JDK versions * eliminate redundancy with existing src/eclipse and src/intellij readmes * give IntelliJ readme a .md extension
* | | Merge pull request #4791 from performantdata/issue/9508Lukas Rytz2015-10-158-47/+17
|\ \ \ | | | | | | | | SI-9508 fix classpaths in Eclipse configuration
| * | | SI-9508 fix classpaths in Eclipse configurationPerformant Data LLC2015-10-128-47/+17
| | |/ | |/|
* | | Merge pull request #4798 from performantdata/issue/9513Seth Tisue2015-10-151-1/+18
|\ \ \ | | | | | | | | SI-9513 decrement "deleted" count in OpenHashMap.put() when slot reused
| * | | Document some OpenHashMap internal methods.Performant Data LLC2015-10-101-0/+13
| | | |
| * | | SI-9513 decrement "deleted" count in OpenHashMap.put() when slot reusedPerformant Data LLC2015-10-101-1/+5
| |/ /