| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| |
| |
| |
| | |
This is needed to freeze the constraint.
|
| |
| |
| |
| | |
Closes #241 -- that took a while!
|
| |
| |
| |
| |
| | |
Without the fix and the later commit that checks types for overriding
we get a Ycheck failure in t3452h.scala.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Generalize overriding checking from isDefined
to all methods added by desugar to a case class.
None of these methods has an override so we
need to add one in case they do override another method
(previously we would flag this as an error).
|
| |
| |
| |
| |
| |
| | |
Otherwise we'd get a failure due to an overloaded `get` definition
whenever we typecheck a case class that is also a Map (because maps
inherit a `get`).
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
We now get a cyclic reference when inheriting from an inner class
with the same name in an outer supertype. Since this was legal
in Scala2 it's good to explain that particular case. Test case
in overrideClass.scala
|
| |
| |
| |
| |
| |
| |
| |
| | |
A SuperType should behave just as the underlying ThisType in asSeenFrom.
Without this patch, compiling the ...ViewLike hierarachy crashes with
a YCheck error in resolveSuper. The underlying issue is that the very
complicated tangle of supercalls does not type check because an asSeenFrom
with a SuperType prefix does not compute the right type.
|
| |
| |
| |
| |
| | |
`super` has no meaning for type membes. Harmonizing the
prefix to `this` avoids spurious incompatibilities.
|
| |
| |
| |
| |
| |
| | |
We do not allow same-named class members in supertraits
of a mixin composition anymore. This commit gives a
better error message and avoids a crash in RefChecks.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is needed to ensure that the type of a definition node
(ValDef, TypeDef, or DefDef) always refers to the symbol of
that definition.
Caused a spurious error in selfReq to go away (so error count was
updated).
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
ParamForwarding converts some parameters to nullary methods, yet
it does not update the references to these parameters. Their signature
is still NotAMethod, which is wrong. Causes subtle differences in
peckle tests: a param accessor get type T before pickling (which is
wrong), gets => T when reading back (which is right). Test case in
pickling/selfSym.scala.
|
| |
| |
| |
| |
| |
| |
| |
| | |
(1) Also allow symbols to switch between a member of a class
and a member of its selftype. Seen in the wild in TraversableViewLike.scala.
Test case in pickling/selfSym.scala
(2) Tidy up the error message.
|
| |
| |
| |
| |
| |
| |
| | |
Analogous to the previous situation where we do not report a data race
if the previous symbol comes from a superclass, we now do the same if
the previous symbol comes from a given self type. Makes overrideDataRace.scala pass,
and finally enables stdlib test with TraverableViewLike.scala added.
|
| | |
|
| |
| |
| |
| |
| |
| | |
If a partial application of a function has an error type,
make sure the whole tree also has an error type. Before,
sometimes the type was missing which led to a partial application error.
|
| | |
|
| |
| |
| |
| |
| |
| | |
When following an alias type, go directly to aliased type.
Going via the TypeAlias link causes the current variance ot be
narrowed to 0.
|
| |
| |
| |
| | |
Allows us to compile immutable.Set.
|
| |
| |
| |
| |
| |
| | |
It's unclear what the prupose of the previous restriction to Local only was.
And we need it to be set for all arg bindings so that immutable.Set does not
fail with a variance error.
|
| |
| |
| |
| | |
Describes its meaning more accurately.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Any is a supertype of every other type, so no need to analyze types in detail.
This also fixes the cyclic reference error observed for sets.scala, but only
for the special case where the base class is Any.
|
| | |
|
| |
| |
| |
| |
| | |
The tightened subtyping algorithm led to a cycle in baseTypeRef when
compiling sets.scala. This commit fixes the problem.
|
| |
| |
| |
| |
| | |
Comment explains why following aliases in general is incomplete and potentially unsound.
This makes Iter2 compile, but causes cyclic reference errors for pos/sets.scala.
|
| |
| |
| |
| |
| |
| | |
Previously adaptIfHK was performed on every type application. This made
t3152 fail. We now do this only on demand, in isSubType. t3152 now passes
again. But the change unmasked another error, which makes Iter2 fail to compile.
|
| |
| |
| |
| | |
Fixes problem raised in #966.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Also: various cleanups to comments.
|
| |
| |
| |
| |
| | |
As remarked by @smarter, argInfos does not work for type lambdas,
so argBoundss is always Nil.
|
| | |
|
| | |
|
| |
| |
| |
| | |
by bringing homogenization of # $Apply projections back.
|
| | |
|
| |
| |
| |
| |
| |
| | |
All Lambda abstractions, not just eta expansions, should
use actual parameter bounds, not the one retrieved from
the parameter symbols.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This prevents propagation changes leading to long
recompiles when a printer is changed.
|
| |
| |
| |
| | |
Makes i815 compile.
|
| |
| |
| |
| | |
Taking typeAlias is illegal in that case.
|
| |
| |
| |
| |
| |
| | |
Arg bounds do not count is bindings.
Also: TypeLambda's $Apply binding should be covariant,
because the parameter is (not sure it matters though).
|
| |
| |
| |
| | |
Arg bounds do not count is bindings.
|
| |
| |
| |
| | |
Printing bounds omits the "<:" otherwise.
|