aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add a second betaReduceMartin Odersky2016-07-116-15/+50
| | | | | | | | | | | | | The new one only reduces straight applications of type lambdas with definite arguments. It is called very early on appliedTo, and derivedRefinedType. The old one, now renamed to normalizeHkApply also handles wildcard arguments and can garbage collect general unneeded hk-refinements. It is called later, at various places. TODO: See what functionality of normalizeHkApply should go into betaReduce instead. Maybe we can even drop normalizeHkApply? However: need to be careful to maintain aliases for hk type inference.
* Normalize RecTypes on creation to avoid cycles.Martin Odersky2016-07-112-27/+50
| | | | | With this change, ski compiles (but with more errors than before). Without it, it goes into various infinite recursions.
* Fixes to BetaReduce and asMemberOf; add a second betaReduceMartin Odersky2016-07-115-67/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new one only reduces straight applications of type lambdas with definite arguments. It is called very early on appliedTo, and derivedRefinedType. The old one, now renamed to normalizeHkApply also handles wildcard arguments and can garbage collect general unneeded hk-refinements. It is called later, at various places. TODO: See what functionality of normalizeHkApply should go into betaReduce instead. Maybe we can even drop normalizeHkApply? However: need to be careful to maintain aliases for hk type inference. Handle LazyRefs in BetaReduce Needs to be careful to not skip LazyRefs when dealiasing. - Fix^2 of asMemberOf: This fix ensures that - under the old hk scheme test succeeds for compilestdlib and tasty-new-all - under the new scheme test succeeds for i94-nada (i.e. REP[T] = T). - Try to beta-reduce bounds before adding to a constraint. - More subtle handling of LazyRefs in BetaReduce - Another refinement to asMemberOf Need to assume lastSymbol in sync with lastDenotation. - Drop isSafe test from BetaReduce Instead, track the higherkinded argument names that a type variable could potentially instantiate to.
* Don't map info of SkolemTypes in type mapsMartin Odersky2016-07-111-6/+1
| | | | | | | | Mapping the info may create new skolems which undermines the idea of a skolem as a fixed reference. In a sense, SkolemTypes are like Termrefs, mapping them does not map their info either. Creating new skolems on the fly in type maps caused some hard find to infinite loops under the new hk scheme.
* Make etaExpandIfHk work for non-symbol type paramsMartin Odersky2016-07-112-4/+10
| | | | Fixes a crasher in t2994.scala
* Refinement of cycle avoidanceMartin Odersky2016-07-112-3/+27
| | | | The previous fix caused 4 tests to fail under the old hk scheme.
* Beta-reduce when simplifyingMartin Odersky2016-07-111-1/+2
|
* Multiple fixesMartin Odersky2016-07-114-47/+109
| | | | | | | | | | | | | | | | | | | | | | | - Swap order of tests in lookupRefined - Change joins of BindingKinds. A type parameter joint with a normal refinement represents a type parameter that has been filled in. So the Binding attribute should be removed. - Fix printing of type lambdas under new hk scheme - refine isRef for hk type The new definition avoids that a higher-kinded type "isRef" of an underlying class. I.e. `[X] -> Any` is not longer a ref to `Any`. - Fix withBindingKind for type aliases Old definition converted aliases to type bounds. - Multiple fixes to BetaReduce - Fix logic for hk subtype tests - Make isHK more precise
* Turn on new hk schemeMartin Odersky2016-07-1115-169/+404
| | | | | | | For the moment under newHK flag. - avoid crasher in derivedTypeParams (NamedTypes don't always have symbols) - Revise logic in type comparer for new HK scheme
* Remove special case in parserMartin Odersky2016-07-111-10/+3
| | | | | | | | | | | | | | There was a special case that triggered a parse error in this course def lift[T <: Type](tp: T): (RecType => T) = arg match { case rt0: RecType => tp.subst(rt0, _).asInstanceOf[T] case _ => (x => tp) } The problem was that the rhs of the first case became a Function node, which caused a premature return from the case clause sequence. I could not determine anymore what the purpose of the removed case in the parser was; all tests compile without it.
* Add printing of type lambda treesMartin Odersky2016-07-113-6/+14
| | | | | Also fix printing of variances in typedefs and params; they were suppressed before.
* Disable checkInst in RecTypeMartin Odersky2016-07-111-9/+8
| | | | | It can give false negatives. Also, simplify RecType.closeOver
* Abstract type parameters out from type symbolsMartin Odersky2016-07-1110-43/+110
| | | | | | | | In the new hk scheme, a type parameter can be represented by a refinement without a corresponding symbol. Therefore, we need to disentangle the info inherent in a type parameter from the contents of a type symbol. We achieve this by creating a common super trait "MemerInfo" of Symbol and RefinedType.
* Introduce recursive typesMartin Odersky2016-07-1118-39/+296
| | | | | | | | | | | | | | | | | Map self-references in refinements to recursive types. This commit does this for refinement types appearing in source. We still have to do it for unpickled refinements. Test apply-equiv got moved to pending because it simulates the old higher-kinded type encoding in source, which relies on the old representation in terms of self-referential refinement types. The plan is not to adapt this encoding to the new representation, but to replace it with a different encoding that makes critical use of the added power of recursive types. Use recursive types also when unpickling from Scala 2.x. Add mapInfo method to Denotations.
* New type lambda scheme for hk typesMartin Odersky2016-07-118-4/+86
|
* Better printing of skolemsMartin Odersky2016-07-112-2/+8
| | | | | | | | | | They not print similar to scalac: "?x" where `x` is a unique number. Todo: An offline explanation what they are, similar to javac. I.e. ... ?3 ... where ?3: T
* Allow general recursion in refined types.Martin Odersky2016-07-1113-41/+59
| | | | | Treat parent like refinedInfo. Introduce isBinding convenience method in TypeBounds.
* Allow refinements of new typesMartin Odersky2016-07-115-18/+50
| | | | | | Previously a refinement could only apply to a type bound in the parent. This restriction needs to be dropped for the new encoding of hk type parameters.
* Merge pull request #1371 from dotty-staging/fix-#1366Nicolas Stucki2016-07-112-4/+17
|\ | | | | Fix #1366: constant adaptation
| * Test for #1366Martin Odersky2016-07-081-0/+6
| |
| * Fix: #1366, constant adaptationMartin Odersky2016-07-081-4/+11
| | | | | | | | | | Fix: #1366. Constant adaptation did not work if the expected type was an as yet uninstantiated type variable.
* | Merge pull request #1358 from edmundnoble/print-1357odersky2016-07-081-1/+0
|\ \ | | | | | | Implement -print
| * | Remove print option from ScalaSettingsEdmund Noble2016-07-061-1/+0
| | |
| * | Revert "Implement -print as -Xprint:(last phase)"Edmund Noble2016-07-061-2/+1
| | | | | | | | | | | | This reverts commit 8a39160e8375dd1707f686e13a2a796aed310ef7.
| * | Implement -print as -Xprint:(last phase)Edmund Noble2016-07-021-1/+2
| |/
* | Merge pull request #1362 from Blaisorblade/topic/2712-clarifyodersky2016-07-081-1/+1
|\ \ | |/ |/| Update README after SI-2712 fix was merged
| * Update README after SI-2712 fix was mergedPaolo G. Giarrusso2016-07-051-1/+1
|/
* Merge pull request #1350 from dotty-jvican/issue-1308Dmitry Petrashko2016-07-011-1/+1
|\ | | | | Add straightforward fix to #1308
| * Add straightforward fix to #1308jvican2016-07-011-1/+1
|/
* Merge pull request #1315 from nicolasstucki/optimize-try-casesDmitry Petrashko2016-06-306-75/+297
|\ | | | | Fix #856: Handle try/catch cases as catch cases if possible.
| * Fix #856: Handle try/catch cases as catch cases if possible.Nicolas Stucki2016-06-286-75/+297
| | | | | | | | | | | | | | Previously they were all lifted into a match with the came cases. Now the first cases are handled directly by by the catch. If one of the cases can not be handled the old scheme is applied to to it and all subsequent cases.
* | Merge pull request #1338 from dotty-jvican/non-deferred-ycheckDmitry Petrashko2016-06-301-0/+21
|\ \ | | | | | | Check non-deferred declarations are implemented
| * | Add postcondition check that ensures #971jvican2016-06-291-0/+21
| | |
* | | Merge pull request #1344 from dotty-staging/fix/partest-line-numbersDmitry Petrashko2016-06-302-9/+5
|\ \ \ | | | | | | | | partest: correct line numbers in run stack traces
| * | | partest: correct line numbers in run stack tracesGuillaume Martres2016-06-302-9/+5
|/ / / | | | | | | | | | | | | | | | | | | partest adds a warning in a comment at the beginning of source files that it copies, but this means that every line number displayed in a stack trace is offset by 6. We can workaround this by making the warning a single line with no newline at the end.
* | | Merge pull request #1332 from felixmulder/topic/snapshot-releasesFelix Mulder2016-06-251-4/+21
|\ \ \ | |_|/ |/| | Change versioning to SNAPSHOT and nightly releases for now
| * | Change versioning to SNAPSHOT and nightly releases for nowFelix Mulder2016-06-251-4/+21
|/ /
* | Merge pull request #1326 from felixmulder/topic/remove-scala-version-hardcodingDmitry Petrashko2016-06-232-28/+28
|\ \ | | | | | | Fixes for #1327, #1328 in dotc/dotr scripts
| * | Fix #1328: move search of jar deps to after buildingFelix Mulder2016-06-221-21/+21
| | |
| * | Fix #1327: redirect stderr from find_jarFelix Mulder2016-06-221-1/+1
| | |
| * | Remove hardcoded scala versionFelix Mulder2016-06-222-6/+6
| | | | | | | | | | | | Fixup from the last PR, review: @DarkDimius
* | | Merge pull request #1226 from dotty-staging/static-fixesDmitry Petrashko2016-06-2217-34/+174
|\ \ \ | | | | | | | | Multiple fixes to @static
| * | | Make class initialisers private. Otherwise they break GenBCode.Dmitry Petrashko2016-06-071-1/+1
| | | | | | | | | | | | | | | | | | | | GenBCode checks if class already has static initialiser, the check is fooled if class inherited a static initialisers.
| * | | MoveStatics: Fix classes without companion not getting static <clinit>Dmitry Petrashko2016-06-071-19/+20
| | | | | | | | | | | | | | | | This broke lazy vals, as unsafe offsets were not initialised.
| * | | LazyVals: do even more verbose debugging.Dmitry Petrashko2016-06-071-1/+5
| | | |
| * | | LazyVals: fix leftover moduleClass usage.Dmitry Petrashko2016-06-071-1/+1
| | | |
| * | | CheckStatic: report error position in case of disallowed overrideDmitry Petrashko2016-06-071-1/+1
| | | |
| * | | MoveStatics: fix a bug.Dmitry Petrashko2016-06-071-1/+2
| | | | | | | | | | | | | | | | Nicely spotted by Ycheck.
| * | | Add tests that were used to reproduce issues with LazyVals.Dmitry Petrashko2016-06-072-0/+14
| | | |
| * | | DottyBackendInterface: fix a bug in methodSymbols.Dmitry Petrashko2016-06-071-1/+1
| | | | | | | | | | | | | | | | | | | | This method is only used to find static initialisers. Previously, it was always wrong, but we didn't care as we never had them.