| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| | |
Factor out logic for scala functions.
|
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
|
|
| |
* 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)
|
|\
| |
| | |
Fix #1501 - Check trait inheritance condition
|
| |
| |
| |
| | |
It's java.io, not java.lang.
|
| |
| |
| |
| |
| | |
Excepted are only Serializable and Comparable. This follows
scalac's behavior.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Need to take account of situations like
extends Any with java.io.Serializable
which occur in stdlib.
|
| |
| |
| |
| |
| | |
We need to check a coherence condition between the superclass
of a trait and the superclass of an inheriting class or trait.
|
|\ \
| | |
| | | |
fix #1484: position of while incorrect in debug
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix parsing annotation on function type
|
| |/ / |
|
|/ /
| |
| |
| |
| |
| | |
* Change 'overrides nothing' to report via Message, split into two different messages
* Change 'overrides nothing' to report via Message, split into two different messages
|
|\ \
| | |
| | | |
Fix #1916: fix erasure of implicit xxl closures
|
| | |
| | |
| | |
| | | |
This commit extends the fix done in #1920 to implicit closures.
|
|\ \ \
| | | |
| | | | |
Fix #1907: Improve error message
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The previous implicit definition of arrayTag in DottyPredef
priorities arrayTag over all other classtag searches, which
led to surprising results in `i1907a.scala`.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
When printing info about adding to constraints, show the hashes
of the typerstate stack, so that we know where constraints are added.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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`.
|
|\ \ \ \
| | | | |
| | | | | |
Better positions for infix operations
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
|\ \ \ \
| | | | |
| | | | | |
Positioned#initialPos: Union the position of every children
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
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".
|
|\ \ \ \
| | | | |
| | | | | |
Trees#namePos: Correct position for objects
|
| |/ / / |
|
|\ \ \ \
| |_|_|/
|/| | | |
Fix to wildapprox
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
When printing info about adding to constraints, show the hashes
of the typerstate stack, so that we know where constraints are added.
|
| | | | |
|
| | | | |
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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`.
|
|\ \ \
| | | |
| | | | |
Fix #1568 - avoid transforming error trees
|
| |/ /
| | |
| | |
| | |
| | | |
If a tree has type error, subtrees may not have an assigned type.
Therefore we should avoid transforming such trees.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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$`.
|
|\ \ \
| | | |
| | | | |
[doctool] Add markdown support && Static site generation
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|