| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of scattering properties all over invocations of
staged-docs, staged-pack, make-bundle, copy-bundle and mvn-package,
these are now all fully determined by the project they act on.
The varying arguments to these macros are all centralized.
They are named like `project.prop`, where `prop` is one of:
description, package, dir, name, namesuffix, version,
targetdir, targetjar, jar, docroot, skipPackage, srcdir, src, srcjar.
The defaults for these properties are computed using `init-project-prop`.
|
|\
| |
| | |
- parallel collections should use default ExecutionContext
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Parallel collections now use `scala.concurrent.ExecutionContext`
by default.
The `ExecutionContextTaskSupport` is optimized to use the
`ForkJoinPool` underlying the `ExecutionContext` if possible.
Otherwise, a fallback `TaskSupport` that creates a reduction tree and
execute an operation through `Future`s is used.
|
|\ \
| | |
| | | |
Fix typo in ParIterableLike
|
|/ /
| |
| | |
from Issue #3098, some typos.
|
|\ \
| | |
| | | |
SI-7944 FOUND: stray undetermined type params in vicinity of implicits
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Implicit search created a nested Context into which the results of
its typechecking, namely, errors and undetermined type parameters
(roughly: those inferred as Nothing) are stashed.
The code the drives the process was checking for errors, but
discarded those undetermined type parameters.
This commit copies them from the child context to the parent,
which lets `Typer#adapt` to get to:
else if (hasUndetsInMonoMode) { // (9)
assert(!context.inTypeConstructorAllowed, context) //@M
instantiatePossiblyExpectingUnit(tree, mode, pt)
}
Our lost TypeVar has found its way home! The reward for which
is being instantiated, based on another type inference session
adapting the expression's type to the expected type.
|
|\ \ \
| | | |
| | | | |
Cleanup tools/*
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The scripts to fire up a compiler or REPL from build products
have bitrotted just enough to get rid of them. They do not
include the correct JLine, nor the scala modules.
I've also removed showPickled and diffPickled which were
based on these, and were also based on some code in
ShowPickled that no longer exists since 48cc8b4.
|
| | | |
| | | |
| | | |
| | | | |
I suggest using the scala-checkin-manual Jenkins job instead.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It delivered us the terser 't1234' naming convention for test
cases. Its work is done.
This commit does the bidding of the script's author:
> Despite its shameful hackiness, checked in for posterity.
> It'll live on forever in the git history; then I can remove it.
|
| | | |
| | | |
| | | |
| | | | |
We no longer maintain a fork.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Only used on the 2.9.x series:
/code/jenkins-config grep -R epfl-build .
./jobs/scala-nightly-checkinit-2.9.x/config.xml: <command>./tools/epfl-build 2.9.x -Xcheckinit</command>
./jobs/scala-nightly-main-2.9.x/config.xml:./tools/epfl-build 2.9.x && ./tools/epfl-publish 2.9.x
/code/jenkins-config grep -R epfl-publish .
./jobs/scala-nightly-main-2.9.x/config.xml:./tools/epfl-build 2.9.x && ./tools/epfl-publish 2.9.x
|
| | |/
| |/|
| | |
| | | |
This has lived in scala/make-release-notes for some time.
|
|\ \ \
| |_|/
|/| | |
Collections: remove redundant calls to .seq
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Students of Scala's history might recall that at introduction of
parallel collections, GenIterable et al were *not* added; instead
the parallel collections inherited from the existing interfaces.
This of course was an invitation to widespread disaster as any
existing code that foreach-ed over a collection might now experience
unwanted concurrency.
The first attempt to fix this was to add the `.seq` method to
convert a parallel colleciton to a sequential one. This was added
in e579152f732, and call sites in the standard library with
side-effecting foreach calls were changed to use that.
But this was (rightly) deemed inadequate, as we could hardly expect
people to change existing code or remember to do this in new code.
So later, in 3de96153e5b, GenIterable was sprouted, and parallel
collections were re-parented.
This commit removes residual needless calls to .seq when the static
type of the receiver is already a plain Iterable, which are no-ops.
|
|\ \
| | |
| | | |
Microoptimization in implicit search
|
| |/
| |
| |
| | |
Avoid creating a throwaway list of parameter types.
|
|\ \
| | |
| | | |
SI-7605 Deprecate procedure syntax
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit covers three cases:
- constructor definitions (def this {...})
- concrete method definitions (def foo {...})
- abstract method declarations (def foo)
The deprecation is currently hidden behind -Xfuture pending IDE support
for migrating users from procedures to methods.
|
|\ \ \
| | | |
| | | | |
SI-6385 Avoid bridges to identical signatures over value classes
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As Paul noted in the comments to SI-6260 (from which I mined some
test cases) "there is no possible basis for conflict here":
scala> class C[A](val a: Any) extends AnyVal
defined class C
scala> class B { def x[A](ca: C[A]) = () }
defined class B
scala> class D extends B { override def x[A](ca: C[A]) = () }
<console>:8: error: bridge generated for member method x: [A](ca: C[A])Unit in class D
which overrides method x: [A](ca: C[A])Unit in class B
clashes with definition of the member itself;
both have erased type (ca: Object)Unit
class D extends B { override def x[A](ca: C[A]) = () }
^
What was happening?
Bridge computation compares `B#x` and `D#x` exitingErasure, which
results in comparing:
ErasedValueType(C[A(in B#x)]) =:= ErasedValueType(C[A(in D#x)])
These types were considered distinct (on the grounds of the unique
type hash consing), even though they have the same erasure and
involve the same value class.
That triggered creation of an bridge. After post-erasure eliminates
the `ErasedValuedType`s, we find that this marvel of enginineering is
bridges `(Object)Unit` right back onto itself. The previous
resolution of SI-6385 (d435f72e5fb7fe) was a test case that confirmed
that we detected the zero-length bridge and reported it nicely, which
happened after related work in SI-6260. But we can simply avoid
creating in it in the first place.
That's what this commit does. It does so by reducing the amount
of information carried in `ErasedValueType` to the bare minimum needed
during the erasure -> posterasure transition.
We need to know:
1. which value class wraps the value, so we can box and unbox
as needed
2. the erasure of the underlying value, which will replace this
type in post-erasure.
This construction means that the bridge above computation now
compares:
ErasedValueType(C, Any) =:= ErasedValueType(C, Any])
I have included a test to show that:
- we don't incur any linkage or other runtime errors in the
reported case (run/t6385.scala)
- a similar case compiles when the signatures align
(pos/t6260a.scala), but does *not* compile when the just
erasures align (neg/t6260c.scala)
- polymorphic value classes continue to erase to the instantiated
type of the unbox: (run/t6260b.scala)
- other cases in SI-6260 remains unsolved and indeed unsolvable
without an overhaul of value classes: (neg/t6260b.scala)
In my travels I spotted a bug in corner case of null, asInstanceOf
and value classes, which I have described in a pending test.
|
|\ \ \ \
| |_|_|/
|/| | | |
Rework build to allow publishing core to maven
|
| | | |
| | | |
| | | |
| | | | |
Fix oversight in not skipping scalap's ad-hoc published docs on docs.skip.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`ant publish-core-signed-opt-nodocs` creates and publishes the smallest
possible set of jars (library/reflect/compiler) we can send to maven.
It uploads jars with class files and sources, but no docs
(so that we don't need to build scaladoc or any other modules).
`ant publish-core-signed-opt` is similar, but also publishes docs.
For local experimentation: `ant publish-core-local-nodocs`.
With a little bit more work, this can be used instead of `replacestarr`.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Use `unless` attribute in targets so that `docs.skip` influences dependency graph.
Create `scaladoc` task in `pack.core` so that we don't need `pack.done`
for publishing the core.
Move source bundle creation from `dist.src` to `osgi.core`/`osgi.done`.
Split dependencies of maven publishing into core/all variants:
`osgi.core` creates osgi bundles for just lib/reflect/comp.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Publish to maven with `ant publish.local`,
`ant publish`, or `ant publish.signed`.
For now, we must keep copying `src/build/maven/maven-deploy.xml`
to `dists/maven/latest.build.xml`, along with its dependencies,
as it's used by jenkins jobs and PR validation.
TODO: `inline src/build/maven/maven-deploy.xml` into `build.xml`.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
It tended too easily to get out of synch with build.xml.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
|\ \ \ \
| |_|/ /
|/| | | |
Check file maintainence
|
| | | |
| | | |
| | | |
| | | | |
(for f in $(find test -name '*.check' -o -name '*.flags'); do bare=$(echo $f | sed -E 's/\.\w+$//'); ([[ -f "$bare" ]] || [[ -d "$bare" ]] || [[ -f "$bare.scala" ]] || [[ -f "$bare.test" ]] || echo $f) done;) | xargs rm
|
|/ / /
| | |
| | |
| | | |
for f in $(find test -name '*.check' -o -name '*.flags'); do [[ $(wc -c $f | sed -E 's/ *([0-9]+).*/\1/') == "0" ]] && rm $f; done
|
|\ \ \
| | | |
| | | | |
Favour module accessors symbols in rebind
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The Refchecks tree transformer transforms a nested modules that
overrides a method into a pair of symbols: the module itself, and
an module accessor that matches the overridden symbol.
[[syntax trees at end of typer]] // test1.scala
package <empty> {
abstract trait C2 extends scala.AnyRef {
def O1: Any
};
class C1 extends AnyRef with C2 {
object O1 extends scala.AnyRef
}
}
[[syntax trees at end of refchecks]] // test1.scala
package <empty> {
abstract trait C2 extends scala.AnyRef {
def O1: Any
};
class C1 extends AnyRef with C2 {
object O1 extends scala.AnyRef
@volatile <synthetic> private[this] var O1$module: C1.this.O1.type = _;
<stable> def O1: C1.this.O1.type = {
C1.this.O1$module = new C1.this.O1.type();
C1.this.O1$module
}
}
}
When constructing a TypeRef or SingleType with a prefix and and a symbol,
the factory methods internally use `rebind` to see if the provided symbol
should be replaced with an overriding symbol that is available in that prefix.
Trying this out in the REPL is a bit misleading, because even if you change
phase to `refchecks`, you won't get the desired results because the transform
is not done in an InfoTransformer.
scala> val O1 = typeOf[C1].decl(TermName("O1"))
O1: $r.intp.global.Symbol = object O1
scala> typeRef(typeOf[C2], O1, Nil)
res13: $r.intp.global.Type = C2#O1
scala> res13.asInstanceOf[TypeRef].sym.owner
res14: $r.intp.global.Symbol = class C1
But debugging the test case, we get into `rebind` during an AsSeenFrom
which is where we crashed when `suchThat` encountered the overloaded
module and module accessor symbols:
typeOf[OuterObject.Inner.type].memberType(symbolOf[InnerTrait.Collection])
...
singleTypeAsSeen(OuterTrait.this.Inner.type)
val SingleType(pre, sym) = tp
// pre = OuterTrait.this.type
// sym = OuterTrait.Inner
val pre1 = this(pre) // OuterObject.type
singleType(pre1, sym)
rebind(pre1, sym) // was crashing, now OuterObject.Inner
}
This commit excludes the module symbol from symbol lookup in the prefix in rebind.
|
|\ \ \ \
| | | | |
| | | | | |
More clear implicitNotFound error for ExecutionContext
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Update description of explicitouter phase.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Patern translation now happens earlier.
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
SI-7883 - don't iterate over all keys in MapWrapper.containsKey()
|
| | | | | | |
|