| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
| |
[Jakob Odersky <jodersky@gmail.com>: remove obsolete comments and fix tests]
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
SI-9560 Remove dependency on parser-combinators/json
|
| |
| |
| |
| |
| |
| |
| | |
Also update a few example IDE files for Eclipse and IntelliJ.
This drops the dependency by integrating the bare minimum functionality
to keep things working.
|
|\ \
| | |
| | | |
SI-8774 Null link fields in mutable LinkedHashMap (and friends) on remove
|
| |/ |
|
|\ \
| | |
| | | |
Deprecate and rename Left#a/Right#b to Left#value/Right#value
|
| | | |
|
|\ \ \
| | | |
| | | | |
SD-186 Fix positions in trait method bytecode
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Concrete, non private methods in traits are translated into a static
method with an explicit `$this` parameter. After this translation,
the references to `$this` (subistuted for `this` in user written code)
where being positioned at the position of the method, which makes
debugging unpleasant.
This commit leaves the `Ident($this)` trees unpositioned. This is
analagous to what we do in the body of extension methods, which
is the other user of `ThisSubstitutor`.
It would be more correct to copy the position of each `This`
tree over to the substituted tree. That would let us set a breakpoint
on a line that _only_ contained `this`. But in 99% of cases users
won't be able to spot the difference, so I've opted for the tried
and tested approach here.
|
|\ \ \ \
| | | | |
| | | | | |
SD-120 Non FunctionN lambdas should not be universally serializable
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead, we follow the example set by javac, and predicate serializability
of bot anon-class and invokedynamic-based lambdas on whether or not the
SAM type extends java.io.Serializable.
Fixes https://github.com/scala/scala-dev/issues/120
|
|\ \ \ \
| |/ / /
|/| | | |
SD-121 Remove now-unneeded J{Function,Proc}N functional interfaces
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Non specialized functions can directly use `scala.FunctionN` as the
functional interface, now that mixin generates default methods in
the new trait encoding.
Unfortunately we can't do this for specialized functions as things
stand: specialization leaves the wrong method abstract. In principle,
we could/should amend the specialization transform to fix this. But
my earlier attempts at this weren't sucessful, so for now we have
to stick with the fallback plan of keeping some hand rolled functional
interfaces around.
This commit reduces the surface area of `scala.runtime.java8` to
the minimal requiremnt: one functional interface for each specialized
variant of `Function{0,1,2}`.
|
|\ \ \
| | | |
| | | | |
upgrade asm to 5.1
|
|/ / /
| | |
| | |
| | |
| | | |
The constructor of scala.tools.asm.Handle now takes an additional
boolean parameter to denote whether the owner is an interface.
|
|\ \ \
| | | |
| | | | |
SI-7301 Make tuple classes final
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This includes undoing the special case for `-Xfuture` introduced in
https://github.com/scala/scala/pull/2299 and updating tests to take
the new errors into account.
|
|\ \ \ \
| | | | |
| | | | | |
SI-9827 MatchIterator advances itself
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
To avoid caveats about calling `next` (or `hasNext`) before
using `MatchData` methods on `MatchIterator`, just do it
internally as necessary.
Note `MatchIterator` behavior in the docs.
Added tests showing what people cried about.
|
|\ \ \ \
| | | | |
| | | | | |
SI-6947 Better type parameter names for Map classes
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Type parameter names are currently assigned pretty much alphabetically
without any meaning. This change renames all key parameters in Map
classes from `A` to `K` and all value parameters from `B` to `V` to
make them more meaningful. Derived names are renamed accordingly (e.g.
`V1` instead of `B1` for an upper bound on `V`, `W` instead of `C` for
a new value type).
As a side-effect this solves the documentation problem in SI-6947. Due
to using `B` both as a type parameter for `foldLeft[B]` in
`GenTraversableOnce[A]` and in `Map[A, B]` which extends
`GenTraversableOnce[(A, B)]`, the signature of `Map.foldLeft` was
rendered in scaladoc as
def foldLeft[B](z: B)(op: (B, (A, B)) ⇒ B): B
Now you get an unambiguous version:
def foldLeft[B](z: B)(op: (B, (K, V)) ⇒ B): B
|
|\ \ \ \
| | | | |
| | | | | |
SI-4826 Retain javadoc comments in scaladoc [ci: last-only]
|
| | |/ /
| |/| |
| | | |
| | | |
| | | | |
* Hook into java parser to generate doc comments
* Generate empty trees for java implementation bodies
|
|\ \ \ \
| | | | |
| | | | | |
Switch the bootstrap build over to sbt
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
All of the individual ant builds that occured during `bootstrap` are
replaced by equivalent sbt builds.
- Allow extra dashes in version suffix when using SPLIT
- Clean up ScriptCommands
- Building an extra `locker` for stability testing with ant was not
necessary but sbt also drops `strap`, so we need to build again
with `quick` to get the equivalent of `strap`. The script for checking
stability is invoked directly from the bootstrap script, not from sbt.
- `STARR` and `locker` build output is still logged to `logs/builds`,
the main build runs log directly to the main console with colored
output.
- Allow `—show-log` option on partest command line in sbt
- Normalize inferred LUB in `run/t7747-repl.scala`
- Add `normalize` feature from `ReplTest` to `InteractiveTest`
- Normalize inferred LUBs in `presentation/callcc-interpreter`
|
|\ \ \ \
| | | | |
| | | | | |
SI-9855 Fix regression in extractor pattern translation
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In faa5ae6, I changed the pattern matchers code generator to
use stable references (`Ident`-s with the singleton type, rather
than the widened type) to the synthetic vals used to store
intermediate results ("binders").
In the case where the scrutinee matched the unapply parameter
type of some extractor pattern, but the pattern subsequently
failed, this led to an regression.
It turns out that this was due to the way that the type of
the binder was mutated to upcast to the exact type of a subsequent
pattern in `ensureConformsTo`:
https://github.com/scala/scala/blob/953559988/src/compiler/scala/tools/nsc/transform/patmat/MatchTranslation.scala#L165-L174
This was added in 32c57329a as a workaround for the problem caused
in t6664.scala, when the binder type was `KList with KCons`, and
the code generator wasn't able to find the case field accessors
for `KCons` in the decls.
The change to use stable references meant that this mutation was
now observed in another part of the tree, as opposed to the 2.11.8
situation, where we had used the original, sharper type of the binder
eagerly to assign to the `Ident` that referred to it. This led to
a tree:
Assign(Ident(x3), Ident(x1).setType(x1.tpe)
Now that we instead refer generate:
Assign(Ident(x3), Ident(x1).setType(stableTypeFor(x1))
and we don't typecheck this until after the mutation of `x1.symbol.info`,
we can get a type error.
This commit removes this mutation of the binder type altogether, and
instead uses `aligner.wholeType`, which is based on the result type of
the `Apply(TypeTree(MethodType(params, resultType))` that encodes a
typechecked constructor pattern. In `t6624.scala`, this is `KCons`,
the case class that has the extractors as its decls.
|
|\ \ \ \
| | | | |
| | | | | |
Deprecated and rename Some#x to Some#value
|
| | |/ /
| |/| | |
|
|\ \ \ \
| |/ / /
|/| | | |
SI-9691 BufferedIterator should expose a headOption
|
|/ / /
| | |
| | |
| | | |
This exposes a new API to the BufferedIterator trait. It will return the next element of an iterator as an Option. The return will be Some(value) if there is a next value, and None if there is not a next element.
|
|\ \ \
| | | |
| | | | |
SI-8561 named subclasses for known Manifest / ClassTag instances
|
| | |/
| |/|
| | |
| | |
| | |
| | | |
This helps keeping ClassTag serialization stable under accidental
changes (like changing the order of definitions, which would change the
name of the anonymous classes).
|
|\ \ \
| | | |
| | | | |
Avoid triple-quoting triple quotes in printer
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Since octal escape is deprecated, use unicode escape
for string representation of constants.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
To quote a triple quote, only quote one quote.
Refactors the code for legibility.
Adds test for other inline cruft like control chars.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The boolean test for triples was inadvertently flipped.
Adds test for pretty printed multiline strings
|
|\ \ \ \
| | | | |
| | | | | |
If Range is sealed, it makes sense to have Range.Inclusive final.
|
| |/ / / |
|
|\ \ \ \
| | | | |
| | | | | |
SI-9849 set privateWithin on default getters
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A default getter get the same access flag (private / protected) as the
method whose default it implements. However, we forgot to set the
privateWithin flag, which defines the scope in a qualified private /
protected modifier.
For a private[p], the default getter was therefore public, which is less
restricted (a private[p] method has privateWithin set to p, but the
private flag is not set). For a protected[p], the default getter was
protected, which is more restricted.
|
|\ \ \ \
| | | | |
| | | | | |
Right-bias Either
|
| | | | | |
|