| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
If a tree has type error, subtrees may not have an assigned type.
Therefore we should avoid transforming such trees.
|
|\
| |
| | |
Fix-#1723: Avoid private leaks on completion
|
| | |
|
| |
| |
| |
| |
| | |
avoidPrivateLeaks got moved from Checking to TypeAssigner, where it
fits well besides the other avoid methods.
|
| |
| |
| |
| | |
As #1723 demonstrates, doing this at PostTyper is too late.
|
|\ \
| | |
| | | |
Fix #1644: Disallow inner classes in value classes
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix #1915 Synthetic function traits need NoInits flag
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When compiled from Scala2 that knowledge was lost. Normally that
would be not a problem (e.g. the same thing happens for Function0-22).
But FunctionXXL is special in that it is inherited only after erasure.
Since `augmentScala2Trait` runs before erasure, it is having no effect
on FunctionXXL itself when running on classes that inherit function types of
large arities. Therefore, FunctionXXL is missing an implementation class
at phase Mixin, which means that the supercall logic which rewires
super.<init> to implementation class init cannot work. This leaves us
with a super.<init> to FunctionXXL in `i1915.scala`.
The fix is to always know that `FunctionXXL` has no init method, so
no super.<init> will be generated for it.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
It was used only once and its body is almost as short as the name,
so no need to have a separate method.
|
| | |/
| |/|
| | |
| | | |
Fixes #1915.
|
|\ \ \
| | | |
| | | | |
Implement structural type member access
|
| | | |
| | | |
| | | |
| | | | |
We can't handle them with the proposed scheme. I made a note in #1886.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A previous type comparison was wrong because it did not map
refined-this types. I believe it was also redundant, so the easiest
fix is to drop it.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
The PR also fixes #1866, as shown by this test case.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Use base types instead of implicits. This is more robust
in the presence of type abstraction.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
New scheme for implementing structural type member access.
|
|\ \ \ \
| | | | |
| | | | | |
Fix incorrect flatten of thicket inside interpolated string in UntpdTreeMap
|
| | |_|/
| |/| | |
|
|\ \ \ \
| |_|_|/
|/| | | |
Fix #1916 - fix erasure of xxl closures
|
|/ / /
| | |
| | |
| | |
| | | |
xxl closures need to get the SAM type FunctionXXL as their explicit
type field after ersure.
|
|\ \ \
| |/ /
|/| | |
Fix #1750: Alternative fix for cyclic references due to illegal class overrides
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Illegal class overrides are fundamentally at odds with the way dotty
represents types and therefore can cause lots of low-level problems.
Two measures in this commit
First, we detect direct illegal class overrides on completion instead of
during RefChecks. Break the override by making the previously
overriding type private.
This fixes i1750.scala, but still fails for indirect overrides between
two unrelated outer traits/classes that are inherited by the same class or trait.
We fix this by catching the previously thrown ClassCastException
in both ExtractAPI and RefChecks.
Test case for indirect overrides is in i1750a.scala.
|
|\ \
| | |
| | | |
Add sbt-based bootstrap
|
| | |
| | |
| | |
| | |
| | |
| | | |
This way you can run both the dotty-library-bootstrapped and
dotty-compiler-bootstrapped tests with one command:
sbt ;publishLocal;dotty-bootstrapped/test
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
sbt runs up to `Runtime.getRuntime.availableProcessors` tasks in
parallel, on our CI that means 40 tasks, compilation tasks are the one
with the biggest footprint and the introduction of
`dotty-library-bootstrapped` and `dotty-compiler-bootstrapped` in this
PR means that sbt can now run more compilation tasks in parallel. To
prevent the JVM from exploding, we increase:
- The max heap size, from 1G to 4G
- The max code cache size, from 240M to 512M
- The max metaspace size, from 256M to 1G
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Type#member might return a denotation that doesn't "really exists" (as
defined by TypeAssigner#reallyExists), in some circumstance this
denotation can refer to a symbol in a class that is in the classpath but
that is not used by this file, so using addDependency on the result of
Type#member might add a false dependency. We avoid this by using
Type#select instead which will internally do the right thing.
This issue was discovered while compiling the bootstrapped projects
which would sometimes force a full recompilation for no reason.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The bug was that we declared case classes like:
case class CompFailed() extends NegTestState
but we used their companion objects like in:
case _ => CompFailed
Interestingly, this bug was caught by compiling this code with dotty,
instead of `failureStates` getting inferred to be of type `AnyRef`, it
ended up being a union of object types, this allows dotty to realize our
subsequent pattern match on `failureStates` cannot possibly succeed:
-- Error: /home/smarter/opt/dotty/compiler/test/dotty/partest/DPConsoleRunner.scala
353 | case CompFailedButWrongDiff() =>
| ^
| missing parameter type for parameter x$1 of expanded function x$1 =>
| x$1 @unchecked match
| {
| case CompFailedButWrongDiff() =>
| nextTestActionFailing(s"output differs")
| true
| case _ =>
| false
| }, expected = ?
-- Error: /home/smarter/opt/dotty/compiler/test/dotty/partest/DPConsoleRunner.scala
353 | case CompFailedButWrongDiff() =>
| ^^^^^^^^^^^^^^^^^^^^^^^^
|Pattern type CompFailedButWrongDiff is neither a subtype nor a supertype of selector type CompSucceeded | CompFailedButWrongNErr | CompFailed | CompFailedButWrongDiff'where: CompFailedButWrongDiff is a class in method runNegTest
| CompFailedButWrongDiff' is a object in method runNegTest
|
| | |
| | |
| | |
| | |
| | | |
Using changeOwnerAfter would be more appropriate but currently fails
with an assertion in LambdaLift
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As reportd by dotty (same thing with showShop):
cyclic reference involving implicit value showCar
This happens when the right hand-side of value showCar's
definition involves an implicit search.
To avoid the error, give value showCar an explicit type.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
`partest` and `partest-only` are now run through
`dotty-compiler-bootstrapped`. The old bootstrapping mechanism is
deleted since it has been unmaintained and broken for several months and
that I do not wish to maintain two bootstrapping mechanisms.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This adds two new project to the sbt build: dotty-library-bootstrapped
and dotty-compiler bootstrapped. These projects use the same source
files as dotty-library and dotty-compiler but are compiled using dotty
itself. The main usecase for this is that we can now run the JUnit
tests (which are _not_ just a subset of the tests run by partest, for
example the REPL tests are only run through JUnit) with
a bootstrapped compiler:
$ sbt
> publishLocal # Non-bootstrapped dotty needs to be published first
> dotty-compiler-bootstrapped/test
But this also allows one to experiment with a bootstrapped dotty much
more easily in general.
This revealed many issues in the compiler that are fixed in subsequent
commits in this PR.
|
| | |
| | |
| | |
| | |
| | | |
This is necessary to run the tests with the bootstrapped projects and is
just much better than hardcoding them anyway.
|
| | |
| | |
| | |
| | |
| | |
| | | |
If something needs to be fixed, fix it at the source. This prevented
dotty-compiler-bootstrapped from using the dotty-library-bootstrapped
clases instead of the dotty-library jar
|
|\ \ \
| | | |
| | | | |
Fix #1687: postpone computations in tailrec until they are needed.
|
| | | |
| | | |
| | | |
| | | | |
The b-test would compile for a millenia without the fix.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previous version precomputed everything needed to make the final decision.
This was fast-path for method that will be tail-rec transformed.
Unfortunatelly, in case decision was not to tail-rec optimize it could have
led to exponential number of transformations.
Now, the fast-path is for methods that will not.
|
|\ \ \ \
| |_|/ /
|/| | | |
Fix #1908: give synthetic default params correct flags
|
| |/ / |
|
|\ \ \
| |/ /
|/| | |
Upgrade backend to fix Java interop for inner classes
|
|/ /
| |
| |
| |
| |
| | |
The upgraded backend contains a single new PR:
https://github.com/DarkDimius/scala/pull/4 which fixes Java interop with
Dotty-emitted inner classes in objects.
|
|\ \
| | |
| | | |
Fix another NPE when compiling under -Yno-imports
|
| | | |
|