summaryrefslogtreecommitdiff
path: root/sources/scalac/typechecker/RefCheck.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/typechecker/RefCheck.java')
-rw-r--r--sources/scalac/typechecker/RefCheck.java8
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) {