diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index 34f9878e35c..7220eba9aec 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -219,7 +219,8 @@ public interface Errors { DiagnosticFactory0 CANNOT_INFER_VISIBILITY = DiagnosticFactory0.create(ERROR, DECLARATION); - DiagnosticFactory2 OVERRIDING_FINAL_MEMBER = DiagnosticFactory2.create(ERROR); + DiagnosticFactory2 OVERRIDING_FINAL_MEMBER = + DiagnosticFactory2.create(ERROR, OVERRIDE_MODIFIER); DiagnosticFactory3 CANNOT_WEAKEN_ACCESS_PRIVILEGE = DiagnosticFactory3.create(ERROR, VISIBILITY_MODIFIER); 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 8002c048421..c371b0a12f7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -549,20 +549,20 @@ public class OverrideResolver { } JetModifierList modifierList = member.getModifierList(); - final ASTNode overrideNode = modifierList != null ? modifierList.getModifierNode(JetTokens.OVERRIDE_KEYWORD) : null; + boolean hasOverrideNode = modifierList != null && modifierList.hasModifier(JetTokens.OVERRIDE_KEYWORD); Set overriddenDescriptors = declared.getOverriddenDescriptors(); - if (overrideNode != null) { + if (hasOverrideNode) { checkOverridesForMemberMarkedOverride(declared, true, new CheckOverrideReportStrategy() { private boolean finalOverriddenError = false; private boolean typeMismatchError = false; private boolean kindMismatchError = false; @Override - public void overridingFinalMember( @NotNull CallableMemberDescriptor overridden) { + public void overridingFinalMember(@NotNull CallableMemberDescriptor overridden) { if (!finalOverriddenError) { finalOverriddenError = true; - trace.report(OVERRIDING_FINAL_MEMBER.on(overrideNode.getPsi(), overridden, overridden.getContainingDeclaration())); + trace.report(OVERRIDING_FINAL_MEMBER.on(member, overridden, overridden.getContainingDeclaration())); } }