| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`Symbol::isStable` is now independent of `Symbol::hasVolatileType`,
so that we can allow stable identifiers that are volatile in ident patterns.
This split is validated by SI-6815 and the old logic in RefChecks,
which seems to assume this independence, and thus I don't think ever worked:
```
if (member.isStable && !otherTp.isVolatile) {
if (memberTp.isVolatile)
overrideError("has a volatile type; cannot override a member with non-volatile type")
```
Introduces `admitsTypeSelection` and `isStableIdentifierPattern` in treeInfo,
and uses them instead of duplicating that logic all over the place.
Since volatility only matters in the context of type application,
`isStableIdentifierPattern` is used to check patterns (resulting in `==` checks)
and imports.
|
| |
|
|\
| |
| | |
SI-7476 Add documentation to GenericTraversableTemplate
|
| | |
|
|\ \
| | |
| | | |
Fix formatting for couple of scaladocs in the compiler
|
| |/
| |
| |
| |
| |
| |
| | |
Source code on scaladoc for the virtual pattern matcher was not being
correctly identified as such. Also, I had to use an html code tag instead
of backticks when referring to the __match identifier, otherwise the
double underscore would be treated as start-of-underline wiki markup.
|
|\ \
| | |
| | | |
SI-7469 Make @deprecated elems in scala.concurrent private[scala]
|
| |/
| |
| |
| | |
They can't be removed yet because scala.actors depends on it.
|
|\ \
| | |
| | | |
SI-7469 Remove deprecated elements in s.u.parsing.combinator
|
| |/ |
|
|\ \
| | |
| | | |
SI-7469 Remove @deprecated MurmurHash elements
|
| |/ |
|
|\ \
| | |
| | | |
makes sense of implicit macros! now in master
|
| | |
| | |
| | |
| | | |
This is a port of https://github.com/scala/scala/commit/4e64a2731d from 2.10.x.
|
| | |
| | |
| | |
| | | |
This is a port of https://github.com/scala/scala/commit/b4da864247 from 2.10.x.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This is a port of https://github.com/scala/scala/commit/8168f118c9 from 2.10.x,
with an additional change to the `enclosingImplicits` and `openImplicits` APIs,
which encapsulates tuples of `pt` and `tree` into `ImplicitCandidate`.
|
| | |
| | |
| | |
| | | |
This is a port of https://github.com/scala/scala/commit/bb73b9669a from 2.10.x.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In January I submitted a pull request that, as I thought back then,
fixes SI-5923: https://github.com/scala/scala/commit/fe60284769.
The pull request was merged, and everyone was happy that the bug got fixed.
Unfortunately, the fix was: a) incomplete, b) broke something else,
as noticed by Miles in https://groups.google.com/d/topic/scala-internals/7pA9CiiD3u8/discussion.
Now we got a real fix in 2.10.x (https://github.com/scala/scala/commit/90ac5c4e13),
and it's my pleasure to port it to master.
|
|\ \ \
| | | |
| | | | |
SI-6039 Harden against irrelevant filesystem details
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The symbol loader need not create and populate package
symbols merely because there is a directory somewhere.
Every package created based on the existence of a directory
should contain a classfile, either directly or indirectly.
|
|\ \ \ \
| | | | |
| | | | | |
fix typo in comment
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
AbstractFile.getDirectory does not return null when outDir is "."
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|_|_|/
|/| | | | | |
SI-7469 Remove @deprecated scala.util.parsing.ast
|
|/ / / / / |
|
|\ \ \ \ \
| |_|_|_|/
|/| | | | |
Limit unnecessary calls to Type#toString.
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Logging revealed a few thousand calls to the often expensive
Type#toString emerging from tailcalls. The error message was
being generated for all methods even though it was only issued
in rare cases (and for the particular tailrec failure which
made the call, extremely rare.)
The remaining boatload of unnecessary Type#toString calls are
much harder to fix due to the design of "AbsTypeError" and the
fact that the compiler approaches mutability like a cat approaches
a loaded gun. See SI-6149.
|
|\ \ \ \
| | | | |
| | | | | |
SI-7432 Range.min should throw NoSuchElementException on empty range
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
For consistency, range.max and range.min should throw
NoSuchElementException on an empty range.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Par-Test includes log in transcript of failed exec
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The previous behavior was that the Failure is generated
before the log is appended to the transcript.
That meant that the summary transcripts wouldn't include
the log file. Luckily, the transcript would say something
like "jvm > showFail-run.log".
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Boil out some duplicated parser logic.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Our focus today is on packages and package objects.
|
|/ / / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6863 root cause fixed using factory of scala.runtime.*Ref
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This commit does away with an error-prone division of labor between
UnCurry and LambdaLift, a division of labor by which UnCurry had to
anticipate under which circumstances LambdaLift creates a
scala.runtime.*Ref whose initial value is given by a an expression
including a Try in non-statement position. That sounds complicated,
and it is.
The solution so far (fixing SI-6863) is replaced by a simpler approach,
at the cost of forward binary comptability with pre-2.11 releases,
this time fixing the root cause of SI-6863.
From now on, a s.r.*Ref is instantiated via invocation of
a static factory method in the s.r.*Ref class in question.
Unlike the code that was emitted so far (which involved
NEW refclass, DUP, expr, INVOKESPECIAL refclass.<init>)
the "expr" doesn't appear on the operand stack on top
of the *Ref value being initialized. In other words,
the *Ref initialization is in statement position provided "expr" is.
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
Partest can --show-diff again after incremental report.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
A flag is set in NestUI to look for "diff" in the transcript
of failing tests.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Hardening against nulls for deserialization.
|
| | |_|_|_|/
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When one attempts to populate data structures via
deserialization, nulls tend to show up in unlikely or
"impossible" places. Now there are a few fewer.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
Absolutized paths involving the scala package.
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Confusing, now-it-happens now-it-doesn't mysteries lurk
in the darkness. When scala packages are declared like this:
package scala.collection.mutable
Then paths relative to scala can easily be broken via the unlucky
presence of an empty (or nonempty) directory. Example:
// a.scala
package scala.foo
class Bar { new util.Random }
% scalac ./a.scala
% mkdir util
% scalac ./a.scala
./a.scala:4: error: type Random is not a member of package util
new util.Random
^
one error found
There are two ways to play defense against this:
- don't use relative paths; okay sometimes, less so others
- don't "opt out" of the scala package
This commit mostly pursues the latter, with occasional doses
of the former.
I created a scratch directory containing these empty directories:
actors annotation ant api asm beans cmd collection compat
concurrent control convert docutil dtd duration event factory
forkjoin generic hashing immutable impl include internal io
logging macros man1 matching math meta model mutable nsc parallel
parsing partest persistent process pull ref reflect reify remote
runtime scalap scheduler script swing sys text threadpool tools
transform unchecked util xml
I stopped when I could compile the main src directories
even with all those empties on my classpath.
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Rewrite TailCalls for performance and immutability.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
While logging symbols created after typer, I discovered that
TailCalls was far and away the largest creator. It turns out
this was due to a bug where thousands of labels were eagerly
created during tail call analysis, even if the method weren't
tail recursive and no label would ever be required.
This commit shaves 10% off the total number of method symbol
creations (compiling quick.lib drops from 88K to 80K.)
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Merge 2.10.x
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Conflicts:
bincompat-forward.whitelist.conf
src/compiler/scala/tools/nsc/matching/Patterns.scala
src/compiler/scala/tools/nsc/transform/patmat/Logic.scala
src/compiler/scala/tools/nsc/typechecker/Infer.scala
src/scaladoc/scala/tools/nsc/doc/model/ModelFactory.scala
test/files/neg/t5663-badwarneq.check
|