From 0eebdfcd7bc582df8de261228ead61dcc239474e Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Tue, 15 Apr 2014 16:29:06 +0400 Subject: [PATCH] Fix positioning strategy for OVERRIDING_FINAL_MEMBER Remove unneeded call to AST --- .../src/org/jetbrains/jet/lang/diagnostics/Errors.java | 3 ++- .../org/jetbrains/jet/lang/resolve/OverrideResolver.java | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) 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())); } }