| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Fixes SI-6354: improved error messages for Dynamic signature mismatches.
|
| |
| |
| |
| |
| |
| | |
If an error occurs afer a Dynamic rewriting, augment the error message
with the rewritten tree and a hint to check the Dynamic method
signature.
|
|\ \
| | |
| | | |
improved reflection documentation
|
| | | |
|
| | | |
|
|\ \ \
| |_|/
|/| | |
SI-6287 fixes synthetic symbol clashes in toolbox
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Apparently synthetic classes like $anonfun$1 have two properties:
1) Their names are generated using a counter unique to a compilation unit
2) After flatten they levitate to the nearest enclosing package
As a result if we use an empty package to wrap toolbox codegen,
then this package will soon be overflown by $anonfun$1 symbols, because:
1) New codegen session = new compilation unit = new counter which starts at 0
2) New codegen session = new anon funs that end up as children of empty package
Creating a freshly named package for each codegen session fixed the problem.
Now anonfuns from different sessions end up with different parents.
|
|\ \ \
| | | |
| | | | |
clarify caveats of App trait
|
| | |/
| |/| |
|
|\ \ \
| | | |
| | | | |
Scala reflection now supports Java CRTP
|
| | | |
| | | |
| | | |
| | | | |
All javac-produced artifacts are now placed into test/files/lib
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Enum members are static and, therefore, they need to be looked up in
classSymbol(<enum>).companionModule, rather than in classSymbol(<enum>).
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Because of using plain ExistentialType factory of a case class
typeToScala sometimes returned existentials with empty quantifieds.
Changing ExistentialType to newExistentialType, which simply returns
the underlying types if params are empty, fixed the problem.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Translation of Java types to Scala types has previously been
existentionalizing raw types of ParameterizedType arguments.
As shown in https://issues.scala-lang.org/browse/SI-6374
this leads to cyclic reference errors. If you wonder about the
mechanism of the error, take a look at the comments to the
aforementioned issue - there's a detailed explanation.
However calling rawToExistential is completely unnecessary, because
existential parameters of the results are immediately discarded,
and only prefix and symbol are used later on (which means that
existential extrapolation performed by rawToExistential also doesn't
after the result).
Finding out this was tough, but the rest was a piece of cake.
Getting rid of the call to rawToExistential when translating ParameterizedType
fixed the problem.
|
|\ \ \ \
| | | | |
| | | | | |
SI-5767 fix + protecting public FlatHashMap API
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
As discussed in https://groups.google.com/forum/?pli=1#!topic/scala-internals/1yABM30POS0
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- `LinkedHashSet` implementation moved from `FlatHashTable` to `HashTable`
- `remove` time reduced from O(n) to O(1)
- `diff` time reduced from O(n^2) to O(n)
- A bit of refactoring in `HashTable` serialization code
- Putting an element into hash map now avoids double hash code/hash index
calculation (see `HashTable#findOrAddEntry`)
- bugfix: compiler/LambdaLift occasionally breaks LinkedHashSet integrity
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Revert `@static` annotation
|
| | | | |
| | | | |
| | | | |
| | | | | |
It's a follow-up commit on 4bfcadabae7663e4329f5a4b21a9368477a7e3e3.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Deployed a new starr that does not depend on `@static` annotation.
The next step will be deleting `@static` from the library
altogether.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 892ee3df93a10ffe24fb11b37ad7c3a9cb93d5de with
exception of keeping `@static` annotation in the library so we
can deploy a new starr that does not depend on it before removing
it completely.
Conflicts:
src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
src/compiler/scala/tools/nsc/transform/CleanUp.scala
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 227239018b38ab7218ee6b30493c9c8e1836c8c9.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 5a8dfad583b825158cf0abdae5d73a4a7f8cd997.
Conflicts:
src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit faa114e2fb6003031efa2cdd56a32a3c44aa71fb.
|
| | | | |
| | | | |
| | | | |
| | | | | |
This reverts commit 373f22a2022519ab894c1ea77460e6460d7c2ee4.
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reverts commit cb393fcbe35d0a871f23189d791b44be1b826ed2.
Conflicts:
src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
|
|\ \ \ \
| | | | |
| | | | | |
SI-5692 better error message
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
Doesn't fix the underlying issue with macros and type inference,
but at least now the error message says exactly what needs to be done
to make the error go away.
|
|\ \ \ \
| |/ / /
|/| | | |
SI-5942 toolboxes now reset front ends
|
|/ / /
| | |
| | |
| | |
| | | |
FrontEnd => Reporter proxy now correctly redirects
flush and reset back to the underlying front end.
|
|\ \ \
| | | |
| | | | |
Fixed SI-6353: applyDynamic with sugared applications
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Accept sugared applications such as x(1) if x implements Dynamic,
so x(1) gets re-written to x.apply(1).
- When picking a dynamic rewrite for x.apply(1), favor applyDynamic
instead of the default selectDynamic.
|
|\ \ \ \
| | | | |
| | | | | |
moves isImplicit from TermSymbol to Symbol
|
| | | | |
| | | | |
| | | | |
| | | | | |
Because classes can also be implicit.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Topic/empty array
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This reverts most of commit 9d84e89d2 .
|
| | |_|_|/
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This reminds me of at least one reason I didn't put them
here before: I don't feel like I can return these from calls
to Array.empty, because there's no way of knowing whether
anyone has been relying upon this property:
scala> Array.empty[Byte] eq Array.empty[Byte]
res0: Boolean = false
Since that is exactly the property I need to alter.
The test above is true in all the "real" collections,
which is all the more reason to be concerned that someone
might be using empty arrays as not-equivalent sentinels.
I can still move them here, but it'd be a lot better if
array creation could use them - not only def empty but
def apply[T: ClassTag](xs: T*): Array[T]
which probably creates millions of empty arrays where
one would do in almost every case.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6336 Disallows value types in structuralal refinements
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Structural refinements already have a number of restrictions, e.g. cannot refer to
type parameters of enclosing classes. We need to disallow value classes as well.
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
SI-4478 Replaces wrt with (hopefully) slightly improved wording.
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|_|/ /
|/| | | | | |
More relative path elimination.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Some names I missed in 55b609458fd .
How one might know when one is done:
mkdir scratch && cd scratch
mkdir annotation beans collection compat concurrent io \
math parallel ref reflect runtime scala sys testing \
text tools util xml
scalac $(find ../src/library -name '*.scala')
Until recently that would fail with about a billion errors. When it
compiles, that's when you're done. And that's where this commit
takes us, for src/library at least.
|
|\ \ \ \ \ \
| |_|_|_|/ /
|/| | | | | |
test suite for SI-6329
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Eugene pullreq 1306
|
|/| | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
* commit 'refs/pull/1306/head':
SI-6356 reflection now supports Java annotations
|
| | |/ / / /
| |/| | | |
| | | | | |
| | | | | |
| | | | | | |
Except for one thingie: java enums are currently not understood
by Scala reflection, hence they aren't yet supported in annotations.
|