You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixscala#9392: Allow overriding a Java method when a same-named field is present
In scala#9126, Java fields were marked effectively finals to prevent false
overrides. This poses a problem when a Java field and method of the same
name are present, because a Scala val or def will match both of these
according to Denotation#matches. This commit changes `matches` to
prevent Java field from matching any Scala method, but we can't prevent
them from matching Scala definitions with NotAMethod signature without
introducing more complexity, so the following still doesn't compile
unlike Scala 2:
```java
package pkg;
public class J {
int i = 0;
public int i() { return 1; }
}
```
```scala
class S2 extends pkg.J {
override def i: Int = 2 // error
}
```
I have an alternative fix at scala#9412 which doesn't have this issue but is
more hacky.
0 commit comments