Changed 'getOverriddenDescriptors' method for accessors (get accessors of overridden properties)
This commit is contained in:
+14
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.jet.lang.descriptors;
|
package org.jetbrains.jet.lang.descriptors;
|
||||||
|
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
@@ -7,6 +8,7 @@ import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
|||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author abreslav
|
* @author abreslav
|
||||||
@@ -95,4 +97,16 @@ public abstract class PropertyAccessorDescriptor extends DeclarationDescriptorIm
|
|||||||
public PropertyAccessorDescriptor copy(DeclarationDescriptor newOwner, boolean makeNonAbstract) {
|
public PropertyAccessorDescriptor copy(DeclarationDescriptor newOwner, boolean makeNonAbstract) {
|
||||||
throw new UnsupportedOperationException("Accessors must be copied by the corresponding property");
|
throw new UnsupportedOperationException("Accessors must be copied by the corresponding property");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Set<PropertyAccessorDescriptor> getOverriddenDescriptors(boolean isGetter) {
|
||||||
|
Set<? extends PropertyDescriptor> overriddenProperties = getCorrespondingProperty().getOverriddenDescriptors();
|
||||||
|
Set<PropertyAccessorDescriptor> overriddenAccessors = Sets.newHashSet();
|
||||||
|
for (PropertyDescriptor overriddenProperty : overriddenProperties) {
|
||||||
|
PropertyAccessorDescriptor accessorDescriptor = isGetter ? overriddenProperty.getGetter() : overriddenProperty.getSetter();
|
||||||
|
if (accessorDescriptor != null) {
|
||||||
|
overriddenAccessors.add(accessorDescriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return overriddenAccessors;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
|||||||
private final ReceiverDescriptor receiver;
|
private final ReceiverDescriptor receiver;
|
||||||
private final ReceiverDescriptor expectedThisObject;
|
private final ReceiverDescriptor expectedThisObject;
|
||||||
private final Set<PropertyDescriptor> overriddenProperties = Sets.newLinkedHashSet();
|
private final Set<PropertyDescriptor> overriddenProperties = Sets.newLinkedHashSet();
|
||||||
|
private final Set<PropertyDescriptor> overridingProperties = Sets.newLinkedHashSet();
|
||||||
private final List<TypeParameterDescriptor> typeParemeters = Lists.newArrayListWithCapacity(0);
|
private final List<TypeParameterDescriptor> typeParemeters = Lists.newArrayListWithCapacity(0);
|
||||||
private final PropertyDescriptor original;
|
private final PropertyDescriptor original;
|
||||||
private PropertyGetterDescriptor getter;
|
private PropertyGetterDescriptor getter;
|
||||||
@@ -190,7 +191,6 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
|||||||
@Override
|
@Override
|
||||||
public Set<? extends PropertyDescriptor> getOverriddenDescriptors() {
|
public Set<? extends PropertyDescriptor> getOverriddenDescriptors() {
|
||||||
return overriddenProperties;
|
return overriddenProperties;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -212,7 +212,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
|||||||
DescriptorUtils.convertModality(setter.getModality(), makeNonAbstract), setter.getVisibility(),
|
DescriptorUtils.convertModality(setter.getModality(), makeNonAbstract), setter.getVisibility(),
|
||||||
propertyDescriptor,
|
propertyDescriptor,
|
||||||
Lists.newArrayList(setter.getAnnotations()),
|
Lists.newArrayList(setter.getAnnotations()),
|
||||||
setter.hasBody(), setter.isDefault());;
|
setter.hasBody(), setter.isDefault());
|
||||||
propertyDescriptor.initialize(DescriptorUtils.copyTypeParameters(propertyDescriptor, getTypeParameters()), newGetter, newSetter);
|
propertyDescriptor.initialize(DescriptorUtils.copyTypeParameters(propertyDescriptor, getTypeParameters()), newGetter, newSetter);
|
||||||
return propertyDescriptor;
|
return propertyDescriptor;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-7
@@ -15,7 +15,6 @@ import java.util.Set;
|
|||||||
* @author abreslav
|
* @author abreslav
|
||||||
*/
|
*/
|
||||||
public class PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
public class PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
||||||
private final Set<PropertyGetterDescriptor> overriddenGetters = Sets.newHashSet();
|
|
||||||
private JetType returnType;
|
private JetType returnType;
|
||||||
|
|
||||||
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty, @NotNull List<AnnotationDescriptor> annotations, @NotNull Modality modality, @NotNull Visibility visibility, @Nullable JetType returnType, boolean hasBody, boolean isDefault) {
|
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty, @NotNull List<AnnotationDescriptor> annotations, @NotNull Modality modality, @NotNull Visibility visibility, @Nullable JetType returnType, boolean hasBody, boolean isDefault) {
|
||||||
@@ -25,12 +24,8 @@ public class PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Set<? extends FunctionDescriptor> getOverriddenDescriptors() {
|
public Set<? extends PropertyAccessorDescriptor> getOverriddenDescriptors() {
|
||||||
return overriddenGetters;
|
return super.getOverriddenDescriptors(true);
|
||||||
}
|
|
||||||
|
|
||||||
public void addOverriddenFunction(@NotNull PropertyGetterDescriptor overriddenGetter) {
|
|
||||||
overriddenGetters.add(overriddenGetter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+2
-7
@@ -16,7 +16,6 @@ import java.util.Set;
|
|||||||
public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
||||||
|
|
||||||
private MutableValueParameterDescriptor parameter;
|
private MutableValueParameterDescriptor parameter;
|
||||||
private final Set<PropertySetterDescriptor> overriddenSetters = Sets.newHashSet();
|
|
||||||
|
|
||||||
public PropertySetterDescriptor(@NotNull Modality modality, @NotNull Visibility visibility, @NotNull PropertyDescriptor correspondingProperty, @NotNull List<AnnotationDescriptor> annotations, boolean hasBody, boolean isDefault) {
|
public PropertySetterDescriptor(@NotNull Modality modality, @NotNull Visibility visibility, @NotNull PropertyDescriptor correspondingProperty, @NotNull List<AnnotationDescriptor> annotations, boolean hasBody, boolean isDefault) {
|
||||||
super(modality, visibility, correspondingProperty, annotations, "set-" + correspondingProperty.getName(), hasBody, isDefault);
|
super(modality, visibility, correspondingProperty, annotations, "set-" + correspondingProperty.getName(), hasBody, isDefault);
|
||||||
@@ -33,12 +32,8 @@ public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Set<? extends FunctionDescriptor> getOverriddenDescriptors() {
|
public Set<? extends PropertyAccessorDescriptor> getOverriddenDescriptors() {
|
||||||
return overriddenSetters;
|
return super.getOverriddenDescriptors(false);
|
||||||
}
|
|
||||||
|
|
||||||
public void setOverriddenFunction(@NotNull PropertySetterDescriptor overriddenSetter) {
|
|
||||||
overriddenSetters.add(overriddenSetter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user