| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Desugar module var and accessor in refchecks/lazyvals
|
| |
| |
| |
| |
| |
| |
| | |
The `cond` tree is used in two places, so make it a by-name parameter
to create distinct Trees.
Also, remove a dangling comment.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | | |
SI-9110 Pattern `O.C` must check `$outer eq O` for a top level O
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
|
|\ \ \
| | | |
| | | | |
IntelliJ README improvements
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
* fix typo (`withing`)
* fix repeated text about bootstrapping
* fix bad Markdown (no blank line before bullet list)
* generally rewrite/reformat/overhaul
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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
|
| |\ \ \
| | | | |
| | | | | |
Create a full Scala distribution from sbt
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- 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.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Clarify source of f function in TailCalls flatMap
|
| | |_|/ /
| |/| | | |
|
| | | | | |
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
DRY-er trees in pattern matcher code gen.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
|\ \ \ \ \
| | |/ / /
| |/| | | |
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
janekdb/2.11.x-scaladoc-fix-one-off-dot-restart-note
Align DotRunner dot restart count with command option description
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
janekdb/2.11.x-remove-lagged-scaladoc-setttings-notes
Remove notes about -doc-title and -doc-version not being used
|
| | |/ / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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"
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
janekdb/2.11.x-add-missing-scaladoc-commands-to-help-output
Add two missed scaladoc commands into scaladoc specific help section
|
| | |/ / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
janekdb/2.11.x-scaladoc-excluded-classnames-more-data-like
Refactor excluded qname test to be more data like
|
| | |/ / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This refactoring extracts data from code into a form which is closer to
configuration data.
This is a step change toward making this configurable.
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |\ \ \ \
| | | | | |
| | | | | | |
Attacking exponential complexity in TypeMaps
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- 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
|
| |\ \ \ \ \
| | |_|_|/ /
| |/| | | | |
less confusing wording for a dependent method type error
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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
|
| |\ \ \ \
| | | | | |
| | | | | | |
Improvements to the sbt build
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |\ \ \ \
| | | | | |
| | | | | | |
Multi output problem with delambdafied compilation
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This source is then used to figure out output folder for
compilation product.
|
| | | | | | |
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |\ \ \ \
| | | | | |
| | | | | | |
it's Scaladoc, not ScalaDoc
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | | |
renaming the existing ScalaDoc and ScalaDocReporter classes might
break stuff, sadly, but at least we can fix the rest
|
| |\ \ \ \
| | | | | |
| | | | | | |
SI-9497 Fix SetLike#clear() default implementation
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| |\ \ \ \ \
| | | | | | |
| | | | | | | |
[SI-9503] Deprecate scala.collection.immutable.PagedSeq
|
| | | | | | | |
|
| | |_|/ / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- 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
|
| |\ \ \ \ \
| | |_|/ / /
| |/| | | | |
Conform foreach tparam to majority naming convention
|
| | |/ / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
'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.)
|
| |\ \ \ \
| | |/ / /
| |/| | | |
Remove two lingering `println`s in non-debug methods of the library.
|
| | | | | |
|
| |\ \ \ \
| | | | | |
| | | | | | |
misc upgrades to README
|