| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
Fix SI-7130: Memory leaked caused by Statistics
|
| | | | |_|_|/
| | | |/| | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
As described in the ticket, we were leaking memory by holding reference
to Global through by-name argument that was captured by an instance of
a class stored in global HashMap `qs`.
The fix is simple: do not register quantities in HashMap unless statistics
is enabled. This way, if Statistics is disabled we do not store any
references.
We still leak memory in case of statistics being enabled.
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-7143 Fix scanner docComment production.
|
| | | |/ / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
in different places and as a result can get out of sync and as a result
the invariant that docComment has a position is broken.
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-7134: don't require doc.Settings in base api of scaladoc.
|
| | | |/ / / / |
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
make Future scaladoc examples up-to-date and compilable
|
| | | |/ / / / |
|
| | |/ / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The macro def <-> macro impl correspondence check compares names of the
corresponding parameters in def and impl and reports an error if they
don't match. This was originally designed to avoid confusion w.r.t named
arguments (which ended up being never implemented as described in SI-5920).
Sometimes parameter names are generated by the compiler, which puts the
user in a tough position. Luckily, there's an escape hatch built it, which
omits the name correspondence check if one of the parameters is SYNTHETIC.
Everything went well until we realized that evidences generated by
context bounds aren't SYNTHETIC, which led to the bug at hand.
Marking auto-generated evidence parameters SYNTHETIC was only the first
step, as the correspondence checker uses parameter symbols, not parameter
trees. Why's that a problem? Because SYNTHETIC doesn't get propagated from def
trees to their underlying symbols (see ValueParameterFlags).
Unfortunately one cannot just change ValueParameterFlags, because that
would break printouts generated in TypeDiagnostics, which is designed to not
print synthetic symbols. Thus we modify methodTypeErrorString in
TypeDiagnostics to always print synthetic symbols.
Therefore now we propagate all paramSym.flags when doing correspondent sweeps
to keep them in sync between def trees and their underlying symbols. This
fixes the problem.
|
| | |\ \ \ \
| | | |/ / /
| | |/| | | |
SI-7091 Don't try to put a protected accessor in a package.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This shows up when a protected[pack] class has a constructor
with a default argument.
Regressed in f708b87 / SI-2296.
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix and optimization in overriding logic.
|
| | |_|_|_|/
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Given:
trait Foo { def f: Int = 5 }
trait Bar extends Foo { def f: Int }
I noticed allOverriddenSymbols for the abstract f defined in Bar
was returning the method from Foo, even though an abstract method
cannot override a concrete one. There were other bits of code
which accidentally depended on this outcome. Now allOverriddenSymbols
for Bar is empty.
The optimization is that whether or not a symbol overrides
any other symbols is known at creation time and does not change.
We now spend a lot less time looking for overridden symbols in
base classes by storing that value, "isOverridingSymbol".
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Extracted abstract implicit vals from Types.
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
These should be considered plumbing and not blended in with the
rest of the api.
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
Boxing cleanup: erasure, post-erasure, value classes.
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Introduces extractors for value class trees. Puts them to
work to make the value class tree manipulations believable.
Eliminated some boxing code in erasure which had been
marked "maybe subsumed by posterasure?" after deciding
that it had been subsumed by posterasure.
Added some same-bytecode tests involving value class boxing
(actually the lack thereof.)
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This commit is code cleanup from the review on
https://github.com/scala/scala/pull/2119
* Changes several instances of
def f[A, ]… to
def f[A]…
* Changes several instances of
def f[A](…)(implicit ordering : Ordering[A])… to
def f[A: Ordering](…)…
* Changes one instance of
x == null to
x eq null
* Changes two instances of
id + bottomid to
bottomid + id
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
There was no reason to have mutable.TreeSet use AVLTree while
immutable.TreeSet and immutable.HashSet used RedBlackTree. In
particular that would have meant duplicating the iteratorFrom logic
unnecessarily. So this commit refactors mutable.TreeSet to use
RedBlackTree for everything, including iteratorFrom. It also adds
a test to make sure TreeSet works as expected.
AVLTree should be dead code since it's private[scala.collection.mutable]
and only used by mutable.TreeSet, but to be safe it's only deprecated
in this commit.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Adds the ability to efficiently create an iterator that starts at a
given key or element of a sorted set or map. Similar work is done for
key and value only iterators on maps.
The bulk of the work is in RedBlackTree. Most of the rest is pushing
the new api methods throughout the appropriate spots in the collection
API.
This commit leaves undone some similar work possible on mutable TreeSets
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | | |
In anticipation of some work needed to implement iteratorFrom, this
commit does some variable renaming and general code clean up on
RedBlackTree's TreeIterator.
|
|\ \ \ \
| | | | |
| | | | | |
merge 2.10.x
|
| |\| | |
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
src/compiler/scala/tools/nsc/typechecker/Implicits.scala
|
| | |\ \ \
| | | | | |
| | | | | | |
silences t6323a
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Tag materialization notices enabled with -Xlog-implicits are now echoes
not printlns. Therefore, they go into stderr, not stdout, getting logged
by partest and not spamming stdout of partest.
|
| | |\ \ \ \
| | | | | | |
| | | | | | | |
SI-6514 Avoid spurious dead code warnings
|
| | | | |/ /
| | | |/| |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
`deadCode.expr` stores the method symbol most recently encountered
in `handleMonomorphicCall`, and uses this to avoid warnings
for arguments to label jumps and `Object#synchronized` (which
sneakily acts by-name without advertising the fact in its type.)
But this scheme was insufficient if the argument itself contains
another method call, such as `matchEnd(throw e(""))`.
This commit changes the single slot to a stack, and also
grants exemption to `LabelDef` trees. They were incorrectly
flagged in the enclosed test case after I made the the first change.
|
| | |\ \ \ \
| | | | | | |
| | | | | | | |
Tolerate symbol sharing between accessor/field.
|
| | | |/ / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Recently, TreeCheckers (-Ycheck) was extended to
report on references to symbols that were not in
scope, which is often a sign that some substitution
or ownership changes have been omitted.
But, accessor methods directly use the type of the
underlying field, without cloning symbols defined
in that type, such as quantified types in existentials,
at the new owner.
My attempt to change this broke pos/existentials.scala.
Instead, I'll just look the other way in TreeCheckers.
|
| | |\ \ \ \
| | | | | | |
| | | | | | | |
SI-6225 Fix import of inherited package object implicits
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The prefix in the ImplicitInfo must be com.acme.`package`.type,
rather than com.acme.
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-6935 Added readResolve in BoxedUnit
|
| | | |/ / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
When deserializing Unit, it would return an instance of Object, but not a Scala Unit.
By adding readResolve, the deserialization of Unit will work.
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-6370 changed ListMap apply0 method to produce correct error message
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
a key is not found
Current implementation of apply0 relies on tail method to iterate over all keys.
When the list gets to its end, tail produces an 'empty map' message in its exception, which is thrown by ListMap.
This change checks if the collection is empty before calling tail and provides a more appropriate key not found message.
Signed-off-by: Vinicius Miana <vinicius@miana.com.br>
|
| | |\ \ \ \ \ \
| | | |_|_|_|/ /
| | |/| | | | | |
SI-6158 Restore compile error output under partest --show-log
|
| | | | |/ / /
| | | |/| | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Seems like the ifs and elses didn't quite survive e830a7ce9.
Before:
./test/partest --show-log test/files/run/foo.scala
Testing individual files
testing: [...]/files/run/foo.scala [FAILED]
Now:
./test/partest --show-log test/files/run/foo.scala
Testing individual files
testing: [...]/files/run/foo.scala [FAILED]
foo.scala:1: error: expected class or object definition
askdfjskl
^
one error found
1 of 1 tests failed (elapsed time: 00:00:01)
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
Update src/library/scala/sys/process/package.scala
|
| | | | | | |
| | | | | | |
| | | | | | | |
Fix broken wildcard expansion in the `sys.process` docs.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-6355, weakend implementation restriction on applyDynamic.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
I realized one can successfully call an overloaded applyDynamic,
under conditions such as these:
def applyDynamic[T1](m: String)(x1: T1): Any = 1
def applyDynamic[T1, T2](m: String)(x: T1, y: T2): Any = 2
def applyDynamic[T1, T2, T3](m: String)(x: T1, y: T2, z: T3): Any = 3
So I weakened the overloading restriction to allow overloading
if each method has a distinct number of type parameters. This very
likely still allows the creation of uncallable overloads, but an
overly restrictive rule is worse. If the overload cannot be called,
it will still be discovered at the call site.
|
|/ / / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
1) Deprecates much of Predef and scala.Console, especially:
- the read* methods (see below)
- the set{Out,Err,In} methods (see SI-4793)
2) Removed long-deprecated:
- Predef#exit
- Predef#error should have gone, but could not due to sbt
At least the whole source base has now been future-proofed
against the eventual removal of Predef#error.
The low justification for the read* methods should be readily
apparent: they are little used and have no call to be in global
namespace, especially given their weird ad hoc semantics and
unreasonably tempting names such as readBoolean().
3) Segregated the deprecated elements in Predef from the part
which still thrives.
4) Converted all the standard Predef implicits into implicit
classes, value classes where possible:
- ArrowAssoc, Ensuring, StringFormat, StringAdd, RichException (value)
- SeqCharSequence, ArrayCharSequence (non-value)
Non-implicit deprecated stubs prop up the names of the
formerly converting methods.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Update src/library/scala/sys/process/ProcessBuilder.scala
|
| |/ / / / / /
| | | | | | |
| | | | | | | |
Fix typesetting of unordered list items in the docs.
|
|\ \ \ \ \ \ \
| | |/ / / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
* origin/2.10.x:
Fix for paramaccessor alias regression.
Expanded bytecode testing code.
SI-5675 Discard duplicate feature warnings at a position
accommodates pull request feedback
term and type reftrees are now reified uniformly
SI-6591 Reify and path-dependent types
SI-7096 SubstSymMap copies trees before modifying their symbols
SI-6961 no structural sharing in list serialization
SI-6187 Make partial functions re-typable
[backport] SI-6478 Fixing JavaTokenParser ident
SI-7100 Fixed infinite recursion in duplicators
SI-6146 More accurate prefixes for sealed subtypes.
SI-5082 Cycle avoidance between case companions
SI-6113 typeOf now works for type lambdas
SI-5824 Fix crashes in reify with _*
SI-7026: parseTree should never return a typed one
SI-7070 Turn restriction on companions in pkg objs into warning
Conflicts:
src/compiler/scala/reflect/reify/codegen/GenSymbols.scala
src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
src/compiler/scala/tools/nsc/typechecker/Typers.scala
src/compiler/scala/tools/reflect/ToolBoxFactory.scala
src/library/scala/collection/immutable/List.scala
src/reflect/scala/reflect/internal/TreeInfo.scala
src/reflect/scala/reflect/internal/Types.scala
src/reflect/scala/reflect/internal/settings/MutableSettings.scala
src/reflect/scala/reflect/runtime/Settings.scala
test/files/buildmanager/t2650_1/t2650_1.check
test/files/buildmanager/t2657/t2657.check
test/files/neg/t3234.check
test/files/run/idempotency-this.check
test/files/run/macro-typecheck-macrosdisabled2.check
test/files/run/showraw_tree.check
test/files/run/showraw_tree_ids.check
test/files/run/showraw_tree_kinds.check
test/files/run/showraw_tree_types_ids.check
test/files/run/showraw_tree_types_typed.check
test/files/run/showraw_tree_types_untyped.check
test/files/run/showraw_tree_ultimate.check
test/files/run/t2886.check
test/files/run/t5225_2.check
test/files/run/t5374.check
test/files/run/t5374.scala
test/files/run/t6329_repl.check
test/files/run/toolbox_typecheck_macrosdisabled2.check
|
| |\ \ \ \ \ \
| | |_|_|_|/ /
| |/| | | | | |
Fixing binary compat for $super regression
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
A binary incompatibility with 2.10.0 revealed a bug I had
introduced in c58647f5f2.
|
| | | |/ / /
| | |/| | |
| | | | | |
| | | | | |
| | | | | | |
def sameMethodAndFieldSignatures compares two classes to verify
they have all the same methods and fields, and no others.
|
| |\ \ \ \ \
| | |/ / / /
| |/| | | | |
SI-6591 Reify and path-dependent types
|