aboutsummaryrefslogtreecommitdiff
path: root/compiler/src
Commit message (Collapse)AuthorAgeFilesLines
* Fix sorting of accessed this-proxiesMartin Odersky2017-02-191-1/+6
| | | | | | | They are sorted according to the nesting depth of the classes they represent. This is no necessarily the same as the nesting level of the symbols of the proxy classes. i1990a.scala shows an example where the two differ.
* Fix default parameter value.Martin Odersky2017-02-181-1/+1
| | | | | | | Interesting that the tests pass even if we always assume outOfContext = true. So this raises the question why have a flag? It's just that I am not sure the `outOfContext` behavior is correct in all cases. So I prefer to be conservative here.
* Fix #1990: Handle case where inlining changes class of outerMartin Odersky2017-02-182-5/+16
| | | | | | | | | | The new situation in the test was that outer of the inlined method was `A` but it's as seen from type is a subtype `B`. We need two fixes: - Ignore outerSelects in TreeChecker. These are treated as having fixed symbols. - Adapt the outer-path logic to deal with code that's moved to another context.
* Merge pull request #1962 from dotty-staging/centralize-function-logicodersky2017-02-167-52/+111
|\ | | | | Factor out logic for scala functions.
| * Add checks for synthetic functions and erased functions.Nicolas Stucki2017-02-137-52/+111
| | | | | | | | | | | | | | | | * Add `isSyntheticFunction` checks for synthetic functions such as FuntionN for N > 22 and ImplicitFunctionN for N >= 0. * Add `erasedFunctionClass` to get the erased verion of synthetic functions. * Change the semantics of `isFunctionClass` to return true if it is any kind of FunctionN or ImplicitFunctionN.
* | Change '... expected but found ...' to MessageEnno Runne2017-02-144-12/+45
| |
* | Fix #1976: Hack to support scala.xml's $scope (#1977)odersky2017-02-144-1/+8
| | | | | | | | | | | | This is a gross hack to support the need for a $scope binding when XML literals are created. It should go away once we phase out XML literals. A library-based solution should use implicits instead.
* | Fix #1975: Align valdefs and for expressions for patternsMartin Odersky2017-02-141-5/+7
| | | | | | | | | | | | | | | | val definitions and for expressions both distinguish whether something is a pattern or a variable binding. They no do it the same way: `ident` or an `ident: type` is a variable binding, everything else is a pattern. Previously, capitalized idents were considered as bindings in valdefs but as pattern in fors.
* | Ennru forward reference error (#1973)Enno2017-02-142-2/+21
|/ | | | | | | | | | * Change 'forward reference extending over the definition' to Message * Change 'forward reference extending over the definition' to Message * pesky file should not be included * Change 'forward reference extending over the definition' to Message (test case)
* Merge pull request #1931 from dotty-staging/fix-#1501Guillaume Martres2017-02-134-3/+30
|\ | | | | Fix #1501 - Check trait inheritance condition
| * Fix package name of Java's Serializable classMartin Odersky2017-02-101-1/+1
| | | | | | | | It's java.io, not java.lang.
| * Narrow Java exception to inheritance ruleMartin Odersky2017-02-081-3/+5
| | | | | | | | | | Excepted are only Serializable and Comparable. This follows scalac's behavior.
| * Refine AnonClass generationMartin Odersky2017-02-081-1/+1
| | | | | | | | | | | | | | | | | | The leading class should be the superclass of the first trait (which is not always Object). We could think of a more refined condition, (i.e. taking the least common superclass of all extended traits), but I think it's not worth it, as one can always spell out the right superclass manually.
| * Refine checkTraitInheritance conditionMartin Odersky2017-02-081-3/+16
| | | | | | | | | | | | | | | | Need to take account of situations like extends Any with java.io.Serializable which occur in stdlib.
| * Fix #1501 - Check trait inheritance conditionMartin Odersky2017-02-082-1/+13
| | | | | | | | | | We need to check a coherence condition between the superclass of a trait and the superclass of an inheriting class or trait.
* | Merge pull request #1951 from dotty-staging/fix-1484Felix Mulder2017-02-131-2/+2
|\ \ | | | | | | fix #1484: position of while incorrect in debug
| * | fix #1484: position of while incorrect in debugliu fengyun2017-02-101-2/+2
| | |
* | | Merge pull request #1969 from dotty-staging/fix/annot-funGuillaume Martres2017-02-131-1/+5
|\ \ \ | | | | | | | | Fix parsing annotation on function type
| * | | Fix parsing annotation on function typeGuillaume Martres2017-02-121-1/+5
| |/ /
* / / Change 'overrides nothing' to report via Message (see #1965) (#1968)Enno2017-02-122-6/+38
|/ / | | | | | | | | | | * Change 'overrides nothing' to report via Message, split into two different messages * Change 'overrides nothing' to report via Message, split into two different messages
* | Merge pull request #1936 from dotty-staging/fix-1916-on-implicit-functionsodersky2017-02-083-6/+6
|\ \ | | | | | | Fix #1916: fix erasure of implicit xxl closures
| * | Fix #1916: fix erasure of implicit xxl closuresNicolas Stucki2017-02-033-6/+6
| | | | | | | | | | | | This commit extends the fix done in #1920 to implicit closures.
* | | Merge pull request #1921 from dotty-staging/fix-#1907odersky2017-02-081-19/+30
|\ \ \ | | | | | | | | Fix #1907: Improve error message
| * | | Disallow taking a class tag of Nothing or Null.Martin Odersky2017-02-011-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It seems in most cases this leads to weird behavior and cause confusing error messages later. It also means we cannot create an Array[Nothing], except by passing the classtag explicitly.
| * | | Handle Array classtags in the same way as othersMartin Odersky2017-02-011-19/+28
| | | | | | | | | | | | | | | | | | | | | | | | The previous implicit definition of arrayTag in DottyPredef priorities arrayTag over all other classtag searches, which led to surprising results in `i1907a.scala`.
| * | | Print typerstate nesting info as part of constr printingMartin Odersky2017-01-312-5/+11
| | | | | | | | | | | | | | | | | | | | When printing info about adding to constraints, show the hashes of the typerstate stack, so that we know where constraints are added.
| * | | Implement SearchResult.showMartin Odersky2017-01-313-5/+31
| | | |
| * | | Allow implicit-by-name parametersMartin Odersky2017-01-312-7/+4
| | | |
| * | | Avoid recomputation of companionRefsMartin Odersky2017-01-311-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous condition for caching companionRefs contained a condition result.companionRefs.forall(implicitScopeCache.contains) which was always false because we cache types in `implicitCodeCache`, not companion refs. The new logic fixes this and does not need a second traversal because it is integrated in `iscopeRefs`.
* | | | Merge pull request #1941 from dotty-staging/fix/infix-posodersky2017-02-089-43/+46
|\ \ \ \ | | | | | | | | | | Better positions for infix operations
| * | | | Better positions for infix term operations.Guillaume Martres2017-02-051-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Preserving the position of infix operators is useful for IDEs' type-at-point. We also preserve the position of the untyped lhs of right-associative operators, this is useful both for IDEs and for error messages, before: 4 |val x: List[Int] = "foo" :: List(1) | ^ | found: String($1$) | required: Int | After: scala> val x: List[Int] = "foo" :: List(1) -- [E007] Type Mismatch Error: <console> --------------------------------------- 4 |val x: List[Int] = "foo" :: List(1) | ^^^^^ | found: String($1$) | required: Int | Note: It would be even nicer if we displayed "String" instead of "String($1$)" since $1$ is synthetic, this commit does not address this.
| * | | | Represent untyped operators as Ident instead of NameGuillaume Martres2017-02-059-43/+44
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | This has two advantages: - We can distinguish BackquotedIdent from Ident, allowing the user to use a defined "type `&`", see testcase. - We get better positions for the operators. This is useful in IDEs, for example to get the type at point.
* | | | Merge pull request #1943 from dotty-staging/fix/lambda-positionodersky2017-02-081-0/+2
|\ \ \ \ | | | | | | | | | | Positioned#initialPos: Union the position of every children
| * | | | Positioned#initialPos: Union the position of every childrenGuillaume Martres2017-02-051-0/+2
| |/ / / | | | | | | | | | | | | | | | | | | | | Previously we missed some children, one consequence of this is that the position of the typed tree corresponding to the lambda "z => 1" did not contain the position of "z".
* | | | Merge pull request #1952 from dotty-staging/fix/object-namePosodersky2017-02-081-2/+2
|\ \ \ \ | | | | | | | | | | Trees#namePos: Correct position for objects
| * | | | Trees#namePos: Correct position for objectsGuillaume Martres2017-02-061-2/+2
| |/ / /
* | | | Merge pull request #1953 from dotty-staging/fix-wildapproxodersky2017-02-083-40/+57
|\ \ \ \ | |_|_|/ |/| | | Fix to wildapprox
| * | | Fix wildApprox functionMartin Odersky2017-02-073-40/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f-bounded-case-class.scala exhibited a StackOverflow in wildApprox before the fixes. The problem was due to F-bounds. Note: wildApprox is performance critical. I ran timed-bootstrap-repeated a couple of times to verify that the changes did not affect runtimes in significant ways. We should also watch out for a slowdown in the benchmark tests.
* | | | Print typerstate nesting info as part of constr printingMartin Odersky2017-02-082-5/+11
| | | | | | | | | | | | | | | | | | | | When printing info about adding to constraints, show the hashes of the typerstate stack, so that we know where constraints are added.
* | | | Implement SearchResult.showMartin Odersky2017-02-083-5/+31
| | | |
* | | | Allow implicit-by-name parametersMartin Odersky2017-02-082-7/+4
| | | |
* | | | Avoid recomputation of companionRefsMartin Odersky2017-02-081-5/+5
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | The previous condition for caching companionRefs contained a condition result.companionRefs.forall(implicitScopeCache.contains) which was always false because we cache types in `implicitCodeCache`, not companion refs. The new logic fixes this and does not need a second traversal because it is integrated in `iscopeRefs`.
* | | Merge pull request #1930 from dotty-staging/fix-#1568odersky2017-02-032-87/+94
|\ \ \ | | | | | | | | Fix #1568 - avoid transforming error trees
| * | | Fix #1568 - avoid transforming error treesMartin Odersky2017-02-022-87/+94
| |/ / | | | | | | | | | | | | If a tree has type error, subtrees may not have an assigned type. Therefore we should avoid transforming such trees.
* | | Weaken assumption in mergeCompanionDefsliu fengyun2017-02-021-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously `mergeCompanionDefs` assumes that if the attachment of class `Foo` is as follows: x :: y :: tdef @ TypeDef(_, templ) Then the `tdef` must be `Foo$`. When there are multiple pre-typer transforms, this is not necessarily true. For example, an annotation macro expansion may expand a non-case class `Foo` to `class Foo; object FooA`. We need to check the name of `tdef` to be equal to `Foo$`.
* | | Merge pull request #1874 from dotty-staging/topic/dottydoc-markdownFelix Mulder2017-02-025-40/+62
|\ \ \ | | | | | | | | [doctool] Add markdown support && Static site generation
| * | | Add position based error reporting to dottydocFelix Mulder2017-02-011-1/+4
| | | |
| * | | Make sure overriden members w/o docstring inherit by defaultFelix Mulder2017-02-011-1/+0
| | | |
| * | | Fix javadoc indentation style parsingFelix Mulder2017-01-312-32/+32
| | | |
| * | | Fix codeblocks in shortened markdownFelix Mulder2017-01-311-21/+24
| | | |