aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/RefChecks.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-11-02 22:52:00 +0100
committerMartin Odersky <odersky@gmail.com>2015-11-02 22:52:00 +0100
commitf3b1aef46f561eda43fcfb3db1b957b447b79322 (patch)
tree5ecd07916445750dd7be8398c6ff68dda4644248 /src/dotty/tools/dotc/typer/RefChecks.scala
parentb1cb0afd6bce37d8e7e77f1a64e6db82a0d7bb86 (diff)
downloaddotty-f3b1aef46f561eda43fcfb3db1b957b447b79322.tar.gz
dotty-f3b1aef46f561eda43fcfb3db1b957b447b79322.tar.bz2
dotty-f3b1aef46f561eda43fcfb3db1b957b447b79322.zip
Make isDefined override if necessary
isDefined is now always auto-generated for case classes. It need to get an automatic override if there is a version that's inherited.
Diffstat (limited to 'src/dotty/tools/dotc/typer/RefChecks.scala')
-rw-r--r--src/dotty/tools/dotc/typer/RefChecks.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/RefChecks.scala b/src/dotty/tools/dotc/typer/RefChecks.scala
index ae854ed9a..3ffbb8079 100644
--- a/src/dotty/tools/dotc/typer/RefChecks.scala
+++ b/src/dotty/tools/dotc/typer/RefChecks.scala
@@ -287,7 +287,9 @@ object RefChecks {
!member.isAnyOverride) {
// (*) Exclusion for default getters, fixes SI-5178. We cannot assign the Override flag to
// the default getter: one default getter might sometimes override, sometimes not. Example in comment on ticket.
- if (member.owner != clazz && other.owner != clazz && !(other.owner derivesFrom member.owner))
+ if (member.name == nme.isDefined && member.is(Synthetic)) // isDefined methods are added automatially, can't have an override preset.
+ member.setFlag(Override)
+ else if (member.owner != clazz && other.owner != clazz && !(other.owner derivesFrom member.owner))
emitOverrideError(
clazz + " inherits conflicting members:\n "
+ infoStringWithLocation(other) + " and\n " + infoStringWithLocation(member)