| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
We cannot assume that the untyped rhs of the bind is a `Typed` tree,
with extractors it might be an `Apply` node, and in general it might
also be a `Parens` node.
|
| |
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
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
|
| | | |
| | | |
| | | |
| | | | |
Updated with SI issues reported by Jason
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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 test exercises all the improvements made in previous
commits of this branch.
|
|\ \ \ \
| | | | |
| | | | | |
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.
|
|\ \ \ \
| |_|_|/
|/| | | |
Fix to wildapprox
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Prompted by a discussion on the Scala reddit, this one
verified that dotty does not have the problem exhibited
in SI-10170. I piggyback on this PR because this does
not warrant a separate PR>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
|
| |/ /
|/| |
| | |
| | |
| | | |
The test exercises all the improvements made in previous
commits of this branch.
|
|\ \ \
| | | |
| | | | |
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.
|
|\ \ \
| |/ /
|/| | |
Fix #1569: Fix logic for by-name parameters of inline methods
|
| | |
| | |
| | |
| | |
| | | |
As #1569 shows, by-name parameters should be treated in the same way
as by-value parameters. If the expression is not pure, install a binding.
|
|\ \ \
| |/ /
|/| | |
Fix-#1723: Avoid private leaks on completion
|
| |/
| |
| |
| | |
As #1723 demonstrates, doing this at PostTyper is too late.
|
|\ \
| | |
| | | |
Fix #1644: Disallow inner classes in value classes
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix #1915 Synthetic function traits need NoInits flag
|
| | |/
| |/|
| | |
| | | |
Fixes #1915.
|
|\ \ \
| | | |
| | | | |
Implement structural type member access
|
| | | |
| | | |
| | | |
| | | | |
We can't handle them with the proposed scheme. I made a note in #1886.
|
| | | |
| | | |
| | | |
| | | | |
The PR also fixes #1866, as shown by this test case.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Use base types instead of implicits. This is more robust
in the presence of type abstraction.
|
| | | |
| | | |
| | | |
| | | | |
New scheme for implementing structural type member access.
|
| |/ /
|/| |
| | |
| | |
| | | |
xxl closures need to get the SAM type FunctionXXL as their explicit
type field after ersure.
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Illegal class overrides are fundamentally at odds with the way dotty
represents types and therefore can cause lots of low-level problems.
Two measures in this commit
First, we detect direct illegal class overrides on completion instead of
during RefChecks. Break the override by making the previously
overriding type private.
This fixes i1750.scala, but still fails for indirect overrides between
two unrelated outer traits/classes that are inherited by the same class or trait.
We fix this by catching the previously thrown ClassCastException
in both ExtractAPI and RefChecks.
Test case for indirect overrides is in i1750a.scala.
|
|\ \
| | |
| | | |
Add sbt-based bootstrap
|