From ac3528756c16aa0e292e91bd86b13729fbc43f66 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 12 Aug 2014 14:58:13 +0400 Subject: [PATCH] Small improvements in error reporting --- .../org/jetbrains/jet/lang/diagnostics/Errors.java | 7 ++++--- .../jet/lang/resolve/DeclarationsChecker.java | 2 +- .../jetbrains/jet/lang/resolve/ModifiersChecker.java | 12 +++++------- 3 files changed, 10 insertions(+), 11 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 42680e7ec44..7eb00091660 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -157,7 +157,7 @@ public interface Errors { .create(WARNING, ABSTRACT_MODIFIER); DiagnosticFactory0 OPEN_MODIFIER_IN_TRAIT = DiagnosticFactory0 .create(WARNING, modifierSetPosition(JetTokens.OPEN_KEYWORD)); - DiagnosticFactory0 TRAIT_CAN_NOT_BE_FINAL = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 TRAIT_CAN_NOT_BE_FINAL = DiagnosticFactory0.create(ERROR, FINAL_MODIFIER); DiagnosticFactory0 CONSTRUCTOR_IN_TRAIT = DiagnosticFactory0.create(ERROR); @@ -204,7 +204,8 @@ public interface Errors { // Members - DiagnosticFactory0 PACKAGE_MEMBER_CANNOT_BE_PROTECTED = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 PACKAGE_MEMBER_CANNOT_BE_PROTECTED = + DiagnosticFactory0.create(ERROR, modifierSetPosition(JetTokens.PROTECTED_KEYWORD)); DiagnosticFactory0 PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE = DiagnosticFactory0.create(ERROR, NAMED_ELEMENT); @@ -594,7 +595,7 @@ public interface Errors { DiagnosticFactory1 NESTED_CLASS_ACCESSED_VIA_INSTANCE_REFERENCE = DiagnosticFactory1.create(ERROR); DiagnosticFactory1 INACCESSIBLE_OUTER_CLASS_EXPRESSION = DiagnosticFactory1.create(ERROR); - DiagnosticFactory0 NESTED_CLASS_NOT_ALLOWED = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 NESTED_CLASS_NOT_ALLOWED = DiagnosticFactory0.create(ERROR, NAME_IDENTIFIER); //Inline and inlinable parameters DiagnosticFactory2 INVISIBLE_MEMBER_FROM_INLINE = DiagnosticFactory2.create(ERROR, CALL_ELEMENT); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java index eac79e4b8d3..432e183a189 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -294,7 +294,7 @@ public class DeclarationsChecker { JetModifierList modifierList = aClass.getModifierList(); if (modifierList == null) return; if (modifierList.hasModifier(JetTokens.FINAL_KEYWORD)) { - trace.report(Errors.TRAIT_CAN_NOT_BE_FINAL.on(modifierList.getModifierNode(JetTokens.FINAL_KEYWORD).getPsi())); + trace.report(Errors.TRAIT_CAN_NOT_BE_FINAL.on(aClass)); } if (modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD)) { trace.report(Errors.ABSTRACT_MODIFIER_IN_TRAIT.on(aClass)); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java index ee69490f8d3..4cb88b19417 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java @@ -79,7 +79,7 @@ public class ModifiersChecker { public void checkModifiersForDeclaration(@NotNull JetModifierListOwner modifierListOwner, @NotNull DeclarationDescriptor descriptor) { JetModifierList modifierList = modifierListOwner.getModifierList(); checkModalityModifiers(modifierList); - checkVisibilityModifiers(modifierList, descriptor); + checkVisibilityModifiers(modifierListOwner, descriptor); checkInnerModifier(modifierListOwner, descriptor); checkPlatformNameApplicability(descriptor); } @@ -106,13 +106,14 @@ public class ModifiersChecker { Lists.newArrayList(ABSTRACT_KEYWORD, OPEN_KEYWORD)); } - private void checkVisibilityModifiers(@Nullable JetModifierList modifierList, @NotNull DeclarationDescriptor descriptor) { + private void checkVisibilityModifiers(@NotNull JetModifierListOwner modifierListOwner, @NotNull DeclarationDescriptor descriptor) { + JetModifierList modifierList = modifierListOwner.getModifierList(); if (modifierList == null) return; DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); if (containingDeclaration instanceof PackageFragmentDescriptor) { if (modifierList.hasModifier(PROTECTED_KEYWORD)) { - trace.report(Errors.PACKAGE_MEMBER_CANNOT_BE_PROTECTED.on(modifierList.getModifierNode(PROTECTED_KEYWORD).getPsi())); + trace.report(Errors.PACKAGE_MEMBER_CANNOT_BE_PROTECTED.on(modifierListOwner)); } } @@ -129,10 +130,7 @@ public class ModifiersChecker { } else { if (modifierListOwner instanceof JetClass && !(modifierListOwner instanceof JetEnumEntry) && isIllegalNestedClass(descriptor)) { - PsiElement name = ((JetClass) modifierListOwner).getNameIdentifier(); - if (name != null) { - trace.report(Errors.NESTED_CLASS_NOT_ALLOWED.on(name)); - } + trace.report(Errors.NESTED_CLASS_NOT_ALLOWED.on((JetClass) modifierListOwner)); } } }