lateinit setter now must have the same visibility as its property visibility
This commit is contained in:
@@ -337,7 +337,7 @@ public interface Errors {
|
|||||||
|
|
||||||
DiagnosticFactory0<PsiElement> REDUNDANT_MODIFIER_IN_GETTER = DiagnosticFactory0.create(WARNING);
|
DiagnosticFactory0<PsiElement> REDUNDANT_MODIFIER_IN_GETTER = DiagnosticFactory0.create(WARNING);
|
||||||
DiagnosticFactory0<PsiElement> GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<PsiElement> GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<PsiElement> PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<PsiElement> SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<PsiElement> ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<PsiElement> ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory2<KtTypeReference, KotlinType, KotlinType> WRONG_GETTER_RETURN_TYPE = DiagnosticFactory2.create(ERROR);
|
DiagnosticFactory2<KtTypeReference, KotlinType, KotlinType> WRONG_GETTER_RETURN_TYPE = DiagnosticFactory2.create(ERROR);
|
||||||
DiagnosticFactory0<KtTypeReference> WRONG_SETTER_RETURN_TYPE = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtTypeReference> WRONG_SETTER_RETURN_TYPE = DiagnosticFactory0.create(ERROR);
|
||||||
|
|||||||
+1
-1
@@ -208,7 +208,7 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(INAPPLICABLE_LATEINIT_MODIFIER, "''lateinit'' modifier {0}", STRING);
|
MAP.put(INAPPLICABLE_LATEINIT_MODIFIER, "''lateinit'' modifier {0}", STRING);
|
||||||
|
|
||||||
MAP.put(GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY, "Getter visibility must be the same as property visibility");
|
MAP.put(GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY, "Getter visibility must be the same as property visibility");
|
||||||
MAP.put(PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR, "Private setter is not allowed on non-private lateinit property");
|
MAP.put(SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY, "Setter visibility must be the same as lateinit property visibility");
|
||||||
MAP.put(ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY, "Private accessor visibilities are not allowed for abstract properties");
|
MAP.put(ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY, "Private accessor visibilities are not allowed for abstract properties");
|
||||||
MAP.put(BACKING_FIELD_IN_INTERFACE, "Property in an interface cannot have a backing field");
|
MAP.put(BACKING_FIELD_IN_INTERFACE, "Property in an interface cannot have a backing field");
|
||||||
MAP.put(MUST_BE_INITIALIZED, "Property must be initialized");
|
MAP.put(MUST_BE_INITIALIZED, "Property must be initialized");
|
||||||
|
|||||||
@@ -837,13 +837,14 @@ public class DeclarationsChecker {
|
|||||||
reportVisibilityModifierDiagnostics(tokens.values(), Errors.REDUNDANT_MODIFIER_IN_GETTER);
|
reportVisibilityModifierDiagnostics(tokens.values(), Errors.REDUNDANT_MODIFIER_IN_GETTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (accessorDescriptor.getVisibility() == Visibilities.PRIVATE
|
else {
|
||||||
&& propertyDescriptor.getVisibility() != Visibilities.PRIVATE) {
|
if (propertyDescriptor.getModality() == Modality.ABSTRACT
|
||||||
if (propertyDescriptor.getModality() == Modality.ABSTRACT) {
|
&& accessorDescriptor.getVisibility() == Visibilities.PRIVATE
|
||||||
|
&& propertyDescriptor.getVisibility() != Visibilities.PRIVATE) {
|
||||||
reportVisibilityModifierDiagnostics(tokens.values(), Errors.ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY);
|
reportVisibilityModifierDiagnostics(tokens.values(), Errors.ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY);
|
||||||
}
|
}
|
||||||
else if (propertyDescriptor.isLateInit()) {
|
else if (propertyDescriptor.isLateInit() && accessorDescriptor.getVisibility() != propertyDescriptor.getVisibility()) {
|
||||||
reportVisibilityModifierDiagnostics(tokens.values(), Errors.PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR);
|
reportVisibilityModifierDiagnostics(tokens.values(), Errors.SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ public abstract class A<T: Any, V: String?>(<!INAPPLICABLE_LATEINIT_MODIFIER!>la
|
|||||||
|
|
||||||
public lateinit var e: String
|
public lateinit var e: String
|
||||||
get
|
get
|
||||||
<!PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR!>private<!> set
|
<!SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY!>private<!> set
|
||||||
|
|
||||||
fun a() {
|
fun a() {
|
||||||
<!WRONG_MODIFIER_TARGET!>lateinit<!> var <!UNUSED_VARIABLE!>a<!>: String
|
<!WRONG_MODIFIER_TARGET!>lateinit<!> var <!UNUSED_VARIABLE!>a<!>: String
|
||||||
|
|||||||
+11
-5
@@ -1,16 +1,22 @@
|
|||||||
class My {
|
class My {
|
||||||
|
|
||||||
lateinit var x: String
|
lateinit var x: String
|
||||||
<!PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR!>private<!> set
|
<!SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY!>private<!> set
|
||||||
|
|
||||||
lateinit var y: String
|
lateinit var y: String
|
||||||
// Ok, non-private setter
|
<!SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY!>internal<!> set
|
||||||
internal set
|
|
||||||
|
|
||||||
lateinit protected var z: String
|
lateinit protected var z: String
|
||||||
<!PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR!>private<!> set
|
<!SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY!>private<!> set
|
||||||
|
|
||||||
lateinit private var w: String
|
lateinit private var w: String
|
||||||
// Ok, private var
|
// Ok, private var / private set
|
||||||
private set
|
private set
|
||||||
|
|
||||||
|
lateinit protected var v: String
|
||||||
|
<!SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY!>public<!> set
|
||||||
|
|
||||||
|
lateinit public var u: String
|
||||||
|
// Ok, public var / public set
|
||||||
|
public set
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,8 @@ package
|
|||||||
|
|
||||||
public final class My {
|
public final class My {
|
||||||
public constructor My()
|
public constructor My()
|
||||||
|
public final lateinit var u: kotlin.String
|
||||||
|
protected final lateinit var v: kotlin.String
|
||||||
private final lateinit var w: kotlin.String
|
private final lateinit var w: kotlin.String
|
||||||
public final lateinit var x: kotlin.String
|
public final lateinit var x: kotlin.String
|
||||||
public final lateinit var y: kotlin.String
|
public final lateinit var y: kotlin.String
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public class QuickFixRegistrar : QuickFixContributor {
|
|||||||
|
|
||||||
val removeModifierFactory = RemoveModifierFix.createRemoveModifierFactory()
|
val removeModifierFactory = RemoveModifierFix.createRemoveModifierFactory()
|
||||||
GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY.registerFactory(removeModifierFactory)
|
GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY.registerFactory(removeModifierFactory)
|
||||||
PRIVATE_SETTER_ON_NON_PRIVATE_LATE_INIT_VAR.registerFactory(removeModifierFactory)
|
SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY.registerFactory(removeModifierFactory)
|
||||||
ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY.registerFactory(removeModifierFactory)
|
ACCESSOR_VISIBILITY_FOR_ABSTRACT_PROPERTY.registerFactory(removeModifierFactory)
|
||||||
REDUNDANT_MODIFIER_IN_GETTER.registerFactory(removeRedundantModifierFactory)
|
REDUNDANT_MODIFIER_IN_GETTER.registerFactory(removeRedundantModifierFactory)
|
||||||
WRONG_MODIFIER_TARGET.registerFactory(removeModifierFactory)
|
WRONG_MODIFIER_TARGET.registerFactory(removeModifierFactory)
|
||||||
|
|||||||
Reference in New Issue
Block a user