diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java index b51f51a91af..673239d71c4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -357,7 +357,15 @@ public class OverrideResolver { abstractNoImpl.add(single); } } else { - manyImpl.addAll(overridenDeclarations); + List nonAbstractManyImpl = Lists.newArrayList(); + for (CallableMemberDescriptor overriden : overridenDeclarations) { + if (overriden.getModality() != Modality.ABSTRACT) { + nonAbstractManyImpl.add(overriden); + } + } + if (nonAbstractManyImpl.size() > 1) { + manyImpl.addAll(nonAbstractManyImpl); + } } } } diff --git a/compiler/testData/diagnostics/tests/override/FakeOverrideAbstractAndNonAbstractFun.jet b/compiler/testData/diagnostics/tests/override/FakeOverrideAbstractAndNonAbstractFun.jet new file mode 100644 index 00000000000..4ba1095f8fb --- /dev/null +++ b/compiler/testData/diagnostics/tests/override/FakeOverrideAbstractAndNonAbstractFun.jet @@ -0,0 +1,9 @@ +open class Ccc() { + fun foo() = 1 +} + +trait Ttt { + fun foo(): Int +} + +class Zzz() : Ccc(), Ttt