| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added Applications class to represent applications
- Added Constraint class to represent type constraints
- Added TyperState class to represent typer state
- Added Diagnostic class to buffer errors and warnings
- Added Inferencing class that contains some common functionality for type inferencing (this one's still rudimentary).
- Added extractor for FunctionType in Definitions
- Added desugaring of default parameters to default getters in Desugar
- Added flags to deal with default parameters
- Added substitutions that replace bound parameters
|
|
|
|
|
| |
A TypeVar is essentially a container whose contents can be "flipped" from a PolyParam to an instantiated type.
Adding TypeVars avoids subtitutions of large trees and all their types which would otherwise be necessary when a type parameter is instantiated at some point.
|
|
|
|
| |
… and got started with typing applications.
|
|
|
|
| |
Re-organized constraints and type comparers and added methods that will be needed for type inference.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We now pick a common superclass symbol even if it is not accessible. Accessible ones take precedence over non-accessible ones. The reason for doing this is better error diagnostics.
|
| |
|
|
|
|
| |
Replaced asSeenFrom by a direct copy of the underlying denotation, and added a cache for the result.
|
|
|
|
|
|
| |
Changed the algorithm for & (and also |) to take accessibility into account. Fixed various problems that opened up when doing this.
Under -debug, new and old behavior of & are checked side-by-side and any discrepancy is noted.
|
|
|
|
| |
&, | 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.
|
|
|
|
| |
Also some refactorings that were caused by adding this method.
|
|
|
|
| |
Replaces desugar.Mode. Is now a value class representing a set.
|
|
|
|
| |
ClassDefs are now TypeDefs that have a Template as rhs.
|
| |
|
|
|
|
|
|
| |
Typed TypeDefs no longer carry tparams. Untyped ones still do, but there is a special PolyTypeDef node for them in untpd.
Also, fixed flatten and DeSugarTest to deal with new tree desugarings which are not idempotent (e.g. desugar.classDef, or desugar.valDef).
|
|
|
|
| |
Parameterized are never PolyTypes anymore, so do not need to test for this.
|
|
|
|
|
|
|
|
| |
What did not work before:
type F[T] = G[X] & Runnable
We now make this work by interpreting type parameters of the RHS to be the type parameters of G[X].
|
| |
|
|
|
|
| |
Could drop quite a bit of code in the process.
|
|
|
|
|
|
|
| |
(1) New scheme for higher-kinded types that deals also with F-bounds.
(2) Type parameters in type aliases are eliminated in most cases by expressing
as unparameterized aliases of some refinement type. We will issue an error where
this is not possible.
|
| |
|
|
|
|
| |
A new design that relies on DefDef local maps, instead of global maps before.
|
|
|
|
|
|
|
| |
Type parameters are now counted only if they are not refined. I.e. previously given
class Map[K, V], K and V would be type parameters of Map { K = Int }, but now only V would be.
Also, added a new kind of name filter that gets all type members.
|
| |
|
|
|
|
|
| |
Also, changing the maps in Namer. More commenting needs to be done. Pushing now to get off this machine and
back to the new one, which just came back form repair.
|
|
|
|
|
|
|
| |
comparisons.
EmptyFlags comparisons were eliminated and replaced bu .isEmpty tests.
The problem this solves is that more than one flag value can represent an empty flag set.
|
| |
|
| |
|
| |
|
|
|
|
| |
Dropped Thicket as a Seq. Plus some other smallish changes.
|
| |
|
| |
|
|
|
|
| |
This is a first step towards going from List[Tree] to an array-backed solution with special cases for small numbers.
|
| |
|
|
|
|
|
| |
(1) Reorganization of Typed/Untyped trees. Untyped trees now have their own copier, transformer and accumulators.
(2) Better treatment of functions
|
| |
|
|
|
|
| |
Also, special treatment of <init>, which is not encoded.
|
|
|
|
|
|
| |
(1) Made desugaring reaching a fixed point.
(2) Systematic encoding of names.
(3) Introduced Closure nodes which represent anonymous functions
|
| |
|
|
|
|
|
| |
Replaced by tpd.Tree and untpd.Tree.
Also some cleanups in RefinedPrinters.
|
|
|
|
| |
Moved all other elements of TypedTrees and UntypedTrees into tpd and untpd.
|
|
|
|
|
|
|
| |
1) Getting rid of ugen in favor of untpd.
2) Eliminating some unused methods
3) Splitting out CheckTrees from TypedTrees.
4) Moving trees and related classes into separate package dotc.ast
|
|
|
|
| |
With various other small changes.
|
| |
|
|
|
|
|
| |
Split printers into several files. Added refined printing of trees. Changed Showable and generalized printing
under a precedence.
|
| |
|