| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Added new disabled test for eclipse scala-ide ticket1000609. Corrected
test framework to fail nicely when the tree retrieved after an has no
associated symbol.
|
|
|
|
|
|
|
| |
When a reasonable lub cannot be arrived at by direct means, use the
bounds of the lub inputs to derive bounds for the lub rather than giving
up. Closes SI-4938, review by moors.
|
|
|
|
|
| |
Fix for bumpy proxy equals. Closes SI-4807, no review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit fixes two major problems:
1. InnerClasses table missed entries
that would close the chain between
nested and top-level class.
2. In some situations, classes
corresponding to objects would be
not be reported in the InnerClasses
table.
For details it's the best to check SI-4819, SI-4820 and SI-4983.
First problem mentioned above was straightforward to fix so I won't be
going into details.
The second one deserves more attention. From now, classes corresponding
to objects are properly reported as inner classes. Also, members
(classes, objects) of objects are reported as inner classes of classes
corresponding to objects.
There's one caveat though: top level objects get two classes (regular
and mirror). Members of top-level objects are declared as inner classes
of *mirror* class and not regular one. The reason for that is to allow
importing them from Java. For example:
object A { class B }
will be compiled into following classes: A, A$, A$B. If we declared
A$B as inner class of A$ (regular class for objects) then it would be
impossible to import B using "import A.B" or "import A$.B" constructs.
The reason for that is that Java compiler seems to blindly put dollars
instead of looking at InnerClasses attribute.
Since non-top-level objects don't have a mirror class it's impossible to
use the same solution. Thus, in case like this:
object A { object B { class C } }
it's impossible to import C from Java. That's the tradeoff for fixing
other (more serious) problems. It's never been possible to do that in a
clean way so we are not making situation worse.
As a nice consequence of this change, we get better way to refer to
inner members of top-level objects. It's been reflected in one of
test-cases that is updated by this change.
Fixes SI-4789 SI-4819 SI-4820 SI-4983 and possibly some other tickets
related to reflection.
Review by extempore, dragos.
|
|
|
|
|
|
| |
Figured out how to turn it on by default, even.
Closes SI-4979, no review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Various and sundry manipulations to allow for objects to be overridden
when the mood is right. It is not enabled by default.
The major contributor of change turned out to be the decoupling of
the FINAL flag (and the "isFinal" test which examines only that flag)
and the many semantics which were attributed to this interpretation
of finality in different circumstances. Since objects no longer have
the FINAL flag automatically applied (only top-level objects and those
marked final in source code do) we need apply a more nuanced test.
Fortunately there is such a nuanced test: isEffectivelyFinal,
which is always true if the FINAL flag is set but also in various
other circumstances. In almost every case, you should be testing
"isEffectivelyFinal", not "isFinal".
To enable overridable objects, use:
-Yoverride-objects
-Xexperimental // includes the above and others
Remain to be done: working out transition logistics. Most likely this
would involve bumping the scala signature version, and all objects in
versions before that would be assumed final.
Review by moors.
|
|
|
|
|
|
| |
Integrates recent speed improvements to algorithm.
Contributed by Ruediger Keller, no review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are no more direct calls to context.error from Typers and Infer,
so more work needs to be done to finish it for Implicits and Namers.
I am pushing it to trunk so that all of you can share my pain (and
complain). Please do not add any more context.error randomly in that
code, instead deal with it appropriately (by creating specific error
tree).
I was trying to be as informative when it comes to error tree names
as possible, but if you feel like changing names to something more
appropriate then feel free to do so. When it comes to printing error
messages I tried to follow test suite as closily as possible but
obviously there were few changes to some tests (mostly positive, I
believe).
On my machine performance drawback was neglible but I am working on more
aggressive caching to reduce the penalty of containsError() calls even
more. Any suggestions welcome.
At the moment the code supports both styles i.e. throwing type errors
for the cases that are not yet handled and generating error trees. But
in the future we will drop the former completely (apart from cyclic
errors which can pop up almost everywhere).
Review by odersky, extempore and anyone who feels like it.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Formerly a specializable type parameter would be missed if in an
intersection.
trait Trait[@specialized T] {
def f[T](x: Foo[T] with Bar) = x
}
Now that is specialized, as it already was in the "Foo[T]" case. Closes
SI-4794, no review.
|
|
|
|
|
|
|
|
| |
Moved test for scala-ide ticket-1000508 under /disabled/presentation/
directory, as the current test's result is wrong (the ticket is still
opened). It will be moved back only once the ticket is closed. No
review.
|
|
|
|
|
|
|
| |
Created test cases for tickets that need to be fixed in the presentation
compiler. These tests should eventually be moved under folder
/files/presentation/ once they are working.
|
|
|
|
|
|
|
|
| |
Offer warning when demonstrably non-side-effecting expressions appear in
statement position, which should be unintentional by definition. Threw
in removal of six places with useless discarded expressions which the
warning informed me about. No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Made it possible to supply a custom Global to the core scala runners.
The absence of "Global pluggability", combined with the fact that most
of the functionality in Global is unnecessarily rigid due to the phases
being implemented as objects, means that it has been close to impossible
to do interesting compiler development in a way which doesn't require
modifying the scalac source tree. This then leaves you continually
subject to punishment by code drift as the various places you were
forced to modify change out from under you.
This is somewhat less true now, thanks to new option: -Yglobal-class
The primary wielders of Global (fsc/scala/scalac) now instantiate
the compiler via a (Settings, Reporter) => Global factory method in
the Global companion. If -Yglobal-class was given, that class (which
must have a (Settings, Reporter) constructor) will be instantiated if
possible, falling back on the standard one. See
test/files/pos/CustomGlobal.scala
for a working example. (It's not in run because I would have to be able
to give partest a different set of flags for successive compiles in the
same test.) Review by odersky.
|
|
|
|
|
|
| |
Added package object support to reflection framework. Removed debug
output and made some speed improvements.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Sorting test output so it passes on java7, no review.
|
| |
|
|
|
|
|
|
| |
Removed and consolidated several redundant tests which had filenames
"bugXXX" and "tXXX" where XXX == XXX. No review.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Created infrastructure for testing icode + settings/partest yak shaving.
See enclosed test files/run/inline-ex-handlers.scala. To compare
optimized and unoptimized icode after a given phase, all you need in a
partest source file is this:
import scala.tools.partest.IcodeTest
object Test extends IcodeTest {
override def printIcodeAfterPhase = "inlineExceptionHandlers"
}
Other things can be done, see IcodeTest.scala. Review by ureche.
|
|
|
|
|
|
| |
Bug in optimizer eliminated potentially exceptional not-dead code.
Streamlined isSideEffecting logic. Review by ureche.
|
|
|
|
|
|
| |
[recommit] Backend optimization: Inline exception handlers. Review by
dragos.
|
| |
|
|
|
|
|
|
|
|
|
| |
Major rewrite of the testing infrastructure for the presentation
compiler. Added several new tests that will be part of the nightly
build. Once the move to SBT is completed I will look into how to extract
the test infrastructure (as it should really not be living in the
compiler codebase). Review by dragos
|
|
|
|
|
|
| |
Improved the error message given when a concrete method implementation
doesn't match the abstract one. No review.
|
|
|
|
|
|
|
| |
Removing the code which has been deprecated since 2.8.0. Contributed by
Simon Ochsenreither, although deleting code is such fun one hesitates to
call it a contribution. Still, we will. Closes SI-4860, no review.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Expanded the range of a warning, and made suppressed warnings visible.
Modified the positioning of "permanently hidden" errors so that when
there is more than one, the later ones are not ignored. Also changed the
error suppression code to emit the error anyway if -Ydebug was given (it
is prefixed with "[suppressed] ".) Since I can't be the only one who
wondered where his errors were vanishing to. No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reversed the values of "is" and "is not" in recent for comprehension
deprecation.
DO NOT BLOW HATCH
REPEAT
DO NOT BLOW HATCH
"Roger! Hatch blown."
Events reveal it was all baby, no bathwater. It turns out that the
specification is merely a document, not infallible holy writ as we
had all previously believed. So it is not the ABSENCE of val in a for
comprehension assignment which is deprecated, it is the PRESENCE of val.
Summarizing again, more accurately perhaps:
for (x <- 1 to 5 ; y = x) yield x+y // THAT's the one
for (val x <- 1 to 5 ; y = x) yield x+y // fail
for (val x <- 1 to 5 ; val y = x) yield x+y // fail
for (x <- 1 to 5 ; val y = x) yield x+y // deprecated
No review.
|
|
|
|
|
|
| |
Optimizations for Seq's implementations of sequence search algorithms.
Contributed by Rex Kerr. Closes SI-4828, no review.
|
|
|
|
|
|
|
| |
have lived through before: java5 wrongly prints "volatile" next to
bridge methods, because ACC_BRIDGE uses the same bit as ACC_VOLATILE.
Result: partest failure! No review.
|
|
|
|
|
|
| |
Fix java signature generation for traits: no classes as parents. Closes
SI-4891, review by grek.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't discard deprecation/unchecked warnings regardless of settings.
Changed warnings code to accumulate them rather than thoughtlessly
discarding them and issuing its well-known taunt. In the repl you can
take advantage of this with the :warnings command, which will show the
suppressed warnings from the last line which had any. Be advised that at
the moment it has some issues: unchecked warnings aren't making it out,
and near repl startup neither are deprecation warnings, so don't open a
bunch of tickets please.
References SI-4594, no review.
|
|
|
|
|
| |
update on this matter is yet to come, no review.
|
|
|
|
|
|
|
| |
Fixing all the tests and source which still use the old for
comprehension syntax with vals where there are no vals and no vals where
there are vals. No review.
|
|
|
|
|
|
|
|
|
|
| |
Fix for a bug in CharArrayReader which made triple quoted strings
fail to parse sometimes. Note: when the temptation strikes to adjust
for special cases by letting the regular case happen and subsequently
attempting to fix the ball of mutation by selectively applying what
seems like the inverse operation, please consider the possibility that
this is not the optimal approach. Closes SI-4785, no review.
|
|
|
|
|
|
| |
Better error message for case class/object match confusion. Closes
SI-4879, no review.
|
|
|
|
|
|
| |
Avoid some spurious errors after a cyclical reference error. Closes
SI-2388, no review.
|
|
|
|
|
|
| |
Improved structural type error messages, and other error message related
boosts. Closes SI-4877, review by odersky.
|
|
|
|
|
|
|
|
| |
Fixed bug in the disambiguation of f(foo='bar') style method calls in
the presence of overloading, parameterization, and by-name arguments.
Took the opportunity to clean things up a little bit. Closes SI-4592,
review by rytz.
|
|
|
|
|
|
|
| |
Disallowed implicit modifier on auxiliary constructors, since it either
silently accomplishes nothing or crashes the compiler. If it should do
something useful let me know. Closes SI-4882, review by odersky.
|
|
|
|
|
|
|
|
| |
Don't want to chase NPEs around for the rest of my life. Created
"NoCompilationUnit" and "NoSourceFile" objects to represent not-present
versions of these items. Seems a lot better than null. References
SI-4859, got past NPE only to uncover the actual problem. No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Attacked classpaths to get "." off of it when it's not actually
specified. The commit makes me nervous, but there's no invisible way to
fix something like this.
** Attention, this commit changes classpath handling **
We desperately need some way of testing that the classpath has certain
qualities and does not have others; partest is not that way. Closes
SI-4857, no review.
|
| |
|
|
|
|
|
|
|
| |
Rewrote the case class synthetic equals method to be more efficient and
to cause fewer problems for compiler hackers who are always saying stuff
like "the only place this comes up is case class equals..." No review.
|
|
|
|
|
| |
Issue a warning about classes/objects inside package objects, no review.
|