| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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!
|
|
|
|
| |
Putting back the bits I moved aside to get a clean rebase.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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()`
|
|
|
|
|
|
|
| |
If I reverse these few lines, I can rebase miguel's
pull request cleanly; if I don't, git thinks there are
enough merge conflicts to start a war. Something is
suboptimal in that algorithm.
|
|\
| |
| | |
SI-7410 REPL uses improved tools.jar locator
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The logic in partest for snooping around for tools.jar
is moved to PathResolver, and ILoop uses it from there.
If JAVA_HOME is toolless, check out java.home.
The use case was that Ubuntu installs with `java` at
version 6 and `javac` at version 7; it's easy to wind
up with JAVA_HOME pointing at the version 6 JRE, as
I discovered. It's confusing when that happens.
In future, partest might run under 7 and fork tests
under 6, but those permutations are downstream.
|
|\ \
| | |
| | | |
SI-7003 Partest redirects stderr to log file
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Partest will also read files/filters and files/kind/filters for
filter expressions (one per line, trimmed, leading #comments)
which are taken as regexes.
A test/files/filters is provided which attempts to quell HotSpot
warnings; the test for this commit requires it.
The elided lines can be revealed using the lemon juice of verbosity:
apm@mara:~/projects/snytt/test$ ./partest --verbose --show-diff files/run/t7198.scala
[snip]
>>>>> Transcripts from failed tests >>>>>
> partest files/run/t7198.scala
% scalac t7198.scala
[snip]
% filtering t7198-run.log
--Over the moon
--Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve shared memory (errno = 28).
The filtering operation is part of the transcript, which is printed on failure.
No attempt is made to be clever about not slurping the filters file a thousand times.
Previous literal patterns had to be updated because there's parens in them thar strings.
Future feature: pattern aliases, define once globally and invoke in test filters.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Some scalac output is on stderr, and it's useful to see that
in the log file, especially for debugging.
Adds a line filter for logs, specified as "filter: pattern"
in the test source.
Backslashes are made forward only when detected as paths.
Test alignments:
Deprecations which do not pertain to the system under test
are corrected in the obvious way.
When testing deprecated API, suppress warnings by deprecating
the Test object.
Check files are updated with useful true warnings, instead of
running under -nowarn.
Language feature imports as required, instead of running under -language.
Language feature not required, such as casual use of postfix.
Heed useful warning.
Ignore broken warnings. (Rarely, -nowarn.)
Inliner warnings pop up under -optimise only, so for now, just
filter them out where they occur.
Debug output from the test required an update.
|
|\ \ \
| | | |
| | | | |
SI-7287 include all compiler sources in -src.jar
|
| |/ / |
|
|\ \ \
| |/ /
|/| | |
Concision contribution.
|
| | |
| | |
| | |
| | | |
As noted by reviewer.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We have lots of core classes for which we need not go through
the symbol to get the type:
ObjectClass.tpe -> ObjectTpe
AnyClass.tpe -> AnyTpe
I updated everything to use the concise/direct version,
and eliminated a bunch of noise where places were calling
typeConstructor, erasedTypeRef, and other different-seeming methods
only to always wind up with the same type they would have received
from sym.tpe. There's only one Object type, before or after erasure,
with or without type arguments.
Calls to typeConstructor were especially damaging because (see
previous commit) it had a tendency to cache a different type than
the type one would find via other means. The two types would
compare =:=, but possibly not == and definitely not eq. (I still
don't understand what == is expected to do with types.)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Try to prevent TypeSymbols from caching a different typeref
for tpe_* and typeConstructor if the symbol is monomorphic.
I find this undesirable:
scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor
res0: Boolean = true
scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor
res1: Boolean = false
|
|\ \ \
| | | |
| | | | |
SI-7499 Additional test case for SI-7319
|
| | | |
| | | |
| | | |
| | | | |
From a duplicate ticket.
|
|\ \ \ \
| |_|/ /
|/| | | |
SI-3425 erasure crash with refinement members.
|
| | | |
| | | |
| | | |
| | | | |
Probably overshot the mark a little.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Checking that a refinement class symbol does not override
any symbols does mean it will have to be invoke reflectively;
but the converse is not true. It can override other symbols
and still have to be called reflectively, because the
overridden symbols may also be defined in refinement classes.
scala> class Foo { type R1 <: { def x: Any } ; type R2 <: R1 { def x: Int } }
defined class Foo
scala> typeOf[Foo].member(TypeName("R2")).info.member("x": TermName).overrideChain
res1: List[$r.intp.global.Symbol] = List(method x, method x)
scala> res1 filterNot (_.owner.isRefinementClass)
res2: List[$r.intp.global.Symbol] = List()
And checking that "owner.info decl name == this" only works if
name is not overloaded.
So the logic is all in "isOnlyRefinementMember" now, and
let's hope that suffices for a while.
|
|\ \ \
| | | |
| | | | |
SI-6811 Deprecate scala.util.parsing.json
|
| | |/
| |/| |
|
|\ \ \
| |/ /
|/| | |
SI-7436 Varargs awareness for super param aliasing.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Don't consider a super class parameter accessor to be
an alias if it is a repeated. Parameter aliases are used
to avoid retaining redundant fields in the subclass; but
that optimization is out of the question here.
|
|\ \ \
| |_|/
|/| | |
Moves AbstractFileClassLoader to scala-reflect.jar
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Its string name was used in ReflectionUtils and became broken after repl
got factored out. This hints that that classloader belongs to where it is
used, i.e. to scala-reflect.jar.
Moreover AbstractFile is defined in scala-reflect.jar, so it's only
logical to also define a derived classloader in scala-reflect.jar.
|
|\ \ \
| | | |
| | | | |
sanitation of Infer.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Oh exprTypeArgs, you will send us to the poorhouse with
your spendy ways. So many tuples have been dying needlessly.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Only to discover that it's really hard to move isCoercible
anywhere because it wants to call inferView which, despite its
suggestive name, is not visible in Infer. So I did what I
could and documented it a little.
|
| | | |
| | | |
| | | |
| | | | |
He's a good kid, even if not the most hygenic.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Yes checkAccessible, you patiently waited your turn.
Do you like your new clothes? Oh, still not clean enough?
I understand, but we must leave time for the other methods.
Now run along and check something.
|
| | | |
| | | |
| | | |
| | | | |
To streamline the essential logic.
|
| | | |
| | | |
| | | |
| | | | |
It has been hardcoded to return false for a long while anyway.
|
| | | |
| | | |
| | | |
| | | | |
A lot more useful than Unit.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Because nobody should have to guess a return type like
(List[Type], Array[Int], Boolean). In fact nobody should
ever experience such a return type at all.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
It's not exactly 2006-era code but it's still a little ripe.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Yes, 2006. Perhaps we should have a "sunset provision"
which removes commented-out code after seven years. Or even
slightly sooner.
|