| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
Fix the test for number of arguments by passing all arguments instead
of passing the argument list as a single argument.
Add positive and negative tests for it.
|
|\ \
| | |
| | |
| | | |
'kepler/topic/showraw'
|
| | |
| | |
| | |
| | |
| | |
| | | |
Now showRaw no longer significantly lags behind -Yreify-copypaste.
Didn't put very much effort into it, since quite soon LiftCode
will become a macro and we'll be able to reuse it in RawTreePrinter.
|
| | |
| | |
| | |
| | | |
Added test cases for SI-5377.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This reverts commit 2820770bffe2e7d180bccbcd7a3d83944b1dd8d6.
Last minute change had unintended consequences.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Changes motivated by ICodeReader neglecting to utilize logic
which exists in its superclass. Now you can enjoy empty package
classes being inlined into other empty package classes.
Closes SI-4925.
|
|\ \ \
| |_|/
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
specialized method has additional (non-specialized) type parameters.
This fix comes from Stefan's desire to specialize HLists (see
corresponding test). review by @prokopec
|
| | |
| | |
| | |
| | | |
It was acting funny and I had to handhold it a little bit.
|
| | |
| | |
| | |
| | |
| | | |
"illegal cyclic reference involving value <import>" not
so useful.
|
| | | |
|
| | |
| | |
| | |
| | | |
At least I think so.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Changed most symbol creations to be consistent with all the others.
Opportunistically streamlined various call sites. Moved some phase-specific
methods out of Symbol to somewhere more appropriate (like that phase.)
|
| | | | |
| \ \ | |
|\ \ \ \
| |_|/ /
|/| | |
| | | | |
'magarciaEPFL/fasterInliner' into develop
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
After inlining one ore more callsites, Inliner runs anew a type-flow analysis for the same method, ie. the previous solution is discarded although it's a subset of that needed after the inlining(s). Background in: http://lamp.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/2011Q4/Inliner.pdf
Instead, we invalidate only the fragment of the CFG affected by inlining (the basic block where inlining occurred and newly added basic blocks) and let the iterative dataflow analysis start from there. It reaches the fixpoint faster.
The inlining decisions thus made are exactly the same as with the slower version, see -Ylog:inliner, with a focus on lines starting with "[log inliner] Inlining"
review by @VladUreche @dragos @paulp
|
| | | |
| | | |
| | | |
| | | | |
This is the complete implementation of SIP-11, in its version of 15-Jan-2012. For now, the interpolations are enabled only under the -Xexperimental flag.
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
Scala+GWT has a whole new hierarchy of Manifests that
does not use reflection. Every type in new hierarchy
is a subtype of a type from old hierarchy. Sealed modifier
introduced in 2e92de4cd66532404081eec6b9e82c6f85b51434
breaks this scheme. Removing it so Scala+GWT can compile again.
|
| | | | |
| \ \ | |
| \ \ | |
| \ \ | |
| \ \ | |
| \ \ | |
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | | |
'szabolcsberecz/pathsettings-jar-location-fix', 'dcsobral/issue/5371' and 'dcsobral/issue/5370' into develop
|
| | | | | | | |
|
| | | | |/ /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Add an explanation in PartialFunction as to how it differs from Function1,
with examples of what it can do that Function1 cannot.
Make it explicit that calling apply may throw exceptions in both of them,
even in the case where isDefinedAt returns true.
Closes SI-5370.
|
| | | |/ /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Add examples and better explain the expected return type of the
methods flatMap and flatten.
Closes SI-5371.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Depending on the file order in the directory, PathSettings.srcSpecLib
could end up as "instrumented.jar.desired.sha1" instead of "instrumented.jar"
which would cause all the specialized tests to fail.
The same goes for scalacheck.jar
|
| |/ / / |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Renamed the parameter to all the newXXX symbol creators to "newFlags"
because I've seen too many bugs which arose from having a parameter name
which shadows a field and where mistakes can inflict subtle bugs which
won't be found until much later (yes I'm trying to describe "flags" right
now.) Opportunistically cleaned up some symbol creations.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since I have established (no small effort, this) that there is no need
for certain important flags to be mutable for the entire lifetime of a
symbol, I have codified this knowledge by moving it out of the flags
entirely and into the inheritance hierarchy where its constant nature
can find true happiness.
AliasTypeSymbol ... it's an alias (forever!)
AbstractTypeSymbol ... it's an abstract type (forever!)
The only time DEFERRED is inspected is if the generic creation function
is called (e.g. "newTypeSymbol", not "newAliasType") in which case the
presence of the flag is used to determine which symbol to create. This
is mostly for legacy support.
Certain symbols were being created inconsistently with the others. Now
every symbol is created by invoking a creation method on the owner, with
the exception of FreeVar. I changed the owner of those from RootClass
to NoSymbol because there is no reason for them to pollute the symbol
hierarchy at the root.
The signature of cloneSymbolImpl is now
def cloneSymbolImpl(owner: Symbol, newFlags: Long): Symbol
There is an overload with the old signature which calls that one with no
flags. With this step, every symbol creation in trunk is performed with
knowledge of the initial flags, opening the door to many optimizations
in the Symbol and Type logic, not to mention boosting my sanity by at
least five sanity points.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Modifications in LiftCode to avoid upsetting the happy world
upon which I am converging where flags change in an almost
predictable fashion.
|
| | | | |
|
|/ / /
| | |
| | |
| | | |
To make the choices more transparent.
|
| | |
| | |
| | |
| | | |
A small dose of packedType closes SI-4869.
|
| | |
| | |
| | |
| | | |
Closes SI-3999. Review by @odersky.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Implementing a warning for the behavior described in SI-1987 gave me
enough of a foot in the door to fix it rather than warning about it. I
suppose this is a variation of rubber ducky debugging.
% scalac -Ylog:typer test/files/run/t1987.scala
[log typer] !!! Overloaded package object member resolved incorrectly.
Discarded: def duh(n: Double): Unit
Using: val duh: (n: Double)Unit <and> (n: Long)Unit
Review by @odersky.
|
| | |
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
with null value"
This commit reverts the following two commits:
5f2568e36b87d183fd4e4442d5c304db628846c4 - "Revert "Accept prefixed xml attributes with null value"
b00002f9049c034510438881b4a4449d73fe2f54 - "Disabling some scaladoc tests."
and fixes a scaladoc test broken by:
4787f883604d1344257c0b40c15790c3dde477f2 - "Fixed equality and string representation of xml attributes with null value"
|
| | | | |
| \ \ | |
| \ \ | |
| \ \ | |
|\ \ \ \ \
| |_|_|/ /
|/| | | |
| | | | | |
'soc/SI-4627' into develop
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Deprecate scala/xml/include/sax/Main.scala.
Move scala/swing/test/* to docs/examples.
Saves 160KB in scala-swing.jar.
Fixes SI-4627.
|
| | | | | |
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Conflicts:
.gitignore
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This implementation is based on AVL trees.
The current implementation is contributed by Lucien Pereira.
Fixes #4147.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Functions of functions use parens for grouping.
|
| |/ / / /
|/| | | |
| | | | |
| | | | | |
Also exposed some typevar related code outside a method.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
There are too many potential optimizations unavailable to us due to the
lack of bright lines among different kinds of symbols. For instance the
difference between a TypeSymbol which represents a type alias and one
which represents an abstract type is only whether the DEFERRED flag
is set. This creates issues.
1) There are many (many) places where tests are performed on every symbol
which could be done more efficiently and (especially) more verifiably
correctly with polymorphism.
2) TypeRefs based on those symbols are also checking that flag
constantly, in perpetuity. A symbol created as an alias is never (to the
best of my knowledge) going to intentionally morph into one representing
an abstract type, nor vice versa.
3) One has no guarantees, because anyone can set or reset the DEFERRED
flag at any time.
So tackling more than one problem at once herein:
1) I created canonical symbol creation points which take the flags as
an argument, so that there can be a difference between initializing a
symbol's flags and setting/resetting them at arbitrary times.
2) I structured all the symbol creators to take arguments in the
same order, which is:
def newXXX(name: Name, ..., pos: Position = NoPosition, flags: Long = 0L)
(Where "..." is for those symbols which require something
beyond the name to create, such as a TypeSkolem's origin.)
The name is first because it's the only always required argument.
I left but deprecated the variations which take (pos, name).
3) I created subclasses of TypeRef based on the information which
should be stable from creation time onward:
- args or no args?
- abstract type, type alias, or class?
2x3 == 6 and that's how many subclasses of TypeRef there are now. So
now, for example, every TypeRef doesn't have to carry null symInfoCache
and thisInfoCache fields for the benefit of the minority which use them.
I still intend to realize the gain possible once we can evade the fields
for pre and args without losing pattern matcher efficiency.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Work around optimizer's unwillingness to inline trait methods
by flipping to an abstract class. Also eliminated a couple other
warnings noising up the optimized build.
|
| | | | |
| | | | |
| | | | |
| | | | | |
So I can get at it from the repl.
|
| | | | |
| | | | |
| | | | |
| | | | | |
So it can be used as a mixin.
|
|\ \ \ \ \ |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
inference
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 51089b34a7a535498dee42e6465d4d577d65b7d5.
A scaladoc test is failing and I have no time to look at it.
|