| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Pro: Much faster to iterate through uninstantiated type variables
Con: Constraints can no longer be value classes.
Still this seems to give a net win of ~2%.
|
|
|
|
| |
Also, some streamlining in the way memberNames are computed.
|
| |
|
|
|
|
| |
Now first checks in cache before going into special case for static classes (derivesFrom on types is not free!)
|
| |
|
| |
|
|
|
|
| |
was broken.
|
| |
|
|
|
|
| |
The idea is to use the alias itself. This cuts down on # of typebounds created and makes operations on refined infos and applied types more direct. (reverted from commit 81f31f9b71bc4466d3f04f5ce28ef94051688ecd)
|
| |
|
|
|
|
| |
Reason: (1) There are few sets: When compiling doty itself, 1.2K sets total, hashed to 500 uniques. (2) Bitset comparison is expensive because it relies on a double inclusion test. (This should be fixed in the Scala stdlib).
|
|
|
|
| |
Use eq for key comparisons in LRUCache.
|
|
|
|
| |
Gives us ~1%, it seems.
|
|
|
|
| |
The idea is to use the alias itself. This cuts down on # of typebounds created and makes operations on refined infos and applied types more direct.
|
|
|
|
| |
There were too many problems caused by it, and too little gained. So, now SelectionProto is no longer a Subtype of RefinedType.
|
| |
|
|
|
|
| |
This can happen in particular in derivedAnd/Or type, when applying a substitution or other mapping which identifies two types that were different before.
|
| |
|
|
|
|
|
| |
1) Split out wildApprox into separate function
2) Be more careful not to follow static prefix chains where not needed
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Added general way to put attachments on some base type (which needs to inherit from Attachment.Container).
Used it to turn typedTree map into an attachment.
Also, moved DotClass to dotc.util.
|
|\
| |
| |
| |
| | |
1) Make definitions load symbols in current run
2) Change handling of invalid parents. Instead of a copied denotation, we now invalidate the caches of the existing one. (Copying was not enough, as old versions of denotations kept leaking in).
|
| | |
|
| | |
|
|/ |
|
|
|
|
| |
The only remaining completers that complete in creation context are the source completers defined in Namers. So a separate abstraction is no longer needed.
|
|
|
|
|
|
| |
Instead current ctx is passed through everywhere.
Question: can we factor out ctx better?
|
| |
|
|
|
|
|
|
|
| |
As a first step, we make the complete method in LazyType take an implicit context parameter. This requires
a fairly large propagation of implicit contexts.
The implicit parameter is ignored for classes inheriting from CompleteInCreationContext (which until now are all completers). The next step will be to make the complete methods of selective lazy types take the current context, rather than the creation context.
|
| |
|
| |
|
| |
|
|
|
|
| |
Compiler tests can now be run with configurable number of compilers and runs in a compiler.
|
|
|
|
| |
Invalidating them before indexing means symbols are touched before a new version is entered, which leads to "compiled twice" errors.
|
|
|
|
| |
Rather than fiddling with scopes, which can lead to race conditions, we now special case member lookup and mamber name filters in ClassDenotations that represent packages.
|
|
|
|
| |
... because there's no way to reload them in a new run.
|
|
|
|
| |
If a NamedType was denoted a SymDenotation one run, but stops being defined in the next, throw a staleSymbol error.
|
|
|
|
|
| |
Otherwise we get spurious "compiled twice" errors on every symbol defined in a run after the first one.
Also, fixed a bug so that now run ids are correctly incremented.
|
| |
|
| |
|
|
|
|
| |
"conforms" is no longer special-cased to be eligible as a implicit conversion. Only implicit methods are eligible, whereas conforms is an implicit value with an apply method. So far, "conforms" as an implicit conversion masked in effect some type inference bugs. With the previous two commits, it is no longer necessary because two type inference bugs got fixed.
|
|
|
|
| |
When resolving overloading with a fun proto type, we need to evaluate the arguments in the current context, not in an exploring context. Reason: The argument types might contain type valiables that are constrained in the context and that needs to be maintained.
|
|
|
|
| |
Can now also convert a constant to a type that's lower-bounded by a primitive numeric type.
|
|
|
|
|
|
|
|
| |
by command line options like
#compilers 3 #runs 10
This would create one after another 3 compiler instances and perform 10 runs in each.
|
|
|
|
|
| |
1) Simplify skipped one level over arguments of AndType/OrType.
2) variances needs to follow instantiated typevars
|
|
|
|
| |
We now pair refinedInfos with the same name as deeply as wek can (before only went to depth 1).
|
|
|
|
|
|
| |
Now this is required only for members of a template. Local statements can still have implicits with no result type. (Maybe we need to get back on this).
Also, changed Dotty itself and tests to adhere to the new restriction.
|