| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- 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
|
| | |
| | |
| | |
| | |
| | |
| | | |
* be clearer about required JDK versions
* eliminate redundancy with existing src/eclipse and src/intellij readmes
* give IntelliJ readme a .md extension
|
|\ \ \
| | | |
| | | | |
SI-9508 fix classpaths in Eclipse configuration
|
| | |/
| |/| |
|
|\ \ \
| | | |
| | | | |
SI-9513 decrement "deleted" count in OpenHashMap.put() when slot reused
|
| | | | |
|
| |/ / |
|
|\ \ \
| | | |
| | | | |
explicitly specify insertion-order feature in docs
|
| | |/
| |/| |
|
|\ \ \
| | | |
| | | | |
SI-9492 REPL paste here doc
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Use `-` stripmargin character to indicate trim (i.e.
remove leading indentation). `<<` looks more like
shift left, but is already the standard here doc sequence.
Indentation is often mangled by pasting, so trimming
normalizes lines for error messages. The entire paste
text was already trimmed as a whole.
`-Dscala.repl.here` provides a default end string, which
is unset unless specified.
```
scala> :pa <-
// Entering paste mode (ctrl-D to finish)
def g = 10
def f! = 27
--
// Exiting paste mode, now interpreting.
<console>:2: error: '=' expected but identifier found.
def f! = 27
^
```
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Simple here documentish syntax for REPL paste.
This makes it easier to paste a block of script
(as opposed to transcript).
It also means you won't accidentally ctl-D out
of the REPL and then out of SBT and then out of
the terminal window.
```
scala> :paste < EOF
// Entering paste mode (EOF to finish)
class C { def c = 42 }
EOF
// Exiting paste mode, now interpreting.
defined class C
scala> new C().c
res0: Int = 42
scala> :paste <| EOF
// Entering paste mode (EOF to finish)
|class D { def d = 42 }
EOF
// Exiting paste mode, now interpreting.
defined class D
scala> new D().d
res1: Int = 42
scala> :quit
```
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Align parameters names to use p for predicates and op for combining operations.
Based on #4760. Extended to include,
- Tuple2Zipped
- Tuple3Zipped
- Either
The original author was vsalvis.
|
| | | |
|
| |/
|/| |
|
|\ \
| | |
| | | |
SI-9502 Update Eclipse classpaths for scaladoc project.
|
| | | |
|
|\ \ \
| | | |
| | | | |
get test suite passing on Windows
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
this was causing a mysterious compilation failure on Windows. (it may
not have been a sufficient cause in itself -- which is why I say
"mysterious" -- but in any case, adding the newline made the failure
go away. and besides, the newline should be there. so here it is.)
(it's tempting to make a big commit that fixes this in every
source file. resisting for now)
|
| | | |
| | | |
| | | |
| | | | |
includes comment with full details
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
usually it hardly matters, but it's still a bug, and on Windows we
can't delete an open file, so this can cause trouble for someone
writing a test that relies on being able to generate icode files
and then clean them up afterwards. (and in fact, two
IcodeComparison-based tests were failing.)
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Improve implicits wildcard imports in the IDE
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In 451cab967a, I changed handling of selection of members from
package objects so as to correctly use `somePackage.package.type`
as the prefix, rather than `somePackage`. This fixed generic
substitution for members inherited from superclasses of the
package object.
However, this has subtly changed the scope from which we collect
implicits given a wildcard import. It seems that the IDE gets into
a situation after a scaladoc lookup, which temporarily typechecks
the sources of a package object of a third party library, in which
the members of package object differ from the members of the enclosing
package.
The upshot of this was spurious type errors due to implicit search
discarding an candidate implicit whose symbol is not matched by
typechecking an identifier with the symbol's name at the implicit
usage site (this is how we discard shadowed implicits.)
I'd like to ge to the bottom of this, but in the meantime, I've found
that we can fix the regression by looking up the implicit member
symbols in the package, even while correctly using the package object
as the prefix.
|
|/ / /
| | |
| | |
| | |
| | | |
Previously _.result() was invoked in the "real" ExecutionContext, but this is an
unnecessary use of the context.
|
| | | |
|
|\ \ \
| |_|/
|/| | |
SI-9029 Fix regression in extractor patterns
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
It remains from the days of yore, when patterns survived this long
in the compiler.
|
| | | |
|