| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Also: Making VarianceMap a SimpleMap for replayability
|
|
|
|
| |
Bringing file names tpd/untpd in line with the objects they define.
|
| |
|
|
|
|
| |
class info.
|
|
|
|
| |
Broke out common functionality in two new methods: widenExpr, and commonVariance.
|
| |
|
|
|
|
| |
types of ClassInfos.
|
|
|
|
| |
... because this cuts down on object creations. Also, some polishings in Denotations.
|
|
|
|
| |
Interesting signatures are now cached.
|
|
|
|
| |
Signatures have a different meaning before and after erasure. After erasure, the result type counts also whereas before it doesn't. The new definitions refelect this behavior.
|
|
|
|
|
|
|
| |
In particular
- closed a loophole where we did not go through parentDenot in ClassDenotation.
- fused some of the predenotation ops used in computeMemberNames
|
|
|
|
| |
Did not look like it was needed, after all; Local alone is enough.
|
| |
|
|
|
|
| |
- make namedParts return an ordered collection.
|
|
|
|
| |
In paricular, now type accumulators include the prefix of a ClassInfo type.
|
|
|
|
| |
All occurrences replaced by select, or second version of Term/TypeRef.apply
|
|
|
|
| |
I believe the logic is now clearer. Good to have one magic value less.
|
| |
|
|
|
|
|
|
| |
- moving out type applicaton related operations to a decorator: TypeApplications
- converting some set operations to list operations to make them replayable.
- moving unused operations to Types.overflow
|
|
|
|
|
|
|
|
|
| |
New operations:
- typeRef
- termRef
- valRef (like termRef, but with NotAMethod signature)
- termRefWithSig (like termRef, but with denotation's signature)
|
| |
|
| |
|
|
|
|
| |
Now uses a custom representation for sizes 4 and over. This improves on the previous representation in terms of immutable.Map because it is more efficient for smaller sizes and keeps orderedness. Being ordered is important for making things replayable.
|
|
|
|
| |
Because of the new typerstate design, we can enforce most invariants by design, or in a purely local manner. We can therefore drop the checkConsistent checks and replace them with much more lightweight assertions that make sure that only committable states are committed and only committable states can create typevars.
|
|
|
|
| |
Removing undetVars and instTypes as separately assignable fields. This is better for maintaining invariants by design.
|
|
|
|
| |
The fact that constraints are maps from PolyTypes to Array[Type] is now hidden form the restr of the program (Or, almost; unfortunately value classes force us to expose the parameter, but we renamed it to a name which is typically used for private data).
|
|
|
|
| |
Motivation: Keep usages separate, prepare for larger constraint refactoring.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Select reduces refinetype/typeref pairs and is therefore preferable over raw NamedType.
Still need to do the same for TypeRefs.
|
|
|
|
| |
To avoid noisy lubs such as Int(1) | Int(2) | Int(3), we impose the rule that A | B is valid only if A and B are non-singleton, widened types. This also maps Nil | Cons automatically to List, and maps None | Option automatically to Some.
|
|
|
|
|
|
|
| |
1. Needed to interpolate aftyer implicit parameyters are added.
2. Also needed to avoid constraining typevars if compared against selection proto.
Original coder example now typechecks.
|
| |
|
|
|
|
| |
The unstated assumption everywhere was that stripTypeVar would get rid of TypeVars. But it didn't if we had a TypeVar isntantiated to a TypeVar. Now it follows through chains of TypeVars.
|
|
|
|
| |
Better for now, since we do not want them do be hidden when testing / debugging the compiler.
|
|
|
|
| |
Performing refined/typeref reduction everywhere
|
|
|
|
| |
See doc comment for Config.newMatch what this is about,
|
|
|
|
| |
Adding operattions select, derivedSelect which reduce combinations of typerefs over refinement types.
|
|
|
|
| |
Caching, plus whether we want to match on signatures or types.
|
|
|
|
| |
Also, throw an exception on internal errors rather than issuing an error (this helps debugging, should be reverted for production).
|
|
|
|
|
|
|
|
|
|
| |
1) Mappers and Accumulators now reduce typerefs over refinements but do not follow general type args
Following type args in asSeenFrom leads into trouble because it specializes covariant aliases too early. A later as seen from might specialize the same alias with a more specific type.
2) The isDependent test in method type now uses a custom accumulator, because it needs to not flag erroenously types of the form p.T where p is a method paramater and T is a type parameter if `p`'s type which is aliased to an argument type. It should consider the argument type instead. With the change to 1), this broke, and is fixed by 2).
3) Unstable prefixes in member are widened.
|
| |
|
|
|
|
| |
Needed for replayability.
|
| |
|
| |
|
|
|
|
| |
Was still using the old-alias scheme, which is ineffective now.
|
|
|
|
| |
We need to dealias any bounds before adding it to the constraint because otherwise we might have added a constraint X <: X in disguise.
|
|
|
|
| |
Instead of throwing an exception if SImpleMap size goes over some threshold, we now report the largest constraint encountered in a run.
|