| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-6335 More precise location of the implicit class synthetic method.
|
| | | | | | | | | |
|
| | |_|_|_|/ / /
| |/| | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
One approach would be to disallow an implicit class in a template
that already has a member with the same name.
But this commit doesn't do this; instead it uses `isSynthetic` to
find the synthesized implicit conversion method from the potentially
overloaded alternatives.
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-6162 Adds private[scala] @deprecatedInheritance/@deprecatedOverriding
|
| | | | | | | | | |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
While they ought to be generalized to aribirary modifier
changes before being offered in the standard library, the
opportunity to use them in 2.10 is too important to pass up.
So for now, they're private[scala].
En route:
- made the error messages more concise
- fix positioning of inheritance error
- improve test coverage
|
| | | | | | | | | |
|
| |/ / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
These annotations are meant to warn from inheriting a class or
from overriding a member, due to the reasons given in `msg`.
The naming and placement of the methods is in line with
@deprecated and @deprecatedName.
|
|\ \ \ \ \ \ \ \
| |_|_|_|_|/ / /
|/| | | | | | | |
SI-6276 Warn on def or val that trivially loops infinitely
|
| |/ / / / / / |
|
|\ \ \ \ \ \ \
| |_|_|_|_|/ /
|/| | | | | | |
Minor cleanups of code/comments related to value classes
|
| |/ / / / / |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix for SI-6327, wrongness in Dynamic.
|
| | |_|_|/ /
| |/| | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Wip/si 6333
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Specifically, avoid reinstantiating an immutable object to alter the type parameter *IF*
that type parameter has nothing to do with the contents of the object.
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* Added more comprehensive tests to Try.
* Delineated what methods do and don't catch exceptions in docs.
* Fixed combinator methods that should catch exceptions.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-6278 fixed: synthetic implicit def must sort with its associated impl...
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
class
Add a case to the ad-hoc (or add-hack) addSynthetics to keep the trees close.
This relies on naming convention, so changes in naming of the implicit def
would require an update here.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-6345 Remove scala.runtime.ScalaRunTime.Try
|
| |/ / / / / |
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
SI-6326. Makes getClass of a value class work.
|
|/ / / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6318 fixes ClassTag.unapply for primitives
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
ClassTag.unapply now has overloads for primitive value classes
so that it can preserve boxiness when performing subtyping tests.
First I wanted to annotate ClassTag.unapply with a ClassTag itself,
i.e. to transform its signature from "def unapply(x: Any): Option[T]"
to "def unapply[U: ClassTag](x: U): Option[T]".
But then virtpatmat_typetag.scala exhibited a nasty problem.
When pattern matching with this unapply, patmat first infers U as something
and then tries to pattern match against this inferred type. And if U gets
inferred as an abstract type itself, bad things happen:
warning: The outer reference in this type test cannot be checked at run time.
That's why I decided to drop the ClassTag idea and go with 9 extra overloads.
Not very beautiful, but definitely robust.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
removes isLocatable from the public API
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Hard to come up with a good name, would need extensive documentation
to justify its purpose => no go. If necessary we can always reintroduce
it later in 2.10.1.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
fixes for class tags and manifests
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Also introduces an important change to Manifest.Nothing and Manifest.Null.
Previously their `erasure` was equal to classOf[Object]. Now it's correctly
set to classOf[scala.runtime.Nothing$] and classOf[scala.runtime.Null$]
correspondingly.
See a discussion here:
https://groups.google.com/forum/#!topic/scala-internals/Y0ALGo7QPqE
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Aliases ClassTag.XXX to Manifest.XXX to reuse already existing
implementations of deprecated APIs.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
SI-6258 Reject partial funs with undefined param types
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This regressed with virtpatmat.
With -Xoldpatmat, pattern matching anonymous functions with
an expected type of PartialFunction[A, B] are translated to
a Function tree, and typed by typedFunction, which issues an
error of the parameter types are not fully defined.
This commit adds the same check to MatchFunTyper.
It doesn't plug the hole in RefChecks#validateVariance (which is
reminiscent of SI-3577.) Seems to me that in general one should handle:
a) both BoundedWildcardType and WildcardType
when in a place that can be called during inference, or
b) neither otherwise
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
removes Type.isConcrete
|
| | |/ / / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This method was no longer used anywhere, except for a place where it wasn't
really necessary.
Its implementation is non-trivial, and I have doubts about it, so I propose
to remove it altogether instead of living with some dubious code necessary
for some dubious matter.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
Issue/5031
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Eliminated InvalidCompanions exception entirely. Anyone's
guess why we unholstered this exception every time someone
calls "isCodefinedWith" rather than when symbols are created.
I moved the check into Namers, where it can be done once and
with sufficient finesse not to crash so much.
With this patch in place, "playbench" can be built with java7.
|
|/ / / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Removing duplication from Duration.
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
I don't know what good it is to have code review if we are checking
in code like this. We must raise the bar, people. When the
justification for code being in the standard library is borderline
at best - as it is here - then the code must be of exceptional
quality. This code is not of exceptional quality.
Mostly these are not behavioral changes, but:
- I removed finite_? as it is a gratuitous deviation from
every isXXX method in the world. This isn't ruby.
- I removed all the regexps, which only made things complicated
- I removed all the unnecessary casts, which is to say, all of them
- I made more things final, sealed, and private
- The unapply structure was all wrong; returning Option[Duration]
on the string unapply meant you'd have to say
case Duration(Duration(x, y)) => ...
So I fixed apply and unapply to be symmetric.
- And I removed the "parse" method, since it was doing what
apply is supposed to do.
There's a test case to exercise accessing it from java,
which also reveals what I hope are bugs.
Thanks to viktor klang for DurationConversions.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Fixed positions in de-aliased special symbols..
|
| | |_|_|/
| |/| | |
| | | | |
| | | | |
| | | | | |
`apply` methods.
Fixed #5064, thanks to @paulp who showed the right direction (and how to test it).
|
|\ \ \ \ \
| | | | | |
| | | | | | |
More worksheet nstrumentation changes
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Made instrumenter more robust by taking into account the positions of the tokens in the source. This allows us to reliably put instrumentation code at the end of the previous token, which tends to put it at end of lines. Furthermore, we now skip left parents. Previously, the instrumenter got confused for a statement like
( x + 1 )
because it thought that the statement started at the `x` and not at the `(`.
Another small change is that we now use decoded names in the worksheet. So ??? will show as ??? not $qmark$qmark$qmark.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
(1) Handle empty worksheets
(2) Handle for expressions
Review by @dragos
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fixes typos in the ScalaDoc of StringContext
|
| | | | | | | |
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Allow nested calls to `askForResponse` in the presentation compiler.
|
| | |_|/ / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Fix #6312.
review by @odersky,@lrytz.
|