| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
SI-7624 Fix -feature and some -Xlint warnings
|
| | |
|
| |
| |
| |
| |
| |
| | |
... and move scalap.scala.tools.scalap.scalax.rules to
scalap.scala.tools.scalap.rules now that all the Monad/Functor/
Applicatve/... stuff has been removed.
|
| | |
|
| |
| |
| |
| |
| | |
in various places. This includes actors, compiler (mostly some new
macro parts) continuations, partest, scaladoc, scalap.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The changes are actually pretty small:
scala.language.implicitConversions is moved around so that it is only
emitted to the source file if there is an actual implicit conversion.
The rest of the diff are mostly the new generated source files
reflecting that change.
|
| |
| |
| |
| |
| | |
The files are not regenerated here, because additional fixes will
follow in the next commit.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I added a language.existential import to LazyCombiner.scala which
should not be necessary, but causes a spurious warning otherwise:
scala/src/library/scala/collection/parallel/mutable/LazyCombiner.scala:33:
warning: the existential type
scala.collection.parallel.mutable.LazyCombiner[_$1,_$2,_$3] forSome {
type _$1; type _$2; type _$3 <: scala.collection.generic.Growable[_$1] with scala.collection.generic.Sizing },
which cannot be expressed by wildcards, should be enabled by making the implicit value scala.language.existentials visible.
if (other.isInstanceOf[LazyCombiner[_, _, _]]) {
^
I created ticket SI-7750 to track this issue.
|
|\ \
| | |
| | | |
Bug fix ! , if $color_opts is unset partest script does not work.
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
SI-7737 Regex matches Char
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Enables Char extraction by regex.
```
val r = """(\p{Lower})""".r
"cat"(0) match { case r(x) => true }
val nc = """\p{Lower}""".r
"cat"(0) match { case nc() => true }
```
|
|\ \ \ \
| | | | |
| | | | | |
SI-7265 javaSpecVersion, adjust isJava... tests for 2.11
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Make this and related properties public, because they
are useful.
This change ought to have been committed at 2.11 and then
backported with restrictions, rather than vice-versa.
Note that they are defined in the order, version, vendor
and name, which is the order from the underlying javadoc.
It would be a neat feature of the PR validator, as previously
imagined, to run a "pending" test and then, on success and
merge, to move it automatically to the canonical suite.
|
|\ \ \ \
| |_|_|/
|/| | | |
Add deprecation warning to scala.concurrent.Lock class
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
SI-7690 ghost error message fails compile [Rebase of #2763]
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | | |
I won't even try to explain the error reporting code, because
it would have no basis in reality. However this change appears
to fix the symptom reported.
|
|\ \ \ \
| | | | |
| | | | | |
SI-7729 Does Par-Test work? Absolutely!
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Not all test configurations handle an existing log file.
In particular, kicking off javac will append to the log file
and always fail the test.
Don't even ask how I know that.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Testicolor just passed file arguments through; this commit does
either toAbsolute or getAbsoluteFile (depending on the File API
impedance mismatch) at ConsoleRunner (command line) and Runner
(ant supplies absolute paths, but in case sbt runner doesn't,
and who knows). It also sprinkles toAbsolute internally, where
it may be redundant. Do I mean redundant or redolent?
I noticed that my branch from last year relativized to test root
always; so this is one of those choices one commits to.
The point of breakage in this case was, if a path is not absolute,
use test root / path, which only works (of course) if the relative
path is relative to test root, which is no longer the case.
Because all paths are now calculated with respect to the test file
path, the "out" dir would change its relative path depending on
the invocation.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Check files split into conditional blocks with partest flags
have been broken since the new diff regime.
For some reason, no one noticed.
The clever scheme to "filter the diff" instead of just filtering
the check file is abandoned as futile and unnecessary.
Fix java6 checkfile for ifdiff fix.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Making map2Conserve occupy constant stack space in spirit of SI-2411.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
I recently discovered a StackOverflowError, caused by this function:
https://gist.github.com/folone/7b2f2e2a16314ab28109
The circumstances are pretty extreme, still having a tail-recursive
function seems to be a good idea.
The function behaves the same way old function did (supported by tests),
which is not really how map2 behaves. I did not change this behavior to
not introduce any regression. I actually tried to make it behave like map2,
and it does introduce regression.
|
| | |/ / /
| |/| | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
DefDef.name is now TermName again
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | | |
Now when there's no hope left for type macros, it's reasonable to provide
a more specific type for DefDef.name.
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
Fix N^2 spot in erasure.
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
An expression containing nested casts would type the same tree 2^N
times where N is the number of nested casts. This was particularly
visible in Vector.scala where one can find a six-cast expression.
It's currently line "why was six afraid of seven", aka line 789.
display5((index >> 25) & 31)
.asInstanceOf[Array[AnyRef]]((index >> 20) & 31)
.asInstanceOf[Array[AnyRef]]((index >> 15) & 31)
.asInstanceOf[Array[AnyRef]]((index >> 10) & 31)
.asInstanceOf[Array[AnyRef]]((index >> 5) & 31)
.asInstanceOf[Array[AnyRef]](index & 31)
.asInstanceOf[T]
Compiling Vector.scala, before/after.
< #unique types : 10805
> #unique types : 9722
< #created tree nodes : 26716
> #created tree nodes : 25647
I found a similar bug about a year ago in 39f01d4f48. It's
interesting to consider how little defense we have against bugs
of this nature - visually non-obvious differences in tree
traversal can have spectacular impact on complexity.
|
|\ \ \ \
| |_|/ /
|/| | | |
Scrubbing up the IntelliJ Config
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Add recently sprouted modules (xml and parser-combinators)
- Replace some of the documentation with a setup script
- Update Ant build to copy Maven sourced JARs to ./build/deps.
These are included in the IntelliJ classpath.
- Define the library for Ant at the project level based on
./lib, rather than asking the user to define global library.
- Disable Type Aware Highlighting by default.
IntelliJ now can build everything within the IDE with CTRL-F9.
|
|\ \ \ \
| |_|/ /
|/| | | |
Refactor the cake so SymbolTable does not depend on Global
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Add a test which demonstrates how one can create symbols and types
from scratch and perform sub type check using them.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
SymbolTable refactoring introduced some TODOs that were supposed
to be addressed after M5 release. The reason I couldn't address
those problems right away was a conflict with our plans to modularize
Scaladoc and interactive. However, we decided to delay that work
until after M5 is released so addressing TODOs is not blocked
anymore.
This commit introduces the following changes:
* Eclipse project definitions for interactive and scaladoc
depend on scala-compiler project so they are builded against
latest version of the compiler (quick) instead of STARR.
This aligns our Eclipse project definitions with build.xml
structure.
* Introduce GlobalSymbolLoaders class which wires dependencies
of SymbolLoaders with assumption of dependency on Global.
* Switch to GlobalSymbolLoaders in BrowsingLoaders,
interactive Global and ScaladocGlobal; this eliminates all
TODO comments introduced before
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
At the moment we have just one Platform: JavaPlatform in the
compiler. The whole Platform abstraction feels dubious and
Java backends need to downcast to JavaPlatform to implement some
optimizations. It seems like for now it's just better to fix platform
declared in Global to be JavaPlatform and get rid of downcasting.
I checked that even JavaScript backend declares itself as a subtype
of JavaPlatform so it seems like our abstraction is not that useful.
If we have an alternative platform with specific requirements we
might want to refactor our Platform abstraction again but for now
it seems dubious to pay a price for abstraction nobody uses.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Add a SymbolTableTest which contains all the code needed to
initialize a SymbolTable in JUnit environment. It shows
that initialization of definitions works and one can easily
lookup some symbols and perform tests like subtyping tests.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Do not show output printed to standard output by default.
When a test fails it will be recorded in a report but when it
passes we don't need any debugging logging to be printed.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We want to write JUnit tests for Scala compiler so we should depend
on `scala-compiler` project in `test-junit`.
Also, make dependencies of `scala-compiler` project exported so it's
enough to depend on `scala-compiler` to get all the transitive
dependencies that are needed by the compiler. Otherwise, one would
need to copy all dependencies of Scala compiler to all Eclipse projects
that depend on the compiler.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is rather large commit so I'll first explain the motivation
behind it and then go through all changes in detail explaining
the choices I made.
The motivation behind this refactoring was to make SymbolTable
unit testable. I wanted a lightweight way of initializing
SymbolTable and then writing unit tests for subtyping algorithm,
various functionality related to Symbols, etc.
All of that should be possible by precisely controlling what we
test, e.g., create types and symbols by hand and not have them
defined in source code as we normally do in partest (functional)
tests.
The other motivation was to reduce and clarify dependencies we
have in the compiler. Explicit dependencies lead to cleaner
design. Also, explicit and reduces dependencies help incremental
compilation which is a big problem for us in compiler's code
base at the moment.
One of the challenges I faced during that refactoring was
cyclic dependency between Platform and SymbolLoaders.
Platform depended on `SymbolLoaders.SymbolLoader` because it
would define a root loader. SymbolLoaders depended on Platform
for numerous reasons like deferring decision how to load a given
symbol based on some Platform-specific hooks.
I decided to break that cycle by removing methods related to
symbol loading from Platform interface. One could argue, that
better fix would be to make SymbolLoaders to not depend on Platform
(backend) concept but that would be much bigger refactoring. Also,
we have a new concept for dealing with symbol loading: Mirrors.
For those reasons both `newClassLoader` and `rootLoader`
were dropped from Platform interface.
Note that JavaPlatform still depends on Global so it can
access phases defined in Global to implement `platformPhases`
method.
Both GenICode and BCodeBodyBuilder have some Platform specific
logic that requires casting because pattern matcher doesn't narrow
types to give them a proper refinement. Check the changes for details.
Some logging utilities has been moved from Global to SymbolTable
because they are accessed by SymbolTable. Since Global inherits from
SymbolTable this should be a source compatible change.
The SymbolLoaders has dependency on `compileLate` method defined in Global.
The purpose behind `compileLate` is not clear to me but the dependency looks
a little bit dubious. At least we made that dependency explicit.
ScaladocGlobal and Global defined in interactive has been adapted in a way
that makes them compile both with quick.comp and 2.11.0-M4 so my refactorings
are not blocking the modularization effort.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In particular, that version contains the
sbt/sbt@1b897a3a9422b698bf2c04103169a5eef1ff5b43 commit which removes
all residence compiler infrastructure and makes incremental compiler
less dependent on compiler internals.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The 27c8266e introduced `Platform.BinaryRepr` abstract type that
was meant to abstract over binary representation of a classfile.
The abstraction was needed at the time because we had both jvm
backend and msil backend. The msil backend has been removed but
the abstraction was kept in place. The type has been deprecated
and set to be an alias for AbstractFile. The alias will be
removed later in 2.11 milestone cycle.
All references to `Platform.BinaryRepr` has been removed in
the compiler in favour of using AbstractFile directly.
If we ever need to abstract over multiple backends we should
do that based on real requirements of given backends.
This is a first step towards breaking the cyclic dependency
between Platform and SymbolLoaders.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
ClassfileParser depends on forcing infos during typer phase.
It's not entirely clear why this is needed (git blame doesn't
help much) but I decided to preserve the logic.
Therefore, I introduced an abstract method called
`lookupMemberAtTyperPhaseIfPossible` which preserves the original
semantics but is implemented outside of ClassfileParser so the
ClassfileParser itself doesn't need to depend on typer phase and
phase mutation utilities.
I removed `loaders` override in `test/files/presentation/doc`.
I would have to update it to implement the
`lookupMemberAtTyperPhaseIfPossible` method. However, the override
doesn't seem to be doing anything useful so I just removed it.
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ClassfileParser contained some ICodeReader-specific logic
like `forceMangledName` and `getMemberSymbol` methods.
The `getMemberSymbol` method was defined in ConstantPool class
because it must access some internal state of ConstantPool. In order
to move that method to ICodeReader we had two options:
1. Make all internal state accessible from outside of ConstantPool
class so getMemberSymbol could be implemented outside of
ConstantPool hierarchy
2. Make it possible to subclass ConstantPool in ICodeReader so
getMemberSymbol can be implemented in a subclass and can access
internal state of ConstantPool
Given the fact that getMemberSymbol mutates ConstantPool's internal
state I decided that subclassing is a cleaner approach. It required
significant refactoring because we had to make sure that we create
an instance of proper class when initializing the `pool` variable.
I ended up introducing `ConstantPoolManager` class which is essentially
a mutable variable that can be reset multiple times.
This change makes ClassfileParser independent from the ICodeReader and
its implementation details.
|
|\ \ \
| | | |
| | | | |
Merge 2.10.x into master
|
| |\ \ \
| |/ / /
|/| | | |
|
|\ \ \ \
| | | | |
| | | | | |
Improve type printing (toString/debugging)
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
More consistency as to how to understand aliases,
singletons, specialized symbols, subclasses. Fewer
weird special casings, like normalizing tuples
and functions during type printing, but nothing else.
I avoid "normalize" entirely now, and do not make
special cases for dealiasing, which is already well
handled when printing error messages.
Look at the change to test/files/neg/t2641.check to get
a sense of why we should resist calling normalize during
the early days of a compilation run.
Anonymous and refinement classes can be printed far more
usefully by revealing their parents, and that too is here.
Hardened toString against undesirable side effects.
Make toString final to discourage any further rogue
toString overriders. Make safeToString a little safer.
|
| |/| | |
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
bincompat-backward.whitelist.conf
bincompat-forward.whitelist.conf
src/compiler/scala/reflect/reify/phases/Reshape.scala
src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
src/compiler/scala/tools/nsc/transform/Mixin.scala
src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
src/compiler/scala/tools/nsc/typechecker/Typers.scala
src/library/scala/concurrent/impl/Promise.scala
src/reflect/scala/reflect/internal/StdAttachments.scala
test/files/neg/macro-override-macro-overrides-abstract-method-b.check
test/files/run/t7569.check
|