| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Type inference tends to take quite different paths for non-variant
and variant data structures. Since, non-variant hmap has already exposed quite
a few problems, it's good to test it also in the covariant case.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
I believe this worked only accidentally because we matched
more things with wildcards which turned out to be flawed. The test
errors show some funky _#_ types, so not sure whether the tests
are still valid or not. Moved back to pending awaiting further
resolution.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Variance changes quite a few things for type inference, so
it's good to check a non-variant version as well.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
These now compile with the changes to dependent methods, except
for one which is invalid under dotty.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The HLists test brought out the unsoundness of alias
rewriting in glbs which is tackled in the last commit.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Disallow subtypes of Function1 acting as implicit conversions
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Now only Scala2 mode treats Function1's as implicit conversions. Instead we introduce
a new subclass ImplicitConverter of Function1, instances of which are turned into
implicit conversions.
|
| | | | | | |
|
| | |_|/ /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The new test `falseView.scala` shows the problem. We might create
an implicit value of some type that happens to be a subtype of Function1.
We might now expect that this gives us an implicit conversion, this
is most often unintended and surprising.
See the comment in Implicits#discardForView for a discussion why
we picked the particular scheme implemented here.
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It's hard to predict for defKind all the desugarings that can be
applied to a definition. Better to do it once the desugarings have been
applied. NoInit and PureInterface are both tested only after Typer,
so it's OK to delay their initialization until regular Typer.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The default param will be desugared into a method with a body, so
setting PureInterface would be wrong. The enclosed test previously
failed with a pickling difference, because the unpickler correctly
decided to not set the PureInterface flag since it saw the default param
method.
This fixes the tasty_dotc_util which failed since the last commit
because FreshNameCreator was now incorrectly recognized as a PureInterface.
|
| |/ /
|/| | |
|
|\ \ \
| |_|/
|/| | |
Fix #2056: Backend crash when inlined method contains try
|
| | |
| | |
| | |
| | |
| | |
| | | |
In various places we do "case EmptyTree =>", since Tree#equals uses
reference equality this means that EmptyTree should never be copied,
otherwise some other code path will be taken.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Deleting an error message changes all subsequent error message umbers,
which means that REPL tests were invalidated. This is a bit unfortunate
from a testing standpoint.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Drop the [type T] syntax, and what's associated to make it work.
Motivation: It's an alternative way of doing things for which there seems
to be little need. The implementation was provisional and bitrotted during
the various iterations to introduce higher-kinded types. So in the end the
complxity-cost for language and compiler was not worth the added benefit
that [type T] parameters provide.
Noe that we still accept _named arguments_ [A = T] in expressions; these are useful
for specifying some parameters and letting others be inferred.
|
|\ \
| | |
| | | |
Fix #2030: Don't chain implicit conversions
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When inferring a view, we are not allowed to use another
implicit conversion to adapt its result. Fixing this revealed
another problem where we have to re-enable implicit conversions
when pre-typing arguments in overloading resolution.
|
| |/
|/| |
|
|\ \
| | |
| | | |
Fix #2033: Improve handling of unresolved overloaded arguments
|
| |/ |
|
|\ \
| |/
|/| |
HMap test case
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Treat implicit by-name arguments as lazy values
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
With the previous rules, the two test cases produce a
diverging implicit expansion. We avoid this by creating
for every implicit by-name argument of type T a lazy implicit
value of the same type. The implicit value is visible for all
nested implicit searches of by-name arguments. That way,
we tie the knot and obtain a recursive lazy value instead of
a diverging expansion.
|
|\ \ \
| | | |
| | | | |
Better error messages for missing type of recursive definitions
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
Add overloading support for case-closures
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
case-closures (which are represented as Match nodes) have a known
arity just like other function literals. So shape analysis for
overloading resolution should apply to them as well.
|
|\ \ \ \
| | | | |
| | | | | |
Fix #2020: Only the first parameters of a case class are caseaccessors
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Only the parameters in the first parameter list of a case class should get
the `CaseAccessor` flag. Fixes #2020.
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Fix #2009: Fix placeholder params logic for lambdas
Logic was missing placeholders in rhs of lambdas.
* Add comment
* Fix typo
|
|\ \ \ \
| | | | |
| | | | | |
Fix #2000: Make implicit and non-implicit functions incomparable
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Implicit and non-implicit functions are incomparable with <:<, but are
treated as equivalent with `matches`. This means implicit and non-implicit
functions of the same types override each other, but RefChecks will
give an error because their types are not subtypes.
Also contains a test for #2002.
|
|\ \ \ \
| | | | |
| | | | | |
Fix off-by-one error in forward reference checking
|
| | | | | |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Avoid accidental captures of Context
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Previously, the following code accidentally used the implicit Context
parameter of `typedApply`:
tryEither {
implicit ctx => typedOpAssign
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix #1747: Improve error message for Scala/Java type mismatch
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Omit the `=>' if a PolyType has a MethodType as result type.
|
|\ \ \ \ \ \ \
| |_|_|_|_|/ /
|/| | | | | | |
Don't inline when errors are detected
|