summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #4729 from retronym/topic-trait-defaults-moduleLukas Rytz2015-12-1815-73/+143
|\ | | | | Desugar module var and accessor in refchecks/lazyvals
| * Avoid tree sharing in lazy val translationJason Zaugg2015-11-232-7/+5
| | | | | | | | | | | | | | The `cond` tree is used in two places, so make it a by-name parameter to create distinct Trees. Also, remove a dangling comment.
| * Desugar module var and accessor in refchecks/lazyvalsJason Zaugg2015-10-0815-69/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than leaving it until mixin. The broader motivation is to simplify the mixin phase of the compiler before we get rid of implementatation classes in favour of using JDK8 default interface methods. The current code in mixin is used for both lazy val and modules, and puts the "slow path" code that uses the monitor into a dedicated method (`moduleName$lzyCompute`). I tracked this back to a3d4d17b77. I can't tell from that commit whether the performance sensititivity was related to modules or lazy vals, from the commit message I'd say the latter. As the initialization code for a module is just a constructor call, rather than an arbitraryly large chunk of code for a lazy initializer, this commit opts to inline the `lzycompute` method. During refchecks, mixin module accessors are added to classes, so that mixed in and defined modules are translated uniformly. Trait owned modules get an accessor method with an empty body (that shares the module symbol), but no module var. Defer synthesis of the double checked locking idiom to the lazyvals phase, which gets us a step closer to a unified translation of modules and lazy vals. I had to change the `atOwner` methods to to avoid using the non-existent module class of a module accessor method as the current owner. This fixes a latent bug. Without this change, retypechecking of the module accessor method during erasure crashes with an accessibility error selecting the module var. In the process, I've tweaked a tree generation utility method to wvoid synthesizing redundant blocks in module desugaring.
* | Merge pull request #4265 from retronym/ticket/9110Lukas Rytz2015-12-182-1/+29
|\ \ | | | | | | SI-9110 Pattern `O.C` must check `$outer eq O` for a top level O
| * | SI-9110 Pattern `O.C` must check `$outer eq O` for a top level OJason Zaugg2015-11-262-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | The outer check was not being generated when the prefix was a top level module. The enclosed test shows that we in fact must synthesize the outer check in that case. Perhaps the bug was introduced by neglecting to consider that a module can inherit member classes.
* | | Merge pull request #4879 from ShaneDelmore/SI-9583Seth Tisue2015-12-112-1/+28
|\ \ \ | | | | | | | | SI-9583: Update SystemProperties.empty to fix builders
| * | | SI-9583: Update SystemProperties.empty to return a mutable.Map to fix buildersShane Delmore2015-12-102-1/+28
|/ / /
* | | Merge pull request #4865 from SethTisue/intellij-readme-improvementsLukas Rytz2015-12-101-7/+14
|\ \ \ | | | | | | | | IntelliJ README improvements
| * | | IntelliJ README improvementsSeth Tisue2015-11-251-7/+14
| |/ / | | | | | | | | | | | | | | | | | | * fix typo (`withing`) * fix repeated text about bootstrapping * fix bad Markdown (no blank line before bullet list) * generally rewrite/reformat/overhaul
* | | Merge pull request #4874 from szeiger/wip/upgrade-jarjarLukas Rytz2015-11-271-2/+2
|\ \ \ | | | | | | | | Upgrade JarJar in the ant build
| * | | Upgrade JarJar in the ant buildStefan Zeiger2015-11-271-2/+2
| |/ / | | | | | | | | | | | | | | | This switches the JarJar dependency over to the Pantsbuild fork, which supports Java 8 bytecode and is already used by the sbt build. Shading of the embedded JLine is currently broken in 2.12 with the old version (the shaded classes are not created).
* | | Merge pull request #4873 from lrytz/merge-2.11-to-2.12-nov-27Lukas Rytz2015-11-2713-31/+40
|\ \ \ | | | | | | | | Merge 2.11 to 2.12 nov 27
| * \ \ Merge commit '5e99f82' into merge-2.11-to-2.12-nov-27Lukas Rytz2015-11-2712-28/+28
| |\ \ \
| | * \ \ Merge pull request #4869 from janekdb/2.11.x-intellij-code-inspectionsLukas Rytz2015-11-2714-31/+31
| | |\ \ \ | | | | | | | | | | | | Apply some static code analysis recommendations
| | | * | | 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 commit '2890f0b' into merge-2.11-to-2.12-nov-27Lukas Rytz2015-11-270-0/+0
| |\| | |
| | * | | Merge pull request #4855 from szeiger/wip/sbt-osgiLukas Rytz2015-11-245-102/+413
| | |\ \ \ | | | | | | | | | | | | Create a full Scala distribution from sbt
| | | * | | [nomerge] Create a full Scala distribution from sbtStefan Zeiger2015-11-243-107/+334
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This replicates the results of `ant -Dlocker.skip=1 distpack` with the following differences: - The POM files produced by the ant build under dists/maven still contain unresolved variables like `@VERSION@`. The ant build resolves them in the actual publishing process. The sbt build generates the correct version numbers directly. - Scaladoc sets in the ant build are created with the scaladoc tool from “quick”. The sbt build uses the STARR scaladoc. - The scaladoc sets for scala-actors, scala-compiler, scala-reflect and scalap from the ant build contain documentation for the classes `Null`, `Nothing`, `Any` and `AnyRef`. The sbt build omits those classes from all doc sets (except for scala-library, of course) under the assumption that this is a bug in the ant build. Other idiosyncracies of the ant build like declaring a packaging type of `jar` (instead of `bundle`) for OSGi bundles, or using slightly different module names and descriptions in scaladocs, OSGi bundles and POMs, are reproduced faithfully for now. Publishing from the sbt build is done in the usual sbt way. No actual publishing targets are currently defined in the build. In order to test stability of the publishing process, the `publishDists` task can be used to publish to dists/maven-sbt with the same directory layout and naming conventions employed by the ant build for publishing to dists/maven. Source and binary JARs are OSGi-enabled. For the source JARs this is done by hand-crafting the appropriate MANIFEST.MF entries (like the ant build does). Binary JARs are packaged with BND, using the same outdated BND version as the ant build for now to get identical results. We do not use sbt-osgi because it depends on a newer version of BND (probably OK to upgrade in the future) and does not allow a crucial bit of configuration that we need: Setting the classpath for BND. In sbt-osgi this is always `fullClasspath in Compile` whereas we really want `products in Compile in packageBin` to keep things simple.
| | | * | | [nomerge] Some small fixes for generated artifacts in the sbt buildStefan Zeiger2015-11-241-3/+22
| | | | | |
| * | | | | Merge commit '62f346b' into merge-2.11-to-2.12-nov-27Lukas Rytz2015-11-271-3/+12
| |\ \ \ \ \ | | | |/ / / | | |/| | |
| | * | | | Fix JarJar “Keep” processing in sbt buildStefan Zeiger2015-11-241-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is not enough to check the return value of `process()` to determine whether a class file should be kept or deleted. The classes that should not be kept are only known after processing everything and files that have already been written to disk may need to be deleted.
| * | | | | Merge commit '03607b2' into merge-2.11-to-2.12-nov-27Lukas Rytz2015-11-270-0/+0
|/| | | | | | |/ / / /
| * | | | [nomerge] Build man pages and scala-dist.jar from sbtStefan Zeiger2015-11-242-1/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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 #4866 from CaseyLeask/clarify-source-of-f-functionLukas Rytz2015-11-271-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Clarify source of f function in TailCalls flatMap
| * | | | | Clarify source of f functionCasey Leask2015-11-261-1/+1
| | |_|/ / | |/| | |
* | | | | Merge pull request #4867 from soc/topic/backend-cleanupLukas Rytz2015-11-275-30/+14
|\ \ \ \ \ | |/ / / / |/| | | | Clean up some remains of the GenAsm/GenICode drop
| * | | | Update some phase listsSimon Ochsenreither2015-11-253-12/+7
| | | | |
| * | | | Remove unused cunit parameter / field in GenBCodeLukas Rytz2015-11-252-18/+7
|/ / / /
* | | | Merge pull request #4863 from retronym/topic/leaner-patmat-codegenLukas Rytz2015-11-242-11/+13
|\ \ \ \ | | | | | | | | | | DRY-er trees in pattern matcher code gen.
| * | | | DRY-er trees in pattern matcher code gen.Jason Zaugg2015-11-242-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than building a cascade of if/elses, push additional conditions into a conjunction in the condition of a single if/else. This is possible when emitting conditions for the list of arguments of a pattern. Here's an example of the improvement to post-pattern matcher trees: https://gist.github.com/retronym/0d8f7126157061d72b81 While we could try to rely on the optimizer to coalesce the repeated else clauses, it seems wasteful to emit the code in that way in the first place.
* | | | | Merge pull request #4864 from lrytz/merge-2.11-to-2.12-nov-24Seth Tisue2015-11-2485-542/+954
|\ \ \ \ \ | | | | | | | | | | | | Merge 2.11 to 2.12 nov 24
| * | | | | Merge commit '8eb1d4c' into merge-2.11-to-2.12-nov-24Lukas Rytz2015-11-2485-542/+954
|/| | | | | | | |_|/ / | |/| | |
| * | | | Merge pull request #4859 from fthomas/topic/spec-value-conversionsLukas Rytz2015-11-241-1/+1
| |\ \ \ \ | | | | | | | | | | | | Update number of subsections in Value Conversions
| | * | | | Update number of subsections in Value ConversionsFrank S. Thomas2015-11-231-1/+1
| | | | | |
| * | | | | 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 #4853 from SethTisue/mima-upgradeLukas Rytz2015-11-231-1/+1
| |\ \ \ \ \ | | | | | | | | | | | | | | upgrade to MiMa 0.1.8
| | * | | | | upgrade to MiMa 0.1.8Seth Tisue2015-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | just for general dogfooding purposes. also because the new version understands 2.12 bytecode better, and this commit will get merged onto 2.12
| * | | | | | 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.
| * | | | | | Merge pull request #4857 from ↵Lukas Rytz2015-11-231-13/+13
| |\ \ \ \ \ \ | | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | janekdb/2.11.x-scaladoc-fix-List-performance-time-space-formatting Fix List Scaladoc time & space formatting
| | * | | | | 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-165-13/+44
| |\ \ \ \ \ | | | | | | | | | | | | | | Attacking exponential complexity in TypeMaps
| | * | | | | Attacking exponential complexity in TypeMapsJason Zaugg2015-11-135-13/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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-142-3/+3
| |\ \ \ \ \ \ | | |_|_|_|/ / | |/| | | | | less confusing wording for a dependent method type error
| | * | | | | less confusing wording for a dependent method type errorSeth Tisue2015-11-072-3/+3
| | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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