| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
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
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- Add operations like map, flatMap which assume right-bias
- Deprecate {Left,Right}Projection
- Deprecate left and right in favor of swap
- Add contains, toOption, toTry, toSeq and filterOrElse
- toSeq returns collection.immutable.Seq instead of collection.Seq
- Don't add get
There are no incompatible changes.
The only possibility of breakage that exists is when people have added
extension methods named map, flatMap etc. to Either in the past doing
something different than the methods added to Either now.
One detail that moved the scales in favor of deprecating LeftProjection
and RightProjection was the desire to have toSeq return
scala.collection.immutable.Seq instead of scala.collection.Seq
like LeftProjection and RightProjection do.
Therefore keeping LeftProjection and RightProjection would introduce
inconsistency.
filter is called filterOrElse because filtering in a for-comprehension
doesn't work if the method needs an explicit argument.
contains was added as safer alternative to
if (either.isRight && either.right.get == $something) ...
While adding filter with an implicit zero value is possible, it's
dangerous as it would require that developers add a "naked" implicit
value of type A to their scope and it would close the door to a future
in which the Scala standard library ships with Monoid and filter could
exist with an implicit Monoid parameter.
|
|\ \ \ \ \
| |_|_|_|/
|/| | | | |
Remove redundant 'the' in IntelliJ's README.md
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
Group math package functions
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Groups
- Mathematical Constants
- Minimum and Maximum
- Rounding
- Exponential and Logarithmic
- Trigonometric
- Angular Measurement Conversion
- Hyperbolic
- Absolute Values
- Signs
- Root Extraction
- Polar Coordindates
- Unit of Least Precision
Other changes,
- Dropped use of `double` for `Double` in all cases
- Grouped some methods in the source
- Extended notes about exception to method forwarding
- Minor method documentation enhancements
IEEERemainder is in the Rounding group since it is related to rounding
and did not justify a new group.
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
Fix typo in test comment
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-9515 closure elimination also for non-Scala-Function SAM types
|
| | |_|/ /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Also logged in as SD-162
The optimizer had conservative checks in place to perform closure
elimination only for Scala Function types. We can eliminate IndyLambda
instructions for any functional interface. LambdaMetaFactory only
constructs lambda objects for interface types, which don't have any
side-effects on construction - they don't have a constructor.
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
SI-9817 immutable queue `forall` and `exists` implementations
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
SI-9817 Immutable queue formatting
SI-9817 Added comments
SI-9817 Comment formatting
|
|\ \ \ \
| | | | |
| | | | | |
Bump STARR to 2.12.0-M5.
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
Emit trait method bodies in statics [rebase of #5177]
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This commit switches to using 2.12.0-M3-dc9effe as STARR,
so that we can switch to the new trait encoding where
each concrete trait member gets a a static member,
which has the actual implementation (as well as
serving as a target for for super calls using invokestatic),
and a default member (forwards to the static member).
Also bump partest to 1.0.17 -- the release that goes
with the in-sourcing of scalacheck.
Replace a few more -Yopt with -opt (for our new STARR)
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Keeping diff minimal since this will need to be reverted
once 2.12.0 is final.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
And use this as the target of the default methods or
statically resolved super or $init calls.
The call-site change is predicated on `-Yuse-trait-statics`
as a stepping stone for experimentation / bootstrapping.
I have performed this transformation in the backend,
rather than trying to reflect this in the view from
Scala symbols + ASTs.
We also need to add an restriction related to invokespecial to Java
parents: to support a super call to one of these to implement a
super accessor, the interface must be listed as a direct parent
of the class.
The static method names has a trailing $ added to avoid duplicate
name and signature errors in classfiles.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This partially reverts the fix for SI-5278 made in 7a99c03da.
The original motivation for this case to avoid bytecode that
stretched platform limitations in Android.
For super calls to Scala defined trait methods, we won't
use `invokespecial`, but rather use `invokestatic` to a
static trait implementation method. As such, we can continue
to prune redundant Scala interfaces.
It might be worth considering removing the pruning of
redundant parents altoghether, though:
- We no longer include `ScalaObject` as a parent of every class,
which was mentioned as a problem in SI-5728.
- Scala 2.12 has left Android behind for the time being
due to use of Java 8 facilities.
- javac doesn't do this, so why should we?
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This corrects an error in the change to the trait encoding
in #5003: getters in traits should have empty bodies and
be emitted as abstract.
```
% ~/scala/2.12.0-M4/bin/scalac sandbox/test.scala && javap -c T
Compiled from "test.scala"
public interface T {
public abstract void T$_setter_$x_$eq(int);
public int x();
Code:
0: aload_0
1: invokeinterface #15, 1 // InterfaceMethod x:()I
6: ireturn
public int y();
Code:
0: aload_0
1: invokeinterface #20, 1 // InterfaceMethod y:()I
6: ireturn
public void y_$eq(int);
Code:
0: aload_0
1: iload_1
2: invokeinterface #24, 2 // InterfaceMethod y_$eq:(I)V
7: return
public void $init$();
Code:
0: aload_0
1: bipush 42
3: invokeinterface #29, 2 // InterfaceMethod T$_setter_$x_$eq:(I)V
8: aload_0
9: bipush 24
11: invokeinterface #24, 2 // InterfaceMethod y_$eq:(I)V
16: return
}
% qscalac sandbox/test.scala && javap -c T
Compiled from "test.scala"
public interface T {
public abstract void T$_setter_$x_$eq(int);
public abstract int x();
public abstract int y();
public abstract void y_$eq(int);
public static void $init$(T);
Code:
0: aload_0
1: bipush 42
3: invokeinterface #21, 2 // InterfaceMethod T$_setter_$x_$eq:(I)V
8: aload_0
9: bipush 24
11: invokeinterface #23, 2 // InterfaceMethod y_$eq:(I)V
16: return
public void $init$();
Code:
0: aload_0
1: invokestatic #27 // Method $init$:(LT;)V
4: return
}
```
|
|\ \ \ \
| |_|/ /
|/| | | |
Temporarily insource Scalacheck
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This was throwing a UnsupportedOperationError for small operations.
The parallel collections test suite sets `-minSuccessfulTests 5` in
test/files/scalacheck/parallel-collections/pc.scala, which is far
lower thatn the default of 100, and means that we are less likely
to falsify properties.
This parameter seems to have been added in #2476, assuming I'm reading
it correctly. Not sure of the motiviation, perhaps just to make the
slowest part of the scalacheck test suite run faster?
I haven't changed the paramater now, but instead have included a one
element collection in generator.
I also found that when the test failed, Scalacheck would try to minimize
the example, but did so assuming that the elements of the tuple of
test data could be independentally shrunk. This breaks the invariant
that the two collections contain equal elements, and led to spurious
error reports. I have disabled shrinking in all tests tests affected
by this.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is a temporary measure until we release Scala
2.12.0. It means we are able to release milestones,
and RCs of Scala without needing a public release of
Scalacheck. While we've never had to wait very long
for these in the past (Thanks, Rickard!) we'd like
to spare the maintainer some work betwen now and 2.12.0.
After we release Scala 2.12.0, we'll revert to a binary
dependency on the standard Scalacheck.
I have replaced the scala-parser-combinator based
command line option parsing with a quick and dirty
version.
I've had to remove scalacheck as a SBT test framework
in our build. We don't use it directly as such (instead,
it is used indirectly through `partest --scalacheck`),
and it's test discovery (which we expect to return nothing)
fails after re-STARR-ing due to an unsolved problem with
SBT's testLoader including either STARR or sbt-launch.jar
on the classpath used to discover and spawn tests.
For the record, I tried the following to no avail:
```
// Two modifications are needed from the stock SBT configuration in order to exclude STARR
// from the classloader that performs test discovery.
// - We make `isManagedVersion` hold by providing an explicit Scala version, in order to go into the desired
// branch in `createTestLoader`
// - We remove STARR from the classloader of the scala instance
def fixTestLoader = testLoader := {
val s = scalaInstance.value
val scalaInstance1 =
new ScalaInstance(s.version, appConfiguration.value.provider.scalaProvider.loader(), s.libraryJar, s.compilerJar, s.extraJars, Some(s.actualVersion))
assert(scalaInstance1.isManagedVersion)
TestFramework.createTestLoader(Attributed.data(fullClasspath.value), scalaInstance1, IO.createUniqueDirectory(taskTemporaryDirectory.value))
}
```
f
|
|\ \ \
| |/ /
|/| | |
Merge 2.11 to 2.12 [ci: last-only]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- More memory for compiling partest tests
- Enable more detailed logging for partest failures:
Partest’s `AntRunner` has extra code for logging details of all failed
tests at the end of a run which is not present in `SbtRunner` but we
can set the `--show-log` and `--show-diff` options to get similar
output interspersed with the main test log.
- Update OSGi test dependencies for sbt build to same versions as in ant
(see 8247b8f077c96ba9a017b53de4d8062fe428c4a7 for the motivation for
this change).
- Disable MiMa checks (to be reactivated after M5).
|