Preserve JavaPropertyDescriptor type in substitution/copy
JavaPropertyDescriptor.substitute should return JavaPropertyDescriptor, similarly to what's happening in JavaMethodDescriptor
This commit is contained in:
+36
-2
@@ -32,7 +32,8 @@ import java.util.List;
|
||||
|
||||
public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements JavaCallableMemberDescriptor {
|
||||
private final boolean isStaticFinal;
|
||||
public JavaPropertyDescriptor(
|
||||
|
||||
protected JavaPropertyDescriptor(
|
||||
@NotNull DeclarationDescriptor containingDeclaration,
|
||||
@NotNull Annotations annotations,
|
||||
@NotNull Modality modality,
|
||||
@@ -41,14 +42,46 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
@NotNull Name name,
|
||||
@NotNull SourceElement source,
|
||||
@Nullable PropertyDescriptor original,
|
||||
@NotNull Kind kind,
|
||||
boolean isStaticFinal
|
||||
) {
|
||||
super(containingDeclaration, original, annotations, modality, visibility, isVar, name, Kind.DECLARATION, source,
|
||||
super(containingDeclaration, original, annotations, modality, visibility, isVar, name, kind, source,
|
||||
/* lateInit = */ false, /* isConst = */ false);
|
||||
|
||||
this.isStaticFinal = isStaticFinal;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JavaPropertyDescriptor create(
|
||||
@NotNull DeclarationDescriptor containingDeclaration,
|
||||
@NotNull Annotations annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean isVar,
|
||||
@NotNull Name name,
|
||||
@NotNull SourceElement source,
|
||||
boolean isStaticFinal
|
||||
) {
|
||||
return new JavaPropertyDescriptor(
|
||||
containingDeclaration, annotations, modality, visibility, isVar, name, source, null, Kind.DECLARATION, isStaticFinal
|
||||
);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected PropertyDescriptorImpl createSubstitutedCopy(
|
||||
@NotNull DeclarationDescriptor newOwner,
|
||||
@NotNull Modality newModality,
|
||||
@NotNull Visibility newVisibility,
|
||||
@Nullable PropertyDescriptor original,
|
||||
@NotNull Kind kind
|
||||
) {
|
||||
return new JavaPropertyDescriptor(
|
||||
newOwner, getAnnotations(), newModality, newVisibility, isVar(), getName(), SourceElement.NO_SOURCE, original,
|
||||
kind, isStaticFinal
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSynthesizedParameterNames() {
|
||||
return false;
|
||||
@@ -70,6 +103,7 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
getName(),
|
||||
getSource(),
|
||||
getOriginal(),
|
||||
getKind(),
|
||||
isStaticFinal
|
||||
);
|
||||
|
||||
|
||||
+4
-5
@@ -385,9 +385,9 @@ class LazyJavaClassMemberScope(
|
||||
): JavaPropertyDescriptor {
|
||||
val annotations = c.resolveAnnotations(method)
|
||||
|
||||
val propertyDescriptor = JavaPropertyDescriptor(
|
||||
ownerDescriptor, annotations, modality, method.getVisibility(),
|
||||
/* isVar = */ false, method.name, c.components.sourceElementFactory.source(method), /* original */ null,
|
||||
val propertyDescriptor = JavaPropertyDescriptor.create(
|
||||
ownerDescriptor, annotations, modality, method.visibility,
|
||||
/* isVar = */ false, method.name, c.components.sourceElementFactory.source(method),
|
||||
/* isStaticFinal = */ false
|
||||
)
|
||||
|
||||
@@ -419,10 +419,9 @@ class LazyJavaClassMemberScope(
|
||||
"for getter is ${getterMethod.modality}, but for setter is ${setterMethod?.modality}"
|
||||
}
|
||||
|
||||
val propertyDescriptor = JavaPropertyDescriptor(
|
||||
val propertyDescriptor = JavaPropertyDescriptor.create(
|
||||
ownerDescriptor, Annotations.EMPTY, getterMethod.modality, getterMethod.visibility,
|
||||
/* isVar = */ setterMethod != null, overriddenProperty.name, getterMethod.source,
|
||||
/* original */ null,
|
||||
/* isStaticFinal = */ false
|
||||
)
|
||||
|
||||
|
||||
+4
-4
@@ -265,12 +265,12 @@ abstract class LazyJavaScope(protected val c: LazyJavaResolverContext) : MemberS
|
||||
|
||||
private fun createPropertyDescriptor(field: JavaField): PropertyDescriptorImpl {
|
||||
val isVar = !field.isFinal
|
||||
val visibility = field.visibility
|
||||
val annotations = c.resolveAnnotations(field)
|
||||
val propertyName = field.name
|
||||
|
||||
return JavaPropertyDescriptor(ownerDescriptor, annotations, Modality.FINAL, visibility, isVar, propertyName,
|
||||
c.components.sourceElementFactory.source(field), /* original = */ null, /*isConst= */ field.isFinalStatic)
|
||||
return JavaPropertyDescriptor.create(
|
||||
ownerDescriptor, annotations, Modality.FINAL, field.visibility, isVar, field.name,
|
||||
c.components.sourceElementFactory.source(field), /* isConst = */ field.isFinalStatic
|
||||
)
|
||||
}
|
||||
|
||||
private val JavaField.isFinalStatic: Boolean
|
||||
|
||||
Reference in New Issue
Block a user