| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Scaladoc compares (string representations of) the paths from
-doc-external-doc and the paths form `sym.underlyingSource`.
We now normalize on both ends before comparing them.
|
|\
| |
| | |
SI-8582 emit InnerClasses attribute in GenBCode
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I removed the `-bcode` test since we have a build that passes
`-Ybackend:GenBCode` to all tests.
Short intro do the [`InnerClass` attribute][1]:
- A class needs one `InnerClass` attribute for each of its nested
classes
- A class needs the `InnerClass` attribute for all (nested) classes
that are mentioned in its constant pool
The attribute for a nested class `A$B$C` consists of the long name of
the outer class `A$B`, the short name of the inner class `C`, and
an access flag set describig the visibility.
The attribute seems to be used for reflection.
[1]: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.6
|
| | |
|
|/ |
|
|\
| |
| | |
SI-8582 Pending test for InnerClasses bug in GenBCode
|
|/
|
|
|
| |
As seen in a runtime reflection failure in Slick during a GenBCode
enabled run of our beloved Community Build.
|
|\
| |
| | |
SI-8578 Avoid fresh name clashes under -Ydelambdafy:method
|
| |
| |
| |
| |
| | |
No test case for this one, but see the preceding commit for
the class of bug that I'm trying to avoid.
|
| |
| |
| |
| |
| | |
It is important to append the fresh 'N' after '$'. Otherwise, we
find out the hard way that ("foo$11" + "1") == ("foo$1" + "11").
|
|\ \
| |/
|/| |
Issue/8325 spec update
|
| |
| |
| |
| |
| |
| | |
Remove the clause in 3.2.8 that reserves `*` as a postfix
modifier thing. For emphasis, the language that an infix
type name can be an arbitrary identifier is retained, sans buts.
|
|\ \
| | |
| | | |
SI-8576 Temporarily disable part of serialization test
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Parts of this test fail if testing a library built with -Xcheckinit.
The failures seem to be in two categories:
- A component of the serialized structure does not have a
declared SerialVersionUID, meaning that the extra field
added to track initialization results in a different ID.
This manifests as a `java.io.InvalidClassException` when
deserializing the blobs of data saved in the test case.
- Spurious `UnitializedFieldErrors` when calling methods on
the object that has been serialized and then deserialized.
Until we figure out the right course of action (more @SerialVersionUID
annotations / weaker tests / ...), this commit disabled those tests.
|
|\ \
| | |
| | | |
Fix checkinit build
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Fix only, refactoring in subsequent commit.
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Merge master to 2.11.x
|
|/| | | |
|
| |\ \ \
| | | | |
| | | | | |
Revert "SI-5905 Clarify test case"
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reverts commit 78bd175afcc89878ca1c00cce69d0517909c6ff3.
See discussion:
https://github.com/scala/scala/pull/3597#commitcomment-6270375
|
| |\ \ \
| | | | |
| | | | | |
SI-5905 Sanity check -language options
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The language feature options are discovered reflectively, but it
is nice to enforce that expected options are supplied.
Short of that, the code string includes a rowdy postfix operator.
It still does enforce that at least one option was discovered.
Delete -nowarn flags file. Let's see if that was to suppress
a warning in the standard build.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Underscore means all.
-x:c,b,a,_ results in value c,b,a,a,b,c,d,...
Currently, -Xprint does not present phases as a closed
set of choices; there is ad hoc checking in Global.
That would be a nice unification. (You don't know the
list of choices until after global is constructed.)
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The option names are hardcoded, but checked by a test.
There are no hooks to verify options after the compiler
is constructed.
Introduced a `MultiChoiceSetting` required for the
setting creation framework.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-8546 Pattern matcher analysis foiled by over-widening
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In the enclosed test, the prefix checkable type
`ModuleTypeRef(F2.this, C)` was being inadvertently widened to
`ModuleTypeRef(F2[?], C)`. This started after some misguided
future-proofing in SI-6771 / 3009916.
This commit changes the `dealiasWiden` to a `delias`.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-8531 Better space efficiency for patmat analysis
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
By adding logging to `clause`, I found that the majority of
calls provide 0 or 1 elements. In SI-7020 / 69557da55, we changed this
method to use a `LinkedHashSet` to have deterministic results
for clauses with more elements. But I suspect that this
contributes to higher memory usage from the pattern matcher.
The enclosed test case, carefully whittled down by @oxbowlakes,
used to consume an inordinate amount of memory and time.
After this patch, it is back to 2.10.4 performance.
I have run `neg/t7020.scala` in a loop and it still is deterministic.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Merge master to 2.11.x
|
| |\ \ \ \ \ \ \
| | | |_|/ / / /
| | |/| | | | | |
|
| | |\ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-8504 fix NPE in the Java wrapper for a Scala Map.
|
| | | | |/ / / /
| | | |/| | | |
| | | | | | | |
| | | | | | | | |
MapWrapper blindly calls .hashCode on keys that can very well be null.
|
| | |\ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
makes bundles friendly to -Ywarn-dead-code
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
Apparently, the `new Bundle(???).impl` synthetic tree generated as a
macro impl ref for bundles evokes -Ywarn-dead-code warnings.
This pull requests changes `???` to `null` in order not to stress out
the checker. What's in the argument doesn't actually make any difference
anyway.
|
| | |\ \ \ \ \ \ \
| | | | | | | | | |
| | | | | | | | | | |
SI-8550 fix scaladoc for the default s.c.LinearSeq.
|
| | | | |/ / / / /
| | | |/| | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
The default LinearSeq is a List (LinearSeq.newBuilder delegates to
immutable.LinearSeq.newBuilder, whose default is List).
|
| | |\ \ \ \ \ \ \
| | | | | | | | | |
| | | | | | | | | | |
SI-8549 Serialization: fix regression with @SerialVersionUID / start enforcing backwards compatibility
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
The `neg` test was already working since `SerialVersionUID`
was changed to a `ClassFileAnnotation`; the `run` test only
started working since the recently preceding commit that
made a compensatory test in the backend.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
To date, we've been hesidant to offer any guarantees about
Java serialization of standard library types among heteregenous
Scala versions.
Nonetheless, we have added `SerialVersionUID` annotations to
parts of the standard library, to offer some stability. This
protects against two winds of change: automatic calculation of
this UID might differ between JVM versions, or it might differ
due to otherwise immaterial changes to the library in Scala
releases.
With this commit, we strengthen the guarantees. Classes
marked with `SerialVersionUID` will be serialization compatible
within minor releases of Scala. This is backed up by the
enclosed test.
After major releases, we reserve the right to break this.
But the test will serve to avoid *accidental* changes.
Specifically, the test case checks:
- deserialize(serialize(x)) == x
- serialize(x) is stable over time
I have included values of all types marked with `@SerialVersionUID`
in the library. For some types, I've added variations in the
values to exercise different subclasses, such as `Set1` / `Set2`.
This found that that the serialized form of predefined `ClassTags`
included the cached identity hash code and failed the stability
test. This wasn't an issue for correctness as they also provide
`readResolve`, but I marked those fields as `@transient` in any
case to comply with the test expectations.
That whole area is good example of a serialization worst-practice:
using anonymous classes in code like:
val Object: Manifest[java.lang.Object] = new PhantomManifest[...](...) {
private def readResolve(): Any = Manifest.AnyVal
}
... will lead to instability if these declarations are shifted around
in the file. Named classes would be preferred. I've noted this in a
TODO comment for 2.12.
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
In PR #1673 / 4267444, the annotation `SerialVersionId` was
changed from a `StaticAnnotation` to `ClassFileAnnotation` in
order to avoid silently ignoring non-literal UIDs like:
@SerialVersionUID(0 - 12345L) class C
And to flag non-constant UIDs:
@SerialVersionUID("!!!".length)
While this indeed was fold constants, the change was incomplete.
The compiler API for reading the argument from a `ClassFileAnnoation`
is different, on must look for a `LiteralAnnotArg`, rather than a
`Literal`.
This commit:
- amends the backend accordingly
- removes relevant duplication between `GenASM` and `GenBCode`
- tests that the static field is generated accordingly
This will mean that we will break deserialization of objects from
Scalal 2.11.0 that use this annotation.
|
| | |\ \ \ \ \ \ \ \
| | | | | | | | | | |
| | | | | | | | | | | |
SI-8537 Puts SI-8157 fix under Xsource
|
| | | | | | | | | | | |
|
| | |\ \ \ \ \ \ \ \ \
| | | | | | | | | | | |
| | | | | | | | | | | | |
SI-8325 Accept infix star type outside patterns
|
| | |/ / / / / / / / /
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
This is a follow-up to SI-5702 which enabled use of
`*` in infix notation in patterns.
Most of the work is in distinguishing infix from a
sequence pattern.
Also, do not take backticked star as the repeated
parameter marker in postfix position. That is,
`Int``*``` is not `Int*` -- I hope double-tick
renders as tick. There is not a special use case
except that backticks mean "I am an identifier, as
is, and not a keyword."
|
|\ \ \ \ \ \ \ \ \ \ \
| |/ / / / / / / / / /
|/| | | | | | | | | | |
Disable 'unreachable' test for GenBCode
|