| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This is necessary if we ever want to get rid of our dependency on scala-compiler
|
|\
| |
| | |
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.
|
|\ \
| | |
| | | |
Fix #1975: Align valdefs and for expressions for patterns
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change helps to reduce non-determinism in the test. The problem
can happen when two consecute commands interfere:
[expect] [jdb]
cmd1 ---->
sleep 0.5 <--- part 1 of rep1
read & match buffer
clear buffer
cmd2 ---->
<--- part 2 of rep1
|
|/
|
|
|
|
|
|
|
|
| |
* 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
|