| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Fix SI-4581.
|
| |
| |
| |
| |
| |
| |
| | |
Specifically, the final flag on the generated static field
is no longer ommitted.
Fix 2 failing test-cases.
|
|\ \
| | |
| | | |
Fixes SI-6290 by creating real instnaces of language features.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Expanded the reach of value classes.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Now extending AnyVal:
- RichInt, RichDouble, etc.
- ArrayOps.ofRef, ofBoolean, etc
- StringAdd
- StringFormat
The rest of it is the changes necessary to enable those.
|
|\ \ \
| | | |
| | | | |
Si 6220
|
| | | |
| | | |
| | | |
| | | | |
This test will pass even with an older version of the scala library, since as mentioned this is just a performance improvement.
|
|\ \ \ \
| | | | |
| | | | | |
Si 6261
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
elements
|
| |_|/ /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Still need to determine if this is a systemic
issue and needs to be addressed higher in the
linked list hierarchy. For now, just
fixing the reported bug, with a note here
for other maintainers.
|
|\ \ \ \
| | | | |
| | | | | |
removes Symbol.kind and Type.kind
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
use Universe.showRaw instead:
scala> import scala.reflect.runtime.{universe => ru}
import scala.reflect.runtime.{universe=>ru}
scala> ru.showRaw(typeOf[Int])
res0: String = TypeRef(ThisType(scala), scala.Int, List())
scala> ru.showRaw(typeOf[Int].typeSymbol, printKinds = true)
res1: String = scala.Int#CLS
|
|\ \ \ \
| | | | |
| | | | | |
PartialFunction polishing
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- ScalaDocs added
- TODOs fixed
- controversive method `run` deleted
- not used class runtime.AbstractTotalFunction removed
- small corrections & fixes
- tests for `orElse` & `runWith`
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6272 Support lazy vals defined in try in template.
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|/ / /
|/| | | | | |
Eliminated a metric ton of allocations.
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Thanks to the hotspot DTrace probes. I'm not sure why
this checkfile changed, but hopefully it's innocuous.
Review by @VladUreche for the checkfile and @gkossakowski
so he can tell me how much faster.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
macroArgs now correctly calculates the argss in case when a macro def
has implicit parameters.
Macro impls can never have implicit parameters other than type tag evidences,
so tags will always come in a separate parameter list w.r.t other parameters
of macro impls (which are in 1-to-1 correspondence with the parameters of
macro defs).
Example 1:
def w/o implicits: (params1)...(paramsN)
impl w/o tags: (params1')...(paramsN')
Example 2:
def w/o implicits: (params1)...(paramsN)
impl w tags: (params1')...(paramsN')(implicit tags)
Example 3:
def w implicits: (params1)...(paramsN)(implicit paramsN+1)
impl w/o tags: (params1')...(paramsN')(paramsN+1')
Note: paramsN+1' is not an implicit parameter list
because impls cannot have implicit parameters other than tags
Example 4:
def w implicits: (params1)...(paramsN)(implicit paramsN+1)
impl w tags: (params1')...(paramsN')(paramsN+1')(implicit tags)
Therefore we don't need to merge the argss.last (that correspond to implicit
parameters of macro defs) with tags, as it was incorrectly coded before.
We just need to append tags to argss.
|
| |/ / /
|/| | | |
|
|\ \ \ \
| |/ / /
|/| | | |
reverts changes to ClassTag.Nothing
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It seemed to be a good idea to have ClassTag.Nothing crash
in agreement with its incalculable nature.
However this breaks CanBuildFrom for the situations when Nothing is inferred
or provided explicitly. Hence the rollback.
|
|\ \ \ \
| | | | |
| | | | | |
Improved fix for SI-1987, overloading in package objects.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When reformulating an errant package object overload,
don't forget to fully qualify it lest you trade one error
for another.
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Fix stupid logic inversion of try-catch
|
| | | | | |
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
Make Stream.withFilter.{map,flatMap} run in constant stack space
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
Test a wider range of functionality.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
No need to check the output - checking programmatically that the
produced streams are empty is enough.
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The included test currently fails because `map` and `flatMap` do not
run in constant stack space on a stream returned by `Stream.withFilter`,
as I reported here:
https://groups.google.com/d/msg/scala-language/WqJR38REXnk/saaSiDdmyqoJ
Fix the problem and add a simple testcase.
Note that the stack space consumed when producing an element of this stream is
proportional to the number of elements failing the test before the next
success. The stack space consumed to produce the stream itself is the
space needed to produce the first element, that is, is proportional to
the number of failures before the first success.
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
ordering of synthetic members on java7 with a lot of cores is non-deterministic
that's not a problem, because the doc doesn't promise anything about synthetics
hence I've adjusted the test, so that it no longer includes accessors
discussion: http://groups.google.com/group/scala-internals/msg/087a7d4805313561
|
|/ / |
|
|\ \
| | |
| | | |
more cleanup in Macros.scala
|
| |/ |
|
| |
| |
| |
| |
| |
| |
| | |
In separate compilation runs, the static field symbol in the
companion class of an object was not being recreated.
Given that the singleton object was compiled separately,
the static field symbol will be recreated on demand.
|
|/
|
|
|
|
|
|
| |
Disable @static for the REPL code.
The problem is that there are no companion classes generated for objects
that contain the top-level declarations in the REPL.
When there is no companion class, the selecting a @static field will translate
to a getter call, instead of to a field load.
|
|\
| |
| | |
Fixes backend crash due to incorrect consumedTypes
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This started out as a compiler crash after Greg copied the
comprehension methods to List and made them final.
The culprit was the dead code elimination phase, which after
sweeping pieces of code was unable to restore the stack to its
original state, thus causing the ASM backend to crash notifying
the resulting bytecode is incorrect.
The dead code elimination phase uses the icode Instructions'
consumedTypes to determine what needs to be dropped from the
stack when an instruction is eliminated, but the consumedTypes
were only defined for a handful of instructions. So dce encountered
a DUP instruction for which it did not have consumedTypes defined
and did not restore the stack correctly.
The consumedTypes/producedTypes for icode instructions are
redundantly defined in 3 separate places:
- Opcodes.scala (consumedTypes/producedTypes)
- ICodeCheckers.scala (for checking icode)
- TypeFlowAnalysis.scala (for computing types on the stack at each
program point)
Since the Opcodes types are the only ones visible outside, I suggest
we use them in ICodeCheckers.scala and TypeFlowAnalysis.scala too. But
we should make such changes after the release, as we're chilling out
by the lake with a glass of good wine: SI-6234
The relevant discussion around it can be found at:
https://groups.google.com/forum/?fromgroups#!topic/scala-internals/qcyTjk8euUI[1-25]
Many thanks to Paul for his help!
Review by @magarciaEPFL or @paulp.
|
|/
|
|
|
|
| |
mostly removes [Eugene] marks that I left back then and reviews related code
some of those tokens got left in place, because I don't know to how fix them
without imposing risks on 2.10.0
|
|\
| |
| | |
SI-5940 impls are no longer in macro def pickles
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The first officially released version of macros persisted
macro def -> impl bindings across compilation runs using a neat trick.
The right-hand side of macro definition (which contains a reference to an impl)
was typechecked and then put verbatim into an annotation on macro definition.
This solution is very simple, but unfortunately it's also lacking. If we use it
then signatures of macro defs become transitively dependent on scala-reflect.jar
(because they refer to macro impls, and macro impls refer to
scala.reflect.macros.Context defined in scala-reflect.jar).
More details can be found in https://issues.scala-lang.org/browse/SI-5940.
Therefore we have to avoid putting macro impls into binding pickles and
come up with our own serialization format. Situation is further complicated
by the fact that it's not enough to just pickle impl's class and method names,
because macro expansion needs knowledge about the shape of impl's signature
(which we can't pickle). Hence we precompute necessary stuff (e.g. the layout
of type parameters) when compiling macro defs.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This change fixes a situation in which method calls aren't being properly
specialized. All the existing tests pass; in addition, it likely fixes other
specialization bugs (and improves performance of specialized code).
Also includes a small regression test.
|
|\ \
| | |
| | | |
Only create a HashTrieSet if necessary.
|
| | |
| | |
| | |
| | | |
yields a HashSet1 as it should
|
|\ \ \
| |_|/
|/| | |
Si 6198
|
| |/
| |
| |
| | |
This tests that ListSet.tail is O(1) as well as testing that a HashSetCollision1 is turned back into a HashSet1 when removing all but one element
|