| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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)
|
|
|
|
| |
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.
|
|
|
|
|
| |
1) Split out wildApprox into separate function
2) Be more careful not to follow static prefix chains where not needed
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
That way they can be easily removed by search and replace, which gives us a clearer picture of the runtime profiles.
|
|
|
|
| |
Reason: This works even for typeRefs with joint-ref denotations, even if the symbol does not exist. The only reason to use symbol.isAliasType is if info.isAlias can produce a cycle.
|
|
|
|
| |
Caused a cyclic reference error when compiling the three files in test "testNonCyclic".
|
|
|
|
| |
Also: forward type parameter references of newly added to class scope. This is necessary, or the pattern match in test.scala would fail. Need to find out why.
|
|
|
|
|
|
| |
Previously, alias type refs were also accepted. But this is the wrong assumption for computeMembersNames. So, e.g. instead of leaving an AnyRef we now expand to Object.
Also making ==, != take an Any instead of Object
|
|
|
|
|
|
|
| |
1. Changes to SAMType extractor
2. Self names are no longer members of enclosing class
3. SAM-Type closures now print with their result type.
4. refactoring newSkolemSingleon ==> narrow
|
| |
|
| |
|
|
|
|
| |
All occurrences replaced by select, or second version of Term/TypeRef.apply
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
| |
Adding operattions select, derivedSelect which reduce combinations of typerefs over refinement types.
|
|
|
|
| |
Was still using the old-alias scheme, which is ineffective now.
|
| |
|
|
|
|
| |
Main refactoring: lub/glb moves to type comparers.
|
| |
|
|
|
|
| |
&, | on two TypeTypes yielded AndTypes and OrTypes, which is wrong. We now turn any ClassInfoTypes into TypeBounds and distribute the operator into the bounds, creating a TypeBounds type.
|
| |
|
|
|
|
| |
New methods: isClassType, derivesFrom, isArray. Refactored calls to typeSymbol and <:< into these. Made sure to use dealias where needed on remaining typeSymbol calls.
|
|
|
|
|
| |
Methods taking a fixed symbol are now called …withSym, methods taking a signature … withSig.
The reason for the change is that we want to liberate the original method names to take optional denotations, thus avoiding to have to go through withDenot each time.
|
|
|
|
| |
For the pruposes of & and |, NoType is now treated as top type, above Any.
|
| |
|
| |
|
|
|
|
| |
Part 1: Enabling tracing and avoiding subtype computations in margeDenot.
|
| |
|
|
|
|
| |
Also reducing debug output. Can now read and display all classes and objects in scala.collection.
|
| |
|
|
|
|
| |
Including a refactoring of symbol loaders and unpickler traits.
|
|
|
|
| |
Also improvements to toString.
|
|
|
|
| |
Can now read and display info of verious classfiles as listed in the showClass test. Great end of the week!
|
|
|
|
| |
Previously we looked at the info, but this forces too much. As a consequence we now systematically prefer concrete over abstract when computing & denotations. This could have the strange(?) effect that the symbol of a joint denotation is a class, yet its info is a TypeBounds value.
|
|
|
|
|
|
|
|
| |
1. filterAsSeenFrom has been split again into its constituents "filterExcluded" and "asSeenFrom", and care was taken not to force the info unless we have to. The accessible check is no longer done when collecting members, because it would have forced the symbol through requesting privateWithin.
2. SymDenotation#is is tweaked to no longer force the denotation if the flags are in "FromStartFlags", i.e. set upon symbol creation. We can then eliminate special cases isModuleXXX, isPackageXXX.
3. Other tweaks mostly having to do with weakening sym.exists checks to avoid CyclicReference errros.
|
|
|
|
| |
Manjor change is that splitArgs got eliminated and replaced by an optimized version of typeArgs.
|
|
|
|
| |
The new implementation keeps symbolic references where possible
|
| |
|
|
|
|
| |
Also, now all calls to NamedType#underlying are montored for infinite cycles.
|
|
|
|
| |
… to refinedName, refinedInfo. Also some other polishings in Types.
|
|
|
|
| |
The goal is that symbols should be entered/deleted directly into classes instead of their scopes. This is necesaary so that invariant about fingerPrint can be maintained. We achieve it by making the info scope have immutable type, so an explicit cast is needed to get around that.
|
|
|
|
|
|
|
|
| |
1. Dropped owner from denot#asSeenFrom. Code inspection shows that one needs to take the owner of the symbol in each alternative instead.
2. Changed fullName so that terms in the ownerchain leave a trace. Needed for disambiguating private symbols with expanded names. See worksheet nesting.sc for an example.
3. Changed fingerPrint so that only classes with children have their fingerPrints computed. Reason: When we lookup a member of a class initially, it's likely that the member is present, so a bloom filter will not buy us much and will take up memory. For parent classes it's different. We might have found the member already in the child, or in a different parent, so it's more likely that the fingerPrint is effective.
|
|
|
|
|
|
|
| |
1. Went back to old completer model where completers are types.
2. Made class denotations a simple optimzation of symbol denotatons (with more caches)
by moving all class-specific attributes into ClassInfo.
3. Now all symbol and symbol denotation creations are routed through one of 3 methods: newNakedSymbol, newNakedClassSymbol, newSymDenotation.
|
| |
|
|
|
|
| |
More utility methods in types. Also replaced Denotation#filter with a set of more useful operations.
|
|
|
|
| |
All base cases now supported. Still missing: Intelligent treatment of positions.
|
|
|
|
| |
Refactored parent normalization from Unpickler to TypeOps.
|