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_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<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<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> 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);
|
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;
|
if (!context.completeAnalysisNeeded(aClass)) continue;
|
||||||
|
|
||||||
checkClass(aClass, classDescriptor);
|
checkClass(aClass, classDescriptor);
|
||||||
checkModifiers(aClass.getModifierList());
|
checkModifiers(aClass.getModifierList(), classDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<JetObjectDeclaration, MutableClassDescriptor> objects = context.getObjects();
|
Map<JetObjectDeclaration, MutableClassDescriptor> objects = context.getObjects();
|
||||||
@@ -90,7 +90,7 @@ public class DeclarationsChecker {
|
|||||||
|
|
||||||
if (!context.completeAnalysisNeeded(function)) continue;
|
if (!context.completeAnalysisNeeded(function)) continue;
|
||||||
checkFunction(function, functionDescriptor);
|
checkFunction(function, functionDescriptor);
|
||||||
checkModifiers(function.getModifierList());
|
checkModifiers(function.getModifierList(), functionDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<JetProperty, PropertyDescriptor> properties = context.getProperties();
|
Map<JetProperty, PropertyDescriptor> properties = context.getProperties();
|
||||||
@@ -100,7 +100,7 @@ public class DeclarationsChecker {
|
|||||||
|
|
||||||
if (!context.completeAnalysisNeeded(property)) continue;
|
if (!context.completeAnalysisNeeded(property)) continue;
|
||||||
checkProperty(property, propertyDescriptor);
|
checkProperty(property, propertyDescriptor);
|
||||||
checkModifiers(property.getModifierList());
|
checkModifiers(property.getModifierList(), propertyDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ public class DeclarationsChecker {
|
|||||||
JetFunction function = (JetFunction) member;
|
JetFunction function = (JetFunction) member;
|
||||||
hasDeferredType = function.getReturnTypeRef() == null && function.getBodyExpression() != null && !function.hasBlockBody();
|
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));
|
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);
|
checkModalityModifiers(modifierList);
|
||||||
checkVisibilityModifiers(modifierList);
|
checkVisibilityModifiers(modifierList, descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkModalityModifiers(@Nullable JetModifierList modifierList) {
|
private void checkModalityModifiers(@Nullable JetModifierList modifierList) {
|
||||||
@@ -310,9 +310,16 @@ public class DeclarationsChecker {
|
|||||||
Lists.<JetToken>newArrayList(JetTokens.ABSTRACT_KEYWORD, JetTokens.OPEN_KEYWORD));
|
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;
|
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),
|
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));
|
Lists.<JetToken>newArrayList(JetTokens.PROTECTED_KEYWORD, JetTokens.INTERNAL_KEYWORD));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user