| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Getters transform `T` to `=> T`. This means that `=> T <: T`
might need to be true after getters. Observed in the wild
tree checking t938.scala after getters.
|
|
|
|
|
| |
-Ycheck:era checked after phase resolveSuper. This was due to an overly simplistic containsPhase
check.
|
|
|
|
| |
Need to avoid also symbols in ThisTypes
|
|\
| |
| | |
Adapt type parameters of typed eta expansion according to expected variances
|
| |
| |
| |
| |
| |
| |
| | |
Just noted that the previous scope might have been too small.
We compute the bucket index with the table size before going into the
synchronized. But that might mean we see a stale table size.
Let's see what this gives us.
|
| |
| |
| |
| |
| |
| | |
The previous commit made packages always fully completed.
This is wrong - since new members can be added to packages
at any time, packages are never fully completed.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix problems arising when hierarchies of classes are under completion at the same time.
In this case it can happen that we see a subclass (e.g. Arrays.scala) which depends
on a superclass (e.g. GenTraversableLike.scala) that itself does not have its parents
defined yet. Previously, several things went wrong here
- One of the base classes would be marked as frozen, even though it dod not have all
members entered yet. This led to an error in finger printing.
- The baseclasses and super class bits of the subclass would be computed before the parents
of the middle class were known. The baseclasses would then be chached, leading to
false results for isDerivedFrom.
We need to refine the logic for computing base classes, super class bits, and fingerprints
to account for that issue.
|
| |
| |
| |
| |
| |
| | |
Adding parents signals (via SymDenotation.fullyDefined) that
the class can now be frozen. So this should be done only after all
members are entered.
|
| |
| |
| |
| |
| |
| | |
getSimpleName crashes on some module names created by scalac.
May help finding the partest issue. (reverted from commit c11646c40042404550eb983577c9e7096a40502a)
|
| |
| |
| |
| |
| | |
Exclude false positives such as `Lambda|` be requiring
that lambda traits are defined in the Scala package.
|
| |
| |
| |
| |
| |
| |
| | |
When eta expanding a type `C` to `[vX] => C[X]` the variance `v`
is now the variance of the expected type, not the variance of the
type constructor `C`, as long as the variance of the expected type
is compatible with the variance of `C`.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously all lower case names were treated as variables
in patterns. But that made code like
x: cls
crash the compiler if `cls` was a class. Also, it owuld preventing
this idiom unless one wrote
x: `cls`
We now do it like scalac and treat lower case names as variables
only in arguments of types.
|
|
|
|
|
|
|
|
| |
Linearize instead. It would be nice to be able to give a
migration warning here, but unfortunately we do not have
a position at the point the warning would be generated,
and it feels like overkill to do another kind of exception
that gets propagated and caught in typer.
|
|
|
|
|
|
| |
The previous test was too struct, missed cases where
some arguments of the function were unbound. i583a.scala
contains a test case.
|
|
|
|
| |
Flag them as "migration warning" rather than just "warning".
|
|
|
|
|
|
|
|
| |
If `x` is not a function or method, then `x _` should be disallowed.
scalac accepts this and converts it to () => x instead. I'd like
to drop this because it's unnecessary and non-obvious. If
-language:Scala2 is on, the behavior is like Scala 2's but
a migration warning is issued.
|
|
|
|
|
|
| |
Make secondary constructor type parameters aliases of the
enclosing class parameters. Test case in i941.scala. Observed
in the wild when trying to typecheck Streams.scala.
|
| |
|
|\
| |
| | |
Make hash codes on type more predictable.
|
| |
| |
| |
| | |
May help finding the partest issue.
|
|\ \
| |/
|/| |
Add stable hash codes to PolyTypes and PolyParams.
|
| | |
|
| |
| |
| |
| | |
Helps me a lot in linker.
|
| |
| |
| |
| | |
Is in sync with hashSeed being protected.
|
|\ \
| | |
| | | |
Make Definitions survive recompilation of core definitions.
|
| | |
| | |
| | |
| | |
| | |
| | | |
1) Check that searched scope is consistent
2) Do a linear search for symbol with name, and report
if something was found that way.
|
| | |
| | |
| | |
| | | |
Was stdout, but this gets mixed up with the exception printing on stderr.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Set info early in order to avoid cyclic reference errors.
Errors were observed when compiling
scala/Predef.scala scala/package.scala scala/collection/GenSeqLike.scala
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Forces a bit less, and could be more efficient.
Did not seem to make a difference with current
CyclicReferences though, except that cyclic
error happened a bit later in the sequence.
|
| | |
| | |
| | |
| | | |
Track starts and ends of completions using indentation.
|
| | |
| | |
| | |
| | | |
Now also provides compilation unit.
|
| | |
| | |
| | |
| | | |
Again it dies without an exception trace. Is partest eating error output?
|
| | |
| | |
| | |
| | |
| | | |
Just a grap at straws to get a handle for the
missing reference problem.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Instead of simply dropping all Retyper error traces, we now
send them to the config.Printers.transforms printer, so what happens depends
on the value of that printer.
|
| | |
| | |
| | |
| | |
| | |
| | | |
I looked a some of the failures so far, and in each case we got
a huge "exception while typing" cascade but then no actual error!
Buffer overflow? To find out more I disabled the trace for now.
|
| | |
| | |
| | |
| | |
| | | |
Needed for both ClassTags and instance of checks. This makes
scala/Array.scala compile.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Taking a reference means that the symbol will be brought forward into the current run,
then if the same symbol is entered from source, a datarace ensues.
This affected the ProductN symbols because these are automatically added to a case class
suring desugaring.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Otherwise they would always return the symbol in the original context
where Definitions was first created.
Also, cache two more arrays of symbols per run.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Since we now have two forms of (almost) everything in Definitions,
might as well profit from it.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
TypeRef becomes Type, thus removing duplicates. Where
...Type was used in an extraction (e.g. ArrayType(...),
FunctionType(...)), we now use ...Of.
|
| | |
| | |
| | |
| | |
| | |
| | | |
1) Have symbol sets cached per run
2) Use methods Denotation#isPrimitiveValueClass, Denotation#isNumericValueClass
instead of calling contains directly on symbol sets.
|
| | |
| | |
| | |
| | | |
Contains tests on thsoe sets would be flakey anyway.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Remove unneeded maps and make the ones that are needed
private. Reason: Maps indexed with TypeNames are prone
to misuse; should be accessed only with names of known
primitive classes.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Maps should not have TypeRefs as keys, yet symbols are not stable
for recompilation. Solution: Construct these maps over symbols but
move them to CapturedVars#Transform where they will be re-built
on each run.
|
| | |
| | |
| | |
| | | |
Was a lazy val, but this is not stable under recompilation.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Remve versions in Symbols, always go through version in
Denotations. Avoids having two equivalent ways to do the same thing.
|