| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
As pointed out in #scala, when using a non-zero start it's possible
to get an ArrayIndexOutOfBoundsException due to an incorrect bounds
check. This patch fixes this, as well as another potential bounds
error, and adds test cases.
Incorporates some other suggestions by Som-Snytt to ensure that
callers will get useful error messages in cases where the start
parameter is wrong (negative or out-of-array-bounds).
Review by @som-snytt.
|
|\
| |
| | |
SI-6194, repl crash.
|
| |
| |
| |
| |
| |
| | |
Always a bad idea to use replaceAll on unknown strings,
as we saw here when windows classpaths arrived containing
escape-requiring backslashes.
|
|\ \
| | |
| | | |
Remove -deprecation from partest default options.
|
| |/
| |
| |
| |
| |
| |
| | |
Who knows why it was ever like this; it's not like anyone
sees the deprecation warnings. In PR #1807 there is now a
test which depends on partest not making this move, so it's
a good time to finally expunge it.
|
| |
| |
| |
| |
| |
| |
| | |
Had to fix up an iffy test: not only was it testing undefined
behavior, it demanded just the right numbers be printed in a
context where all negative or positive numbers are equivalent.
It's the ol' "get them coming and going" trick.
|
|/
|
|
|
|
|
| |
The lengthCompare method in LinearSeqOptimized was looking one
step further than it needed to in order to give the correct
result, which was creating some unwanted side effects related to
Streams.
|
|
|
|
|
|
| |
Have to intercept trees which have a null type due to errors
before they leave the warm confines of 'def typed' because from
that point everything assumes tree.tpe != null.
|
|\
| |
| | |
Merge 2.10.0-wip into 2.10.x
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
# By Eugene Burmako (1) and others
# Via Adriaan Moors (2) and others
* origin/2.10.0-wip:
Fixing OSGi distribution.
Fix for rangepos crasher.
SI-6685 fixes error handling in typedApply
|
| | |
| | |
| | |
| | |
| | | |
wrapClassTagUnapply was generating an unpositioned tree
which would crash under -Yrangepos. See SI-6338.
|
|\ \ \
| |/ /
|/| | |
Implicit vars should have non-implicit setters.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Otherwise they trigger spurious feature warnings.
scala> trait T { implicit var a: Any }
<console>:7: warning: implicit conversion method a_= should
be enabled by making the implicit value
language.implicitConversions visible.
|
|\ \ \
| | | |
| | | | |
SI-6795 simplify "abstract override" errors on type members
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of saying "only allowed on non-type members of traits" use
separate errors for "not allowed on types" and "only allowed on members
of traits"
|
| | | |
| | | |
| | | |
| | | |
| | | | |
"abstract override" shouldn't was being allowed on types in traits but the result
made no sense and the spec says that shouldn't be allowed.
|
|\ \ \ \
| | | | |
| | | | | |
SI-3995 Exclude companions with an existential prefix.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In the example below, we need a view from
`String => l.F0`, and the companion object `FO` is
reachable by a stable, non existentially-bound path.
class Lift {
def apply(f: F0) {}
class F0
object F0 {
implicit def f2f0(fn: String): F0 = ???
}
}
object Test {
val l = new Lift
l.apply("") // okay
}
Followup for SI-3995
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
In `(qual: Q).apply(expr)` where `expr` must be implictily
converted to a path dependent type `T` defined in `qual`,
we were looking for companion implicits via a path prefixed
by an existential skolem `_1`. These aren't much good to us,
as when we try to feed them into `mkAttributedQualifer`, a
crash rightly ensues.
This commit excludes companions prefixed by an existentially
bound path.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6548 reflection now correctly enters jinners
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When completing Java classes, runtime reflection enumerates their
fields, methods, constructors and inner classes, loads them and
enters them into either the instance part (ClassSymbol) or the
static part (ModuleSymbol).
However unlike fields, methods and constructors, inner classes don't
need to be entered explicitly - they are entered implicitly when
being loaded.
This patch fixes the double-enter problem, make sure that enter-on-load
uses the correct owner, and also hardens jclassAsScala against double
enters that can occur in a different scenario.
Since the fix is about Java-compiled classes, the test needs *.class
artifacts produced by javac. Therefore I updated javac-artifacts.jar to
include the new artifacts along with their source code.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
fixes incorrect handling of Annotated in lazy copier
|
| | | | | | | |
|
|\ \ \ \ \ \ \
| |_|_|_|_|/ /
|/| | | | | | |
SI-5390 Detect forward reference of case class apply
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
These are only forbidden in terms, they are permitted in
types.
|
| | |_|/ / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Refchecks performs (among others) two tasks at once:
- detecting forward references
- translating `qual.Case(...)` to `new qual.Case(...)`
As is often the case with such multi-tasking tree traversals,
completion of one task precluded the other.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-5361 Avoid cyclic type with malformed refinement
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The statement `val x = this` in the refinment type:
(new {}): {val x = this}
is lazily typechecked, in order to, according to the comment
in `typedRefinment, "avoid cyclic reference errors".
But the approximate type used ends up with:
Refinment@1(
parents = [...]
decls = { val x: Refinement@1 })
This commit eagerly checks that there is no term definitions
in type refinments, rather than delaying this.
This changes the error message for SI-3614.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
typedIdent no longer destroys attachments
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
When transforming Idents to qualified Selects, typedIdent used to forget
about carrying original attachments to the resulting tree. Not anymore.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-6288 Perfecting positions
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
- Adds tests for unapplySeq and unapply: Boolean.
Both seem to be well positioned after the previous
changes.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
The call to `Option#get` on the result of the
unapply method was unpositioned and ended up
with the position of the `match`.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
ICode generation was assigning the position of
the last label jump to all jumps to that particular
label def.
This problem is particularly annoying under the new
pattern matcher: a breakpoint in the body of the final
case will be triggered on the way out of the body of
any other case.
Thanks to @dragos for the expert guidance as we
wended our way through GenICode to the troublesome
code. Chalk up another bug for mutability.
I believe that the ICode output should be stable
enough to use a a .check file, if it proves otherwise
we should make it so.
|
| | |_|/ / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
`atPos(pos) { ... }` doesn't descend into children of
already positioned trees, we need to manually set the
position of `CODE.REF(binder)` to that of the stunt double
`Ident(nme.SELECTOR_DUMMY)`.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
prevents spurious kind bound errors
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The patch adds a check which makes sure that the trees we're about to
report aren't already erroneous.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
When we strip tvars we should also recursively strip their instantiation...
|
| | |_|_|_|/ /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This led to the inference of weird types as list
of lub base types was empty.
This change fixes case x3 in the test case.
|
|\ \ \ \ \ \ \
| |_|_|/ / / /
|/| | | | | | |
Fixes SI-6758: force LazyAnnnotationInfo for DefDef and TypeDef
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Looks like the change in 25ecde037f22ff no longer forced
lazy annotations for some of the cases.
Also removed forcing for PackageDef annotations as we currently
don't support them.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Extract base scaladoc functionality for the IDE.
|
| | | | | | | |
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-6555 Better parameter name retention
|
| | |_|/ / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
We were losing track of parameter names in two places:
1. Uncurry was using fresh names for the apply method
parameters during Function expansion. (The parameter names
in the tree were actually correct, they just had synthetic
symbols with "x$1" etc.)
2. When adding specialized overrides, the parameter names
of the overriden method were used, rather than the parameter
names from the overriding method in the class to which we are
adding methods.
The upshot of this is that when you're stopped in the debugger in
the body of, say, `(i: Int) => i * i`, you see `v1` rather than `i`.
This commit changes Uncurry and SpecializeTypes to remedy this.
|
|\ \ \ \ \ \ \
| |_|_|/ / / /
|/| | | | | | |
Ticket/5841
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Reification of renamed imports is done by catching Selects with name != their tree.symbol.name,
replacing this name with tree.symbol.name, and then doing reifyProduct in case
of renamed terms and reifyBoundType (inner) in case of renamed types.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-5877 Support implicit classes in package objects
|
| | |_|/ / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This used to crash, as both the package and the package object
had the synthetic method in `decls`, and the typer tried to add
the tree to both places.
Now, synthetics in the package object are excluded from the pacakge
itself.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-6558: typecheck lazy annotation info using non-silent context
|