| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
No longer using the slightly reworded 3-clause BSD license.
This does not change the meaning of the license,
just aligns it with the standard wording.
|
|\
| |
| | |
SI-6507 completely sidestep handlers in REPL when :silent in on
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a cleanup of 6db8a52, the original fix for SI-6507.
When the REPL is :silent, all handlers are ignored when it comes to
generating the printed result. The result extraction code (`lazy val
resN = ...`) is still generated, but now it isn't called until the
user calls it.
|
|\ \
| | |
| | | |
Overhaul of partest-ack.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Seems like many/most options to partest are broken. Working
around as much as I can to make this thing useful again, plus
lots of improvements in robustness. Spaces and such are
preserved properly now, and I added a new way of selecting
tests based on time.
tools/partest-ack -s 1.week.ago
% tests modified since time ... 66
tools/partest-ack 'case object (Foo|Bar)'
% tests with matching paths ... 0
% tests with matching code ... 7
File paths and file contents are uniformly acked now, so
for instance this works as expected.
tools/partest-ack -i VIRTPAT
% tests with matching paths ... 41
% tests with matching code ... 11
# 43 tests to run.
|
|\ \
| | |
| | | |
Fix typo in sample code in scaladoc for package scala.sys.process
|
| | | |
|
|\ \ \
| | | |
| | | | |
ProcessBuilder.lines(log) *does* throw an exception.
|
| | | | |
|
|\ \ \ \
| |_|/ /
|/| | | |
Constructors refactoring [Rebase of #2715]
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
And it's a nice golf clinic and all, but let's remove our
golf gloves and take in some film.
for (stat <- defBuf.iterator ++ auxConstructorBuf.iterator)
A quick count:
- defBuf is a ListBuffer (1 mutant)
- auxConstructorBuf is a ListBuffer (2 mutants)
- two mutable iterators over mutable sequences (3, 4 mutants)
- Iterator.++ joins them and is BY-NAME (4 mutants, 1 tragedy in waiting)
- the joined Iterator is a new mutable structure (5 mutants, now 3 deep)
- omittables is a mutable Set (6 mutants)
- the 5-layer-3-deep iterator mutates omittables as it walks
[The following is a public service breakdown. The letter
sequence y-o-u is a local variable which should be replaced
with your name, whoever "you" are, if you commit any code in
these parts.]
Hear my plea! YOU DON'T HAVE TO DO IT THIS WAY! It isn't simpler,
faster, easier, more satisfying, shorter, more pixelated, there
just isn't any advantage to it, even if you're lazy! Especially
if you're lazy! Whatever combination of virtues and vices exist
in your personal petri dish, this will never be a hilltop!
PLEASE COME ENJOY A DRINK WITH ME AND MY FRIEND 'VAL' !!
I'LL INTRODUCE YOU! I THINK YOU WILL REALLY LIKE HER! I HOPE
YOU WILL SEE A LOT OF ONE ANOTHER! REMEMBER THAT NAME, 'VAL' !!
SHE'LL HAVE HER EYE OUT FOR YOU!
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This commit modularizes TemplateTransformer by moving two methods
from TemplateTransformer into the newly added OmittablesHelper.
The methods in question are:
- mergeConstructors(genericClazz, originalStats, specializedStats)
- guardSpecializedInitializer(stats)
That way, the rewriting that introduces a guard for the execution of
non-specialized ctor-statements is encapsulated in
trait GuardianOfCtorStmts.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This commit modularizes TemplateTransformer by moving a few members
from TemplateTransformer into the newly added OmittablesHelper.
The members in question include
- a few methods:
# isParamCandidateForElision(Symbol)
# isOuterCandidateForElision(Symbol)
# mustbeKept(Symbol)
- a few vals:
# paramCandidatesForElision
# outerCandidatesForElision
# bodyOfOuterAccessor
- class UsagesDetector
That way, all trace of rewriting to elide param-accessor fields
has vanished from TemplateTransformer and is encapsulated in
OmittablesHelper.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This commit modularizes TemplateTransformer by moving a few methods
from TemplateTransformer into the newly added DelayedInitHelper.
The methods in question
- delayedInitCall()
- delayedInitClosure()
- delayedEndpointDef()
build trees that rewriteDelayedInit() puts together.
That way, all trace of rewriting related to delayed-init
have vanished from TemplateTransformer and are encapsulated in
DelayedInitHelper.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Before this commit, each activation of transformClassTemplate()
performed the rewriting that the constructors phase is well-known for.
Lots of auxialiary objects were created in the process,
with lifetime confined to said activation.
The same auxiliary objects (having same lifetimes as before)
also are in effect starting with this commit,
but now it's an instance of TemplateTransformer
that holds them together. In other words,
there's a one-to-one correspondence between:
- (what used to be) transformClassTemplate() activation
- TemplateTransformer initialization
After initialization, the result of TemplateTransformer
can be found in its `transformed` member val.
In fact, the refactoring to get here from the previous commit
basically involves taking the body of method transformClassTemplate()
as-is to become the template of TemplateTransformer.
The TemplateTransformer in question will allow modularizing
sub-transformations (e.g., DelayedInit) into dedicated traits
(see upcoming commits).
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Removing the old implementation of elision in constructors
in favor of the new one which is both faster, more readable.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For now both old and new implementations of elision coexist,
allowing cross-checking their results.
In the next commit only the new one will remain.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This way the contract of `transformClassTemplate()` can focus on
non-AnyVal cases, which are more regular from the perspective of
transforming their templates in the constructors phase.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The check in question relies on helper maps and methods that don't
belong outside that check. This commit encapsulates those helpers into
the newly added `checkUninitializedReads()` , thus uncluttering
`transformClassTemplate()`
|
|\ \ \ \
| | | | |
| | | | | |
SI-1980 A lint warning for by-name parameters in right assoc methods
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The desugaring of right associative calls happens in the parser. This
eagerly evaluates the arguments (to preserve left-to-right evaluation
order the arguments are evaluated before the qualifier).
This is pretty surprising if the method being called has a by-name
parameter in the first parameter section.
This commit adds a warning under -Xlint when defining such a method.
The relevent spec snippets:
> SLS 4.6.1 says that call-by-name argument "is not evaluated at the point of function application, but instead is evaluated at each use within the function".
>
> But 6.12.3 offers:
> "If op is right- associative, the same operation is interpreted as { val x=e1; e2.op(x ) }, where x is a fresh name."
|
|\ \ \ \ \
| | | | | |
| | | | | | |
@compileTimeOnly: moved to scala-library.jar, got some fixes
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Looks like we've got the entire language covered now.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
http://docs.scala-lang.org/overviews/macros/annotations.html
say sincere "thank you!".
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Now that @compileTimeOnly is part of the standard library, why don't
we use it within the standard library.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This is the notion that's come to be universally useful, so I suggest
we promote it to be universally accessible.
Note that the attached test incorrectly fails to report errors for
definitions coming from the empty package and for annotations. These
are bugs, and they are fixed in subsequent commits of this pull request.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Use scala-partest 1.0-RC4
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
RC3 had a binary incompatibility that led to a crash in parsing options,
due to:
- https://github.com/scala/scala-partest/commit/9ff138ab4b
- https://github.com/scala/scala/commit/2b1563fa74
Also added sonatype as a repo for resolving partest,
so we don't have to wait for artifacts to synch to maven central.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Modularize partest
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As partest is now resolved from maven, `test/partest` uses `ant test.suite.init`
to determine the classpath (serialized to build/pack/partest.properties)
that's necessary to run `scala.tools.partest.nest.ConsoleRunner`.
Thus, partest gets exactly the same classpath, whether run from
the command line through `test/partest` or via `ant test`.
The version of partest we're using is specified by
properties defined in versions.properties (formerly `starr.number`).
Currently, we're using:
```
scala.binary.version=2.11.0-M4
partest.version.number=1.0-RC3
```
NOTES:
- The version of Scala being tested must be backwards binary compatible with
the version of Scala that was used to compile partest.
- Once 2.11 goes final, `scala.binary.version=2.11`, and `starr.version=2.11.0`.
- Need scalacheck on classpath for test/partest scalacheck tests.
- Removed atrophied ant tests (haven't been run/changed for at least two years
I checked 81d659141a as a "random" sample).
- Removed scalacheck. It's resolved as a partest dependency.
- For now, use a locally built scalap
- Kept the trace macro in the main repo (partest-extras)
- New targets for faster pr validation: test-core-opt, test-stab-opt
- Reused partest eclipse/intellij project to partest-extras
(note: the partest dependency is hard-coded)
|
|\ \ \ \ \ \
| |_|_|_|/ /
|/| | | | | |
SI-7740 Trim stack trace before printing in REPL
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Pattern matcher: extractors become name-based.
|
| |\ \ \ \ \ \
| |/ / / / / /
|/| | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Conflicts:
src/compiler/scala/tools/nsc/Global.scala
src/compiler/scala/tools/nsc/transform/patmat/MatchTranslation.scala
|
|\ \ \ \ \ \ \
| |_|/ / / / /
|/| | | | | | |
No longer crash on NoSymbol.owner.
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Historically calling NoSymbol.owner has crashed the compiler.
With this commit, NoSymbol owns itself. This is consistent with
the way ownership chains are handled elsewhere in the compiler
(e.g. NoContext.owner is NoContext, NoSymbol.enclClass is
NoSymbol, and so on) and frees every call site which handles
symbols from having to perform precondition tests against
NoSymbol.
Since calling NoSymbol.owner sometimes (not always) indicates
a bug which we'd like to catch sooner than later, I have
introduced a couple more methods for selected call sites.
def owner: Symbol // NoSymbol.owner is self, log if -Xdev
def safeOwner: Symbol // NoSymbol.owner is self, ignore
def assertOwner: Symbol // NoSymbol.owner is fatal
The idea is that everyone can call sym.owner without undue anxiety
or paranoid null-like tests. When compiling under -Xdev calls to
`owner` are logged with a stack trace, so any call sites for which
that is an expected occurrence should call safeOwner instead to
communicate the intention and stay out of the log. Conversely, any
call site where crashing on the owner call was a desirable behavior
can opt into calling assertOwner.
This commit also includes all the safeOwner calls necessary to
give us a silent log when compiling scala.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-6797 Test case for already-fixed DelayedInit bug
|
| | |_|/ / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | | |
Progressed in b4fbb7be0e2, "translation for DelayedInit keeps
more code in original class."
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-7756 Uncripple refchecks in case bodies
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
In 65340ed4ad2e, parts of RefChecks were disabled when
we traversed into the results of the new pattern matcher.
Similar logic existed for the old pattern matcher, but in
that case the Match / CaseDef nodes still existed in the tree.
The new approach was too broad: important checks no longer
scrutinized the body of cases.
This commit turns the checks back on when it finds the remnants
of a case body, which appears as an application to a label def.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-7729 Fix broken windows build
|
| | |/ / / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Fixing #ifdiff uncovered a latent bug in partest when it detects
paths to normalize in test log output. It would not normalize
file separators for test names with non-word characters.
This commit normalizes the test name to the ticket number as a
workaround until the next partest version is picked up.
It also fixes partest in this repo in case we've not yet switched
over to the new repo. A separate PR will be submitted to the new
repo as necessary.
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
SI-7757 disallow constructor annotations on traits
|
| | | | | | | |
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Previously it was possible to define constructor annotations on traits
with really weird side-effects (parser lost the body of the trait). Now
constructor annotations on traits will cause appropriate syntax errors.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Can't finnesse the drop method. Call it blindly for now, even
though in the long run you won't have to write drop.
|