diff options
Diffstat (limited to 'sources/scalac/typechecker/RefCheck.java')
-rw-r--r-- | sources/scalac/typechecker/RefCheck.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sources/scalac/typechecker/RefCheck.java b/sources/scalac/typechecker/RefCheck.java index 3b5b9f7d78..00279759ec 100644 --- a/sources/scalac/typechecker/RefCheck.java +++ b/sources/scalac/typechecker/RefCheck.java @@ -136,6 +136,14 @@ public class RefCheck extends Transformer implements Modifiers, Kinds { overrideError(pos, member, other, "needs `override' modifier"); } else if (other.isStable() && !member.isStable()) { overrideError(pos, member, other, "needs to be an immutable value"); + } else if ((member.flags & DEFERRED) == 0 && (other.flags & DEFERRED) == 0 && + member.owner() != clazz && + !clazz.parents()[0].symbol().isSubClass(other.owner())) { + unit.error(pos, "conflict between concrete members " + + member + member.locationString() + " and " + + other + other.locationString() + + ":\n both are inherited from mixin classes; " + + "\n an overriding definition in the current template is required"); } else { Type self = clazz.thisType(); switch (other.kind) { |