aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Set the positions of inlined trees wehn read form TastyMartin Odersky2016-10-0210-162/+107
| | | | | | | | | | | This required a major change in the way positions are handled, as the previous scheme did not allow to read the positions of arbitrary subtrees selectively. Fortunately, it's altogether a major simplification. Also, this fixed a bug in the previous scheme, where positions were generated before compactification, resulting in addresses being wrong.
* Support separate compilationMartin Odersky2016-10-022-3/+10
| | | | | Inline trees can now be read form TASTY. However, positions are not set correctly. This remains to be implemented.
* Simplify enclosingInlinedsMartin Odersky2016-10-023-24/+10
| | | | | - represent directly as a list - can replace separate inlineCount
* Fix stack overflow on recurs in namerFelix Mulder2016-10-021-4/+4
|
* Don't expand stat before recursion in namerFelix Mulder2016-10-021-2/+2
| | | | | Dottydoc needs the unexpanded trees so that it can have access to the attached docstring
* Avoid simple aliases in bindingsMartin Odersky2016-10-021-53/+66
| | | | | | | | | Avoid bindings such as type T = T' val x: x'.type = x' Required some refactorings in Inliner.
* Implement inline ifMartin Odersky2016-10-022-1/+14
| | | | Inline conditionals with constant conditions
* Print inlining positions in error messagesMartin Odersky2016-10-025-23/+42
| | | | | Error messages now print the inlined positions as well as the position of the inlined call, recursively.
* Track Inlined nodes in ctx.sourceMartin Odersky2016-10-023-4/+30
|
* Add Inlined tree nodeMartin Odersky2016-10-0210-5/+94
| | | | | | | | | ... to tag inlined calls. Perform typings and transformations of inlined calls in a context that refers to the INlined node in its InlinedCall property. The idea is that we can use this to issue better error positions. This remains to be implemented.
* Make Context#moreProperties strongly typedMartin Odersky2016-10-029-26/+39
| | | | To do this, factor out Key from Attachment into a new type, Property.Key.
* First version of inline schemeMartin Odersky2016-10-0213-12/+257
| | | | | To be done: outer accessors To be done: error positions
* Namer refactoingMartin Odersky2016-10-021-30/+31
| | | | | - DRY - Refactor out special path operations
* Make namePos a member of memberDefMartin Odersky2016-09-293-14/+20
| | | | | That way it can be accessed by other parts which deal with error messages.
* Make Modifiers untyped only.Martin Odersky2016-09-284-63/+58
| | | | | The typed variant is no longer needed. This means modifiers can safely be ignored in typed trees if we so choose.
* Eliminate tpd.Modifiers.Martin Odersky2016-09-263-10/+10
| | | | | | Backend does not need them after all, can just use nulls there. So the functionality is only used for printing, and it makes sense to move everything there.
* Drop tpd.modsDecoMartin Odersky2016-09-268-46/+28
| | | | Prefer to access directly via symbol.
* Simplify typedSelect logicMartin Odersky2016-09-251-25/+22
|
* Eliminate SelectFromTypeTree from docsMartin Odersky2016-09-252-6/+2
|
* Get rid of Thicket(List(...)) as an expressionMartin Odersky2016-09-252-6/+6
| | | | Thicket has a vararg constructor, so this syntax is redundant.
* Get rid of SelectFromType tree node.Martin Odersky2016-09-2514-115/+51
| | | | | | Roll its functionality into Select. Since we can always tell whether a tree is a type or term there is no expressiveness gained by having a separate tree node.
* Drop PairMartin Odersky2016-09-2516-131/+34
| | | | | | | | Drop tree node class 'Pair'. It was used only in imports, where it can easily be replaced by Thicket. The envisaged use for generic pairs is almost sure better modelled by a "Pair" class in Dotty's standard library.
* Address reviewers commentsMartin Odersky2016-09-252-7/+14
|
* Specially mark functions coming from wildcard expressionsMartin Odersky2016-09-243-4/+13
| | | | | | That way, we can check functions for the ordering requirement as well. We only have to remember that the last parameter of a wildcard function does not precede its body (because the parameter is in fact part of the body).
* Make InterpolatedString conform to ordering requirementMartin Odersky2016-09-245-40/+51
| | | | Arrange its sub-elements so that they appear strictly left to right.
* Check that (most) positions are non-overlapping.Martin Odersky2016-09-242-10/+30
| | | | | | | | | | | | | Check that children of a node have non-overlapping positions and that positions of successive children are monotonically increasing. This holds currently except for 3 exceptions: - Trees coming from Java as the Java parser also does desugarings which copy trees. - Functions coming from wildcard expressions - Interpolated strings We'll see whether we can do something about the latter two.
* Swap order of elements in AnnotatedMartin Odersky2016-09-2413-32/+32
| | | | | | | | | Now it's annotated first, annotation second. This is in line with AnnotatedType and in line with the principle that tree arguments should come in the order they are written. The reason why the order was swapped before is historical - Scala2 did it that way.
* Make positions fit for metaMartin Odersky2016-09-2415-163/+243
| | | | | | | | | | | | | | | | | | In particular: - get rid of envelope, it's too complicated and hides too many errors - check that everywhere in parsed trees the position range of a parent node contains the position ranges of its children. - check that all non-empty trees coming from parser have positions. The commit contains lots of fixes to make these checks pass. In particular, it changes the scheme how definitions are positioned. Previously the position of a definition was the token range of the name defined by it. That does obviously not work with the parent/children invariant. Now, the position is the whole definition range, with the point at the defined name (care is taken to not count backticks). Namer is changed to still use the token range of defined name as the position of the symbol.
* Fix isWildcardMartin Odersky2016-09-241-1/+1
| | | | | Code inspection revealed that it did the wrong thing for annotated trees, looking in the annotation instead of in the argument.
* Merge pull request #1534 from OlivierBlanvillain/clean-up-printersFelix Mulder2016-09-2325-30/+26
|\ | | | | Clean up config.Printers imports
| * Clean up config.Printers importsOlivier Blanvillain2016-09-2325-30/+26
| | | | | | | | And remove the not used Printer#echo
* | Fix CollectSuperMartin Odersky2016-09-211-7/+8
| | | | | | | | | | Add comment what it is supposed to achieve and change the implementation to follow the comment.
* | Avoid stale symbol errors for Scala-2 compiled symbolsMartin Odersky2016-09-191-0/+1
| | | | | | | | | | | | | | | | Wehn compiling dotty repeatedly using dotc.Bench, we got a stale symbol error involving an outer field of a Scala class. These can always be assumed to be current, as we would not think to recompile Scala2 classes mixed with dotty classes in the same session (we'd need two concurrent compilers for that).
* | Fix select staticMartin Odersky2016-09-192-26/+27
| | | | | | | | | | | | Need to do time travel to find out whether members were created as static symbols. After LambdaLift and Flatten most symbols are static anyway.
* | Fix handling of superCalls.Dmitry Petrashko2016-09-192-3/+10
| | | | | | | | | | 1. There may be calls to super on non-this. 2. there may be calls to in-dirrect super-traits.
* | Address reviewer commentsMartin Odersky2016-09-182-3/+8
| |
* | Fix #1503 - be careful where to insert an apply.Martin Odersky2016-09-176-12/+29
| | | | | | | | | | | | `apply` nodes should not be inserted in the result parts of a block, if-then-else, match, or try. Instead they should be added to the surrounding statement.
* | Merge pull request #1465 from dotty-staging/fix-#1457odersky2016-09-162-45/+92
|\ \ | | | | | | Fix #1457: Three incompatbilities with scalac
| * | Refactoring of findRefMartin Odersky2016-09-161-58/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Three goals: 1. Fix crasher in compileStdLib by saving and restoring foundUnderScala2 analogous to iportedFromRoot. 2. Make behavior the same as scalac under Scala2 mode - ListBuffer behaved differently before. 3. Make findRef faster by making it tail-recursive as long as nothing was found.
| * | Accommodate Scala2 name resolution schemeMartin Odersky2016-08-261-5/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Scala2 does not conform to spec Section 2, where it says: Bindings of different kinds have a precedence defined on them: 1. Definitions and declarations that are local, inherited, or made available by a package clause and also defined in the same compilation unit as the reference, have highest precedence. 2. Explicit imports have next highest precedence. 3. Wildcard imports have next highest precedence. 4. Definitions made available by a package clause, but not also defined in the same compilation unit as the reference, have lowest precedence. In fact Scala 2, merges (1) and (4) into highest precedence. This commit simulates the Scala2 behavior under -language:Scala2, but gives a migration warning. For the naming-resolution test case we get: dotc *.scala -language:Scala2 -migration callsite.scala:9: migration warning: Name resolution will change. currently selected : naming.resolution.Files in the future, without -language:Scala2: java.nio.file.Files' where Files is a type in package object package which is an alias of java.util.stream.Stream[java.nio.file.Path] Files' is a class in package file def gimmeFiles: Files = Files.list(Paths.get(".")) ^ one warning found
| * | Fix #1457: Three incompatbilities with scalacMartin Odersky2016-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Two of these are unavoidable. I moved the tests to diabled/not-representable and added in each case a comment to the main scala file detailing why there is a deviation. The last one (import-rewrite) is fixed.
* | | Merge pull request #1514 from OlivierBlanvillain/fix-1513odersky2016-09-164-19/+26
|\ \ \ | | | | | | | | Fix #1513: misaligned by name type parameter type bounds
| * | | Fix corner case w types ALL passed by name & out of orderOlivier Blanvillain2016-09-162-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit removes a problematic duplicated `checkBounds` call on `TypeApply`. To verify correctness of this change on has to check that `normalizeTree` used only once [1], and the function using `normalizeTree` already takes care of calling `checkBounds`. [1]: https://github.com/lampepfl/dotty/blob/0e8f05d88bfef95fac59f522fd9d06792126bd11/src/dotty/tools/dotc/transform/PostTyper.scala#L205
| * | | Fix #1513: misaligned by name type parameter type boundsOlivier Blanvillain2016-09-152-13/+23
| | | |
* | | | Merge pull request #1511 from dotty-staging/fix-1510odersky2016-09-161-1/+1
|\ \ \ \ | | | | | | | | | | Fix #1510: Fix error message when abstract member not implemented.
| * | | | Fix #1510: Fix error message when abstract member not implemented.Nicolas Stucki2016-09-141-1/+1
| |/ / /
* | | | Merge pull request #1469 from dotty-staging/fix-scala.Dynamicodersky2016-09-165-60/+73
|\ \ \ \ | |_|_|/ |/| | | Fixes for scala.Dynamic
| * | | Reformat code after fixes on scala.Dynamic.Nicolas Stucki2016-09-053-60/+60
| | | |
| * | | Fix #1474: Fix applies to applyDynamic.Nicolas Stucki2016-09-051-7/+9
| | | |
| * | | fixup #1470Nicolas Stucki2016-09-051-4/+5
| | | |