| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| | |
Use virtual file instead of temporary file for tests
|
|/ |
|
|\
| |
| | |
Typos, better assertions, dead code
|
| |
| |
| |
| |
| | |
More verbose assertions.
Unnecessary semicolons removed.
|
| | |
|
|\ \
| | |
| | | |
For some tests context is required, it should be passed to checker phase.
|
| |/ |
|
|\ \
| | |
| | | |
Fix/#34 pathresolvers
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The root cause of #34 was that we took a type argument which was an existential type. These are returned as type bounds, which make no sense in the calling context. To avoid that problem in the future, `typeArgs`
got renamed to `argInfos`, so it is clear we get an info, not necessarily a value type. There are
also added method `argTypes`, `argTypesLo`, `argTypesHi`, which return a type, but either throw an exception or return a lower/upper approximation of the argument is an existential type.
There's another issue that the existential type only arose when compiling the same couple fo files the seciond time. We need to chase that one down separately.
|
| | |
| | |
| | |
| | | |
Right now this one fails.
|
|\ \ \
| |_|/
|/| | |
Enable verbose printing of exceptions thrown in junit tests
|
|/ / |
|
|\ \
| |/
|/|
| | |
Infrastructure for per-phase tests, with inline source as a string.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
What was `baseType` and is now `baseTypeRef` only computes the prefix of of basetype, not the type arguments.
If type arguments need to be included there is `baseTypeWithArgs`. The reason is that type arguments are usually already encoded as member types. But this was a source of errors because in Scala 2, baseType includes the type arguements.
(also added test file structural.scala forgotten from last commit)
|
| |
| |
| |
| | |
We need to use Object as parent then, but this was forgotten.
|
| | |
|
| |
| |
| |
| | |
Need to take variances into account when forming & or | of bounds. Achieved by moving code from distributeAnd/Or to TypeBounds &/|.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Template parents always were constructor calls before. This is not correct because in a situation like the one
elaborated in templateParents, the trait D has the class C as supertype, but it does not call its constructor (in fact, if we added a () parameter list to make it into a constructor this would be wrong because C takes parameters.
Now parents can be either types or constructor calls.
The logic in Namer and Typer that deals with parents is cleaned up. In particular, we now construct any synthetic class parent as a full type, before calling normalizeToClassRefs. This obviates the forwardRefs logic that needed to be done in a cleanup of Namers.
Also added two more checks: (1) All parents except the first one must point to traits. (2) A trait may not call a parent class constructor.
|
| |
| |
| |
| |
| | |
1) Untyped trees now have precise isType/isTerm methods.
2) The New(tree, args) method can now also handle TypedSplices.
|
|/
|
|
| |
See examplation in 2nd commit of branch aborted/simplify-hk.
|
| |
|
|
|
|
| |
There were a lot in StoreReporter, as we are creating about 0.5M new ones per self-compile.
|
|
|
|
| |
This avoids the megamorphic dispatch on symbol before. Looked promising in the profiler (symbol showed up at 9%) but does not seem to gain much in practice. Still, can't hurt to do it.
|
|
|
|
| |
into locals.
|
|
|
|
|
|
|
| |
1) We now keep an association between ClassSymbol and SuperId (instead of TypeRef and SuperId). That's better
because superId's are deleted anyway after each run, so we gain nothing by keeping a stable ref.
2) hasChildren got dropped. It was too unreliable. The mere fact that someone take's the superId of a class
does not means that that class has children.
|
|
|
|
|
|
| |
Perform the operation only if there are qualifying type variables, which is rarely the case.
Reverted variances optimization to simpler and shorter previous implementation, because variances
is no longer hot.
|
|
|
|
|
|
| |
- Avoid closure creation in Position.
- Avoid creating debug string in SymDenotations
- Avoid creating Flag translation tables in pickle buffers
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Several measures:
1. Invalidate classOfId and superIdOfClass in ContextBase after each run. These contain local classes
that should become inaccessible.
2. Also clear implicitScope cache that maps types to their implicit scopes after each run. (not sure whether
this is needed; it did show up in paths from root, but on second thought this might have been a gc-able
cycle.
3. Avoid capturing contexts in lazy annotations.
4. Avoid capturing contexts in functions that compute souceModule and moduleClass
5. Avoid capturing contexts in Unpickler's postReadOp hook.
|
|
|
|
| |
Uniques are now cleared after each run. Also, HashSets get a more standard API, without a label, but with configurable load factor.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When froming the &=merge of two denotations, we now discard denotations which have inaccessible symbols.
The reason for this change is that, without it, the following code gives the warning "cannot merge Int and Int() as members of one type, keeping only Int()".
val m = new java.util.HashMap
m.size
Indeed java.util.HashMap has a filed and method which are both named size. The field is package private, so is inaccessible from outside java.util, however.
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Fix typos in docs
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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%.
|