aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | Skolemize arguments to dependent methods as necessary.Martin Odersky2017-04-102-4/+21
| | | | | | | | | | | | | | | | This was missing before, led to errors not being detected.
| * | | Explain skolem typesMartin Odersky2017-04-101-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Strictly speaking, all the info about a skolem type is printed, e.g. A(?2) But it's reassuring to have an explanation line like ?2 is an unknown value of type A
| * | | Handle printing of term paramrefsMartin Odersky2017-04-102-6/+8
| | | | | | | | | | | | | | | | These were not printed before, fell back to toString method.
* | | | Merge pull request #2197 from dotty-staging/add-enum-exhaustivenessodersky2017-04-104-100/+77
|\ \ \ \ | | | | | | | | | | Add enum exhaustivity checking
| * | | | simplify exhaustivity check using ConstantTypeliu fengyun2017-04-061-49/+11
| | | | | | | | | | | | | | | | | | | | Now the algorithm is the same as in the paper.
| * | | | remove obsolete codeliu fengyun2017-04-061-9/+0
| | | | |
| * | | | exhaustivity support for enumsliu fengyun2017-04-063-51/+69
| | | | |
| * | | | Add child annotations for enum valuesMartin Odersky2017-04-062-4/+10
| | |/ / | |/| | | | | | | | | | | | | | A new kind of child annotation that points to the term symbol representing an enum value.
* | | | Merge pull request #2206 from dotty-staging/fix-#2198odersky2017-04-101-2/+4
|\ \ \ \ | |_|/ / |/| | | Fix #2198: Don't widen module singletons
| * | | Fix #2198: Don't widen module singletonsMartin Odersky2017-04-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since module classes are a compiler-generated construct that's not directly visible to programmers, it seems better not to automatically widen a module singleton to its underlying class. Fixes #2198.
* | | | Merge pull request #2207 from dotty-staging/fix-#2188Nicolas Stucki2017-04-091-0/+3
|\ \ \ \ | | | | | | | | | | Fix #2188: Do cbn transform also on Selects
| * | | | Fix #2188: Do cbn transform also on SelectsMartin Odersky2017-04-091-0/+3
| |/ / / | | | | | | | | | | | | These can arise as a result of an explicit outer transform.
* | | | Merge pull request #2208 from dotty-staging/fix-#2192Guillaume Martres2017-04-091-2/+12
|\ \ \ \ | | |_|/ | |/| | Fix #2192: Follow supertypes when determining whether an expect type …
| * | | Fix #2192: Fullow supertypes when determining whether an expect type is a ↵Martin Odersky2017-04-091-2/+12
| |/ / | | | | | | | | | function type
* | | Merge pull request #2205 from dotty-staging/fix-#2220odersky2017-04-093-32/+70
|\ \ \ | |/ / |/| | Fix #2220: Change handling of package objects and tweak hk type inference
| * | Fix documentationMartin Odersky2017-04-091-4/+3
| | |
| * | Tweak logic for hk type comparisonsMartin Odersky2017-04-091-4/+3
| | |
| * | Three fixes wrt handlings of package objectsMartin Odersky2017-04-092-28/+68
| | | | | | | | | | | | | | | | | | | | | | | | 1. Invalidate packageObj cache when entering a package object 2. Prefer package object members over same-named package members unless we are in the scala package 3. Exclude package objects from no-double-bindings checks, since package objects may now be visited before indexing them.
* | | Fix #2201: Less aggressive type application reduction for better inferenceGuillaume Martres2017-04-081-3/+6
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we believed that reducing type applications did not affect type inference as long as the reduced type constructor had the same arity as the unreduced one, for example reducing `Foo[X, Y]` is fine when `Foo` is defined as: type Foo[A, B] = Bar[A, B] but not when it's defined as: type Foo[A] = Bar[A, A] But this is not a sufficient condition: the bounds of the type constructor arguments also matter for type inference, so we need to be more strict and disallow reductions in cases like: type Foo[A, B] = Bar[B, A] and: type Foo[A, B] = Bar[A, Int]
* | Merge pull request #2193 from dotty-staging/deterministic-testsFelix Mulder2017-04-062-2/+2
|\ \ | | | | | | Deterministically randomises test compilation order
| * | Deterministically randomises test compilation orderOlivier Blanvillain2017-04-052-2/+2
| | | | | | | | | | | | The previous implementation would compile tests in different orders from machine to machine, depending on the order in which *.scala files are listed by the operating system.
* | | Merge pull request #2187 from dotty-staging/fix-2166odersky2017-04-061-1/+7
|\ \ \ | |_|/ |/| | fix #2166: unpickling of shared CaseDef
| * | fix #2166: unpickling of shared CaseDefliu fengyun2017-04-041-1/+7
| | |
* | | Adapt TastyPrinter to new formatMartin Odersky2017-04-061-1/+1
| | |
* | | Update doc comment on HkTypeLambda/PolyTypeMartin Odersky2017-04-061-12/+13
| | |
* | | PolishingsMartin Odersky2017-04-067-19/+13
| | |
* | | Refactorings for efficiencyMartin Odersky2017-04-062-43/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | - split LambdaType.equals into two equals so that tests are more specific (also avoids type testing against a trait) - re-order cases in some pattern matches with the aim to (1) move common cases earlier, (2) move more expensive trait type tests later.
* | | Narrow matches from TypeLambda to HKTypeLambda where appropriateMartin Odersky2017-04-064-8/+10
| | |
* | | Merge MethodType and PolyType functionality where possibleMartin Odersky2017-04-0612-130/+78
| | | | | | | | | | | | | | | | | | Two benefits: (1) less code. (2) finding subtle bugs about parameter dependent method types. By merging with PolyTypes we are forced to take parameter dependencies into account.
* | | Make PolyType a ground typeMartin Odersky2017-04-062-1/+5
| | | | | | | | | | | | | | | It's too surprising to leave it as a type proxy. In all circumstances except erasure, it is not true that a PolyType is somehow the same as its result type.
* | | Split HKTypeLambda from PolyTypeMartin Odersky2017-04-069-31/+28
| | |
* | | Generalize comparisons from PolyTypes to TypeLambdasMartin Odersky2017-04-061-7/+7
| | |
* | | Handle hk lambdas in tastyMartin Odersky2017-04-064-33/+42
| | |
* | | Eliminate LambdaAbstractMartin Odersky2017-04-067-34/+34
| | | | | | | | | | | | Use fromParams instead.
* | | Further refactoringsMartin Odersky2017-04-0621-146/+150
| | | | | | | | | | | | | | | - Use TypeLambda instead of PolyType. - Further harmonize factory operations
* | | Rename PolyTypeTree -> LambdaTypeTreeMartin Odersky2017-04-0613-44/+44
| | |
* | | Add HKTypeLambdaMartin Odersky2017-04-061-5/+40
| | |
* | | Eliminate MethodOrPolyMartin Odersky2017-04-064-6/+4
| | | | | | | | | | | | Replace with LambdaType
* | | Eliminate ParamTypeMartin Odersky2017-04-065-18/+12
| | | | | | | | | | | | Replace with ParamRef
* | | replace derived{Method,Poly}Type with derivedLambdaTypeMartin Odersky2017-04-0617-45/+34
| | |
* | | Add StarLambda, HKLambda abstractions ...Martin Odersky2017-04-061-70/+79
| | | | | | | | | | | | | | | ... to distinguish between HK(proxy) and *(ground) types. Also, refactor some more methods to keep it DRY.
* | | Make PolyTypes subtypes of LambdaTypesMartin Odersky2017-04-064-98/+89
| | | | | | | | | | | | Also, rename LambdaOver{Type,Term}s to {Type,Term}Lambda
* | | Rename PolyParam --> TypeParamRefMartin Odersky2017-04-0628-173/+166
| | |
* | | Refactor ParamRef so that no type params are neededMartin Odersky2017-04-064-51/+31
| | |
* | | Remove parameter from lambda typeMartin Odersky2017-04-062-9/+12
| | |
* | | Get rid of Name parameter for LambdaType and ParamRefMartin Odersky2017-04-064-24/+32
| | | | | | | | | | | | Use an abstract type instead.
* | | ParamType refactoringsMartin Odersky2017-04-064-77/+78
| | | | | | | | | | | | Trying to bring PolyTypes closer to TypeLambdas
* | | Harmonize paramTypes and paramBoundsMartin Odersky2017-04-0643-213/+216
| | | | | | | | | | | | | | | | | | MethodTypes have paramTypes whereas PolyTypes have paramBounds. We now harmonize by alling both paramInfos, and parameterizing types that will become common to both.
* | | Break out functionality from MethodTypeMartin Odersky2017-04-0620-134/+176
| | | | | | | | | | | | | | | and generalize MethodParam to ParamRef, and TypeParamInfo to ParamInfo
* | | Drop name checking scheme for type parametersMartin Odersky2017-04-061-9/+3
| | | | | | | | | | | | | | | It was a red herring. Symbolic names are expanded anyway to $plus / $minus, so they can't be confused with a variance prefix.