Report more specific error on primitive type property (KT-9358)
This commit is contained in:
@@ -352,6 +352,7 @@ public interface Errors {
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_LATEINIT_MODIFIER_ABSTRACT_PROPERTY = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_LATEINIT_MODIFIER_PRIMARY_CONSTRUCTOR_PARAMETER = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_LATEINIT_MODIFIER_NULLABLE = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_LATEINIT_MODIFIER_PRIMITIVE = DiagnosticFactory0.create(ERROR);
|
||||
|
||||
DiagnosticFactory2<JetModifierListOwner, String, ClassDescriptor> ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS = DiagnosticFactory2.create(ERROR, ABSTRACT_MODIFIER);
|
||||
|
||||
|
||||
+1
@@ -218,6 +218,7 @@ public class DefaultErrorMessages {
|
||||
MAP.put(INAPPLICABLE_LATEINIT_MODIFIER_ABSTRACT_PROPERTY, "''lateinit'' modifier is not allowed on abstract properties");
|
||||
MAP.put(INAPPLICABLE_LATEINIT_MODIFIER_PRIMARY_CONSTRUCTOR_PARAMETER, "''lateinit'' modifier is not allowed on primary constructor parameters");
|
||||
MAP.put(INAPPLICABLE_LATEINIT_MODIFIER_NULLABLE, "''lateinit'' modifier is not allowed on nullable properties");
|
||||
MAP.put(INAPPLICABLE_LATEINIT_MODIFIER_PRIMITIVE, "''lateinit'' modifier is not allowed on primitive type properties");
|
||||
|
||||
MAP.put(GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY, "Getter visibility must be the same as property visibility");
|
||||
MAP.put(BACKING_FIELD_IN_TRAIT, "Property in an interface cannot have a backing field");
|
||||
|
||||
@@ -432,6 +432,11 @@ public class DeclarationsChecker {
|
||||
return;
|
||||
}
|
||||
|
||||
if (returnTypeIsPrimitive) {
|
||||
trace.report(INAPPLICABLE_LATEINIT_MODIFIER_PRIMITIVE.on(modifier));
|
||||
return;
|
||||
}
|
||||
|
||||
if (propertyDescriptor.getModality() == Modality.ABSTRACT) {
|
||||
trace.report(INAPPLICABLE_LATEINIT_MODIFIER_ABSTRACT_PROPERTY.on(modifier));
|
||||
return;
|
||||
@@ -463,7 +468,7 @@ public class DeclarationsChecker {
|
||||
}
|
||||
|
||||
if (!hasBackingField || hasDelegateOrInitializer || customGetterOrSetter
|
||||
|| returnTypeIsPrimitive || propertyDescriptor.getExtensionReceiverParameter() != null) {
|
||||
|| propertyDescriptor.getExtensionReceiverParameter() != null) {
|
||||
trace.report(INAPPLICABLE_LATEINIT_MODIFIER.on(modifier));
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -21,10 +21,10 @@ public abstract class A<T: Any, V: String?>(<!INAPPLICABLE_LATEINIT_MODIFIER_PRI
|
||||
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER_NULLABLE!>lateinit<!> var e1: V
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER_NULLABLE!>lateinit<!> var e2: String?
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var e3: Int
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER_PRIMITIVE!>lateinit<!> var e3: Int
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER_NULLABLE!>lateinit<!> var e4: Int?
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var e5 = "A"
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER!>lateinit<!> var e6 = 3
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER_PRIMITIVE!>lateinit<!> var e6 = 3
|
||||
|
||||
<!INAPPLICABLE_LATEINIT_MODIFIER_IMMUTABLE!>lateinit<!> val e7 by CustomDelegate()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user