| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
| |
|
| |
|
|\
| |
| | |
Modified tests to use relative paths
|
| |\
| | |
| | |
| | |
| | | |
Conflicts:
readme.md
|
| | | |
|
| | | |
|
| | | |
|
| |/
|/| |
|
| | |
|
|/ |
|
| |
|
|
|
|
| |
"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.
|
|
|
|
| |
Improves effectiveness of elidable cache from ~66% to ~85% and reduces # of implicits that need to be checked after discarding to about 20% what it was before.
|
|
|
|
|
|
|
| |
1) Result type may not be empty
2) Parameters of implicit conversions may not be singletons
Reason for 2) is that we can do a much better caching for eligible implicits if we can widen singleton arguments in ViewProto. This leads to consicderable speedups in implicit search which seem to be hard to get without the restriction.
|
|
|
|
|
|
|
|
|
|
|
|
| |
some nested import.
This also changes the criterion when a root import is disabled.
A root import is now disabled if there is an inner import from the same package or module, and the inner import contains at least one disabling clause X => _. (The latter crierion is new; without it, we would consider something like
import scala.{collections => c}
as a hiding import for Scala, which seems to go too far.)
|
| |
|
|
|
|
| |
Instead of doing a wildApprox of the whole type, we fuse with the logix for method types and just do a wild approx of the single method type argument we have to test.
|
|
|
|
| |
Needs to be done always when hitting a wildcard import, not just when something was found
|
|
|
|
| |
to avoid accidental confusion with scala.Predef
|
|
|
|
|
| |
(1) Moved into refMatches, to avoid normalize on references that are discarded anyway
(2) Added another check if the expected type is a value class
|
|
|
|
| |
This reverts commit 7cb292fad14dc9ee7f1325f83df0328ffa8f2194.
|
|
|
|
|
|
| |
eligibility.
Unless we do this, typevars would sneak into eligibility checks.
|
| |
|
| |
|
| |
|
|
|
|
| |
MethodTypes and PolyTypes now check their argument for compatibility before setting up a complete isApplicable test.
|
| |
|
| |
|
|
|
|
|
|
| |
They no longer can be accidentally equal to refinement type.
Todo: Disentangle selection protos entirely from Refinement types? See branch disentangle-selectproto.
|
|
|
|
| |
We now track eligible calls and the number of refs tested in an eligible call.
|
|
|
|
|
|
| |
We cache SelectionProtos if their "compat" parameter is "NoViewsAllowed". We always cache ViewProtos.
That's important for implicit search, because this enables eligible refs to be better cached. To make this work, we add a case to WildApprox which massages SelectionProtos so they also get noViewsAllowed in the compat parameter.
|
|
|
|
| |
narrow is exercised a lot after the improvement to normalize. So it's important to cache it in order not to bust `uniques` with NoprefixTermRefs.
|
|
|
|
| |
This lets us streamline normalize, and avoid to create FunctionTypes if the expected type is a FunProto or ViewProto.
|
| |
|
|
|
|
|
|
|
|
| |
To avoid to always create a type before checking its uniqueness we specialize on the three most common categories: RefinedTypes, TypeBounds and NamedTypes.
Each category gets its own uniques map. Hashing is disentangled from Types.
The new treatement seems to give some improvement (2-5%?) but not much.
|
|
|
|
| |
of type itself.
|
|
|
|
|
|
|
|
|
|
|
| |
Now, PolyTypes, BoundTypes and TypeVars are cached, too. This leads to the following changes:
- unique types table 135K -> 310K
- uncached types 923K -> 0.5K (these are types that are cachable, but contain an uncached part)
- cached type allocs 3420K -> 4322K
- runtime on dotc (24KLOC) 31sec -> 20sec
So, it's a big net win, but we should watch the size of the uniue types table; possibly make it weak.
|
|
|
|
|
|
| |
To save time we handle these directly, rather than looking for implicit conversions. Reason: this saves time (looks like 5-10% of frontend), and we know these are always available.
The scheme would be foiled if someone introduced additional implicit conversions between numeric types. We could detect and forbid that.
|
| |
|
|
|
|
| |
Previous flagsString is no longer accessible. Have to use Dotty's mechanism to show flags,
|
| |
|
|
|
|
| |
That way they can be easily removed by search and replace, which gives us a clearer picture of the runtime profiles.
|
|
|
|
| |
Will need to call from type comparer if instantiations were delayed
|