| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
[nomerge] SI-6667 Demote a new ambiguity error to a lint warning.
|
| |
| |
| |
| |
| |
| |
| | |
In the interests of not breaking source compability.
A few projects are relying on this bug.
Should not be merged to master.
|
|\ \
| | |
| | | |
SI-6017 Scaladoc: Fix dangling links on index.html
|
| | |
| | |
| | |
| | | |
Use <span> instead of <a href="..."> if there is no page on the letter.
|
| | |
| | |
| | |
| | | |
There is no reason to do it in JavaScript.
|
|\ \ \
| | | |
| | | | |
Fix SI-6578. Deprecated `askType` because of possible race conditions in...
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
type checker.
AskType triggers type-checks the given source and returns a typed tree. If that
source is already loaded (a precondition), the background compilation loop may actually
be compiling that same source. The new type checker run may then get into an inconsistent
state and try to add twice the same synthetic members, like `canEqual`.
Most of the times, `askLoadedTyped` (that waits for the type checker to finish, and
returns the most recent typed tree) *is* the right way to go.
Removed occurrences of the deprecated method in tests and interactive.REPL.
@reviewby @huitseeker,@odersky
|
|\ \ \ \
| | | | |
| | | | | |
SI-7008 @throws annotations are now populated in reflect
|
| | | | |
| | | | |
| | | | |
| | | | | |
https://github.com/scala/scala/pull/2040
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Runtime reflection in JavaMirrors previously forgot to fill in
@throws when importing Java reflection artifacts. Now this is fixed.
Note that generic exception types used in `throws` specifications will
be garbled (i.e. erased), because we don't use `getGenericExceptionTypes`
in favor of just `getExceptionTypes` to stay compatible with the behavior
of ClassfileParser. That's a bug, but a separate one and should be fixed
separately.
Also note that this commit updated javac-artifacts.jar, because we need
to test how reflection works with javac-produced classfiles. The sources
that were used to produce those classfiles can be found in the jar next
to the classfiles.
|
|\ \ \ \
| | | | |
| | | | | |
SI-7033 Be symful when creating factory methods.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Implicit class factory methods were synthesizing the
reference to the class as `Ident(classDef.name)`, which
was unhygienic in case of `implicit class X[X]`.
To use symbols without causing a cycle, I switched from
`REF(symbol)` to `Ident(symbol)`. The former calls into:
at scala.reflect.internal.TreeGen.mkAttributedSelect(TreeGen.scala:184)
at scala.reflect.internal.TreeGen.mkAttributedRef(TreeGen.scala:124)
at scala.reflect.internal.TreeGen.mkAttributedRef(TreeGen.scala:130)
at scala.tools.nsc.ast.TreeDSL$CODE$.REF(TreeDSL.scala:307)
which forces the info of enclosing module and forms a cycle.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Revert "SI-6422: add missing Fractional and Integral alias in scala package"
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This reverts commit c6866a28faf67cd2e455f9a0a829859a73e38819 because it adds two
members to the API and so breaks forward binary compatibility.
Attention: this is only intended for 2.10.x, not for 2.11.
|
|\ \ \ \ \ \
| |_|_|_|_|/
|/| | | | | |
SI-5313 Do not eliminate stores that potentially wipe referenes
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Used withDefault on the localStores map to simplify the code. Added
a type alias for the (BasicBlock, Int) tuple type that was used
throughout the code to represent the location of an instruction.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When an unused store clobbers a previous store, replace it with storing
a null. Don't mark clobbers as "used" so that the original clobber and
all following clobbers can still be eliminated.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Storing to local variables of reference or array type is indirectly
observable because it potentially allows gc to collect an object. So
this commit makes DeadCodeElimination mark a store necessary if it
assigns to a local that potentially stored by a previous necessary store.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
SI-7046 reflection now auto-initializes knownDirectSubclasses
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
knownDirectSubclasses joins the happy family of flags, annotations and
privateWithin, which automatically trigger initialization, when used
within runtime reflection.
|
|\ \ \ \ \ \ \
| |_|_|/ / / /
|/| | | | | | |
Analyzer Plugins
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Before:
scala> class A { class C extends { val x: A = this } with AnyRef }
<console>:7: error: type mismatch;
found : A.this.C
required: A
class A { class C extends { val x: A = this } with AnyRef }
^
Note that the same thing is necessary and already done in Namers (see
def createNamer). The whole logic of when and how to create contexts
should be factored out and reused in Namer and Typer.
(
My Hobby [1]: detecting compiler by just looking at its soruce
[1] http://www.explainxkcd.com/wiki/index.php?title=Category:My_Hobby
)
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
AnnotationCheckers are insufficient because they live outside the
compiler cake and it's not possible to pass a Typer into an annotation
checker.
Analyzer plugins hook into important places of the compiler:
- when the namer assigns a type to a symbol (plus a special hook for
accessors)
- before typing a tree, to modify the expected type
- after typing a tree, to modify the type assigned to the tree
Analyzer plugins and annotation checker can be activated only during
selected phases of the compiler.
Refactored the CPS plugin to use an analyzer plugin (since
adaptToAnnotations is now part of analyzer plugins, no longer
annotation checkers).
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
- when typing (and naming) a ValDef, tpt and rhs are now type checked
in the same context (the inner / ValDef context). this does not change
any behavior, but is more uniform (same as for DefDef). martin told me
(offline) that this change is desirable if it doesn't break anything.
(it doesn't).
- typeSig is now more uniform with a separate method for each case
(methodSig, valDefSig, etc). methodSig was cleaned up (no more variables)
and documented. the type returned by methodSig no longer contains /
refers to type skolems, but to the actual type parameters (so we don't
need to replace the skolems lateron).
- documentation on constructor contexts, type skolems
- more tests for SI-5543
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Integrates annotationsLub into lub.
Also fixes SubstSymMap when mapping over annotaion trees. I don't
understand what the previous code was supposed to achieve, but it
crashed in some of my examples.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Also removes an unnecessary condition in UnCurry, isFunctionType(fun.tpe)
is always true.
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
as discussed in [1], this change has no impact on the scala type
system, but it can fix subtyping for annotation checkers if the
pluggable type system supports annotations that can refer to method
parameters.
[1] https://groups.google.com/forum/#!topic/scala-internals/kSJLzYkmif0/discussion
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
[backport] SI-6428 / SI-7022 Value class with bounds
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Squashed commit of the following:
commit 5c156185306ba797c0443d9dccae0ae7ce462a1f
Author: Paul Phillips <paulp@improving.org>
Date: Sat Oct 6 15:42:50 2012 -0700
A little more housecleaning in ExtensionMethods.
The only real contribution is readability.
(cherry picked from commit 61f12faacaaccf366f9211ba6493fb042a91f1d2)
Conflicts:
src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
commit 79f443edf584745d614e24fb9ca6644c6b18d439
Author: Paul Phillips <paulp@improving.org>
Date: Sat Oct 6 14:22:19 2012 -0700
Incorporated pull request feedback.
(cherry picked from commit 153ccb4757718cceb219988f30381f73362e6075)
commit 707f580b0cdcb01e27ca4c76991dea427945b5bd
Author: Paul Phillips <paulp@improving.org>
Date: Sat Oct 6 10:20:45 2012 -0700
Fix for SI-6482, lost bounds in extension methods.
That was a good one. How to create a new method with type
parameters from multiple sources, herein.
(cherry picked from commit ff9f60f420c090b6716c927ab0359b082f2299de)
commit 8889c7a13f74bc175e48aa2209549089a974c2af
Author: Paul Phillips <paulp@improving.org>
Date: Fri Oct 5 22:19:52 2012 -0700
Responded to comment about how many isCoercibles there are.
I make the case that there is only one.
(cherry picked from commit 883f1ac88dd7cec5882d42d6b48d7f267d1f6e00)
|
|\ \ \ \ \ \ \ \
| |_|_|_|_|_|_|/
|/| | | | | | | |
pattern matching efficiency: addresses SI-6686 and SI-6941, affects SI-5739
|
| | | | | | | | |
|
| | | | | | | | |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
also, tweak fix in place for SI-5158 to appease SI-6941
don't store mutable fields from scala.* as we can assume
these classes are well-behaved and do not mutate their
case class fields
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
pattern matching on case classes where pattern
is not known to be a subclass of the unapply's argument type
used to result in code like:
```
if (x1.isInstanceOf[Foo]) {
val x2 = x1.asInstanceOf[Foo]
if (x2 != null) { // redundant
...
}
}
```
this wastes byte code on the redundant null check
with this patch, when previous type tests imply
the variable cannot be null, there's no null check
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
this commit doesn't change any behavior
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
one similarity measure comes free of charge: it ignores which variable
is stored/loaded, everything else must be identical
like this: `similarBytecode(methNodeA, methNodeB, equalsModuloVar)`
also implemented prettier diffing
|
| | |_|/ / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
use sameByteCode(methodNode1, methodNode2) to check methods
compile to identical bytecode (line number info is not taken into account)
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-4976 Scaladoc: Add a source link to package objects
|
| | | | | | | | |
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-7029 - Makes sure that uncaught exceptions are propagated to the UEH ...
|
| | |/ / / / / /
| |/| | | | | |
| | | | | | | |
| | | | | | | | |
the global ExecutionContext
|
|\ \ \ \ \ \ \ \
| |_|_|_|/ / / /
|/| | | | | | | |
SI-6539 moves @compileTimeOnly away from scala-reflect
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
The move is done to provide forward compatibility with 2.10.0.
The annotation isn't replaced with one of the macro-based solutions
right away (see comments for more information about those), because
we lack necessary tech in 2.10.x.
|
|\ \ \ \ \ \ \ \
| |_|_|_|/ / / /
|/| | | | | | | |
SI-6812 scaladoc can opt out of expanding macros
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This is a temporary change, possible only because macros currently can't
affect the global symbol table (except for the case when they will steer
inference of a method's return type).
Later on, e.g. with the addition of c.introduceTopLevel in master,
we will have to upgrade Scaladoc to allow for separate generation of
documentation, because then we'll be forced to expand macros in order to
get the whole picture of the code.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
[backport] Fix for SI-6206, inconsistency with apply.
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Squashed commit of the following:
commit f6bbf85150cfd7e461989ec1d6765ff4b4aeba51
Author: Paul Phillips <paulp@improving.org>
Date: Mon Oct 1 09:10:45 2012 -0700
Fix for SI-6206, inconsistency with apply.
The code part of this patch is 100% written by retronym, who
apparently has higher standards than I do because I found it just
lying around in his repository. I think I'll go pick through his
trash and see if he's throwing away any perfectly good muffins.
I made the test case more exciting so as to feel useful.
(cherry picked from commit 267650cf9c3b07e360a59f3c5b70b37fea9de453)
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Revert "SI-6601 Publicise derived value contstructor after pickler"
|
| |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This reverts commit b07228aebe7aa620af45a681ef60d945ffc65665.
The remedy was far worse than the disease:
% cat sandbox/test.scala
class V private (val a: Any) extends AnyVal
% RUNNER=scalac scala-hash b07228aebe sandbox/test.scala
[info] b07228aebe => /Users/jason/usr/scala-v2.10.0-256-gb07228a
% scala-hash b07228aebe
[info] b07228aebe => /Users/jason/usr/scala-v2.10.0-256-gb07228a
Welcome to Scala version 2.10.1-20130116-230935-b07228aebe (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_27).
Type in expressions to have them evaluated.
Type :help for more information.
scala> def foo(v: V) = v.a == v.a
exception when typing v.a().==(v.a())/class scala.reflect.internal.Trees$Apply
constructor V in class V cannot be accessed in object $iw in file <console>
scala.reflect.internal.Types$TypeError: constructor V in class V cannot be accessed in object $iw
|