Added 'package member cannot be protected' error
This commit is contained in:
@@ -125,6 +125,8 @@ public interface Errors {
|
||||
DiagnosticFactory<JetPropertyAccessor> ABSTRACT_PROPERTY_WITH_GETTER = DiagnosticFactory.create(ERROR, "Property with getter implementation cannot be abstract");
|
||||
DiagnosticFactory<JetPropertyAccessor> ABSTRACT_PROPERTY_WITH_SETTER = DiagnosticFactory.create(ERROR, "Property with setter implementation cannot be abstract");
|
||||
|
||||
DiagnosticFactory<PsiElement> PACKAGE_MEMBER_CANNOT_BE_PROTECTED = DiagnosticFactory.create(ERROR, "Package member cannot be protected");
|
||||
|
||||
DiagnosticFactory<PsiElement> GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY = DiagnosticFactory.create(ERROR, "Getter visibility must be the same as property visibility");
|
||||
DiagnosticFactory<JetProperty> BACKING_FIELD_IN_TRAIT = DiagnosticFactory.create(ERROR, "Property in a trait cannot have a backing field", PositioningStrategies.POSITION_NAME_IDENTIFIER);
|
||||
DiagnosticFactory<JetProperty> MUST_BE_INITIALIZED = DiagnosticFactory.create(ERROR, "Property must be initialized", PositioningStrategies.POSITION_NAME_IDENTIFIER);
|
||||
|
||||
@@ -71,7 +71,7 @@ public class DeclarationsChecker {
|
||||
if (!context.completeAnalysisNeeded(aClass)) continue;
|
||||
|
||||
checkClass(aClass, classDescriptor);
|
||||
checkModifiers(aClass.getModifierList());
|
||||
checkModifiers(aClass.getModifierList(), classDescriptor);
|
||||
}
|
||||
|
||||
Map<JetObjectDeclaration, MutableClassDescriptor> objects = context.getObjects();
|
||||
@@ -90,7 +90,7 @@ public class DeclarationsChecker {
|
||||
|
||||
if (!context.completeAnalysisNeeded(function)) continue;
|
||||
checkFunction(function, functionDescriptor);
|
||||
checkModifiers(function.getModifierList());
|
||||
checkModifiers(function.getModifierList(), functionDescriptor);
|
||||
}
|
||||
|
||||
Map<JetProperty, PropertyDescriptor> properties = context.getProperties();
|
||||
@@ -100,7 +100,7 @@ public class DeclarationsChecker {
|
||||
|
||||
if (!context.completeAnalysisNeeded(property)) continue;
|
||||
checkProperty(property, propertyDescriptor);
|
||||
checkModifiers(property.getModifierList());
|
||||
checkModifiers(property.getModifierList(), propertyDescriptor);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -162,7 +162,7 @@ public class DeclarationsChecker {
|
||||
JetFunction function = (JetFunction) member;
|
||||
hasDeferredType = function.getReturnTypeRef() == null && function.getBodyExpression() != null && !function.hasBlockBody();
|
||||
}
|
||||
if ((memberDescriptor.getVisibility() == Visibility.PUBLIC || memberDescriptor.getVisibility() == Visibility.PROTECTED) && hasDeferredType) {
|
||||
if ((memberDescriptor.getVisibility().isPublicAPI()) && hasDeferredType) {
|
||||
trace.report(PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE.on(member));
|
||||
}
|
||||
}
|
||||
@@ -297,9 +297,9 @@ public class DeclarationsChecker {
|
||||
}
|
||||
}
|
||||
|
||||
private void checkModifiers(@Nullable JetModifierList modifierList) {
|
||||
private void checkModifiers(@Nullable JetModifierList modifierList, @NotNull DeclarationDescriptor descriptor) {
|
||||
checkModalityModifiers(modifierList);
|
||||
checkVisibilityModifiers(modifierList);
|
||||
checkVisibilityModifiers(modifierList, descriptor);
|
||||
}
|
||||
|
||||
private void checkModalityModifiers(@Nullable JetModifierList modifierList) {
|
||||
@@ -310,9 +310,16 @@ public class DeclarationsChecker {
|
||||
Lists.<JetToken>newArrayList(JetTokens.ABSTRACT_KEYWORD, JetTokens.OPEN_KEYWORD));
|
||||
}
|
||||
|
||||
private void checkVisibilityModifiers(@Nullable JetModifierList modifierList) {
|
||||
private void checkVisibilityModifiers(@Nullable JetModifierList modifierList, @NotNull DeclarationDescriptor descriptor) {
|
||||
if (modifierList == null) return;
|
||||
|
||||
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
|
||||
if (containingDeclaration instanceof NamespaceDescriptor) {
|
||||
if (modifierList.hasModifier(JetTokens.PROTECTED_KEYWORD)) {
|
||||
trace.report(Errors.PACKAGE_MEMBER_CANNOT_BE_PROTECTED.on(modifierList.getModifierNode(JetTokens.PROTECTED_KEYWORD).getPsi()));
|
||||
}
|
||||
}
|
||||
|
||||
checkCompatibility(modifierList, Lists.newArrayList(JetTokens.PRIVATE_KEYWORD, JetTokens.PROTECTED_KEYWORD, JetTokens.PUBLIC_KEYWORD, JetTokens.INTERNAL_KEYWORD),
|
||||
Lists.<JetToken>newArrayList(JetTokens.PROTECTED_KEYWORD, JetTokens.INTERNAL_KEYWORD));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user