getOriginal() works correctly for PropertyGetter(Setter)Descriptor (previously was returning itself).
This commit is contained in:
+1
-3
@@ -72,9 +72,7 @@ public abstract class PropertyAccessorDescriptor extends DeclarationDescriptorNo
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PropertyAccessorDescriptor getOriginal() {
|
||||
return (PropertyAccessorDescriptor) super.getOriginal();
|
||||
}
|
||||
public abstract PropertyAccessorDescriptor getOriginal();
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
|
||||
@@ -247,14 +247,14 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
PropertyGetterDescriptor newGetter = getter == null ? null : new PropertyGetterDescriptor(
|
||||
substitutedDescriptor, Lists.newArrayList(getter.getAnnotations()),
|
||||
DescriptorUtils.convertModality(getter.getModality(), false), getter.getVisibility(),
|
||||
getter.hasBody(), getter.isDefault(), kind);
|
||||
getter.hasBody(), getter.isDefault(), kind, getter);
|
||||
if (newGetter != null) {
|
||||
JetType returnType = getter.getReturnType();
|
||||
newGetter.initialize(returnType != null ? substitutor.substitute(returnType, Variance.OUT_VARIANCE) : null);
|
||||
}
|
||||
PropertySetterDescriptor newSetter = setter == null ? null : new PropertySetterDescriptor(
|
||||
substitutedDescriptor, Lists.newArrayList(setter.getAnnotations()), DescriptorUtils.convertModality(setter.getModality(), false), setter.getVisibility(),
|
||||
setter.hasBody(), setter.isDefault(), kind);
|
||||
setter.hasBody(), setter.isDefault(), kind, setter);
|
||||
if (newSetter != null) {
|
||||
List<ValueParameterDescriptor> substitutedValueParameters = FunctionDescriptorUtil.getSubstitutedValueParameters(newSetter, setter, substitutor);
|
||||
if (substitutedValueParameters == null) {
|
||||
|
||||
+29
-2
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
@@ -31,10 +32,30 @@ import java.util.Set;
|
||||
public class PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
||||
private JetType returnType;
|
||||
|
||||
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty, @NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality, @NotNull Visibility visibility, boolean hasBody, boolean isDefault, Kind kind)
|
||||
@NotNull
|
||||
private final PropertyGetterDescriptor original;
|
||||
|
||||
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
Kind kind) {
|
||||
this(correspondingProperty, annotations, modality, visibility, hasBody, isDefault, kind, null);
|
||||
}
|
||||
|
||||
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
Kind kind,
|
||||
@Nullable PropertyGetterDescriptor original)
|
||||
{
|
||||
super(modality, visibility, correspondingProperty, annotations, Name.special("<get-" + correspondingProperty.getName() + ">"), hasBody, isDefault, kind);
|
||||
this.original = original != null ? original : this;
|
||||
}
|
||||
|
||||
public void initialize(JetType returnType) {
|
||||
@@ -62,4 +83,10 @@ public class PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
||||
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitPropertyGetterDescriptor(this, data);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PropertyGetterDescriptor getOriginal() {
|
||||
return this.original;
|
||||
}
|
||||
}
|
||||
|
||||
+23
-1
@@ -17,10 +17,11 @@
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -32,6 +33,8 @@ import java.util.Set;
|
||||
public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
||||
|
||||
private ValueParameterDescriptor parameter;
|
||||
@NotNull
|
||||
private final PropertySetterDescriptor original;
|
||||
|
||||
public PropertySetterDescriptor(
|
||||
@NotNull PropertyDescriptor correspondingProperty,
|
||||
@@ -41,7 +44,20 @@ public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
Kind kind) {
|
||||
this(correspondingProperty, annotations, modality, visibility, hasBody, isDefault, kind, null);
|
||||
}
|
||||
|
||||
public PropertySetterDescriptor(
|
||||
@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
Kind kind,
|
||||
@Nullable PropertySetterDescriptor original) {
|
||||
super(modality, visibility, correspondingProperty, annotations, Name.special("<set-" + correspondingProperty.getName() + ">"), hasBody, isDefault, kind);
|
||||
this.original = original != null ? original : this;
|
||||
}
|
||||
|
||||
public void initialize(@NotNull ValueParameterDescriptor parameter) {
|
||||
@@ -79,4 +95,10 @@ public class PropertySetterDescriptor extends PropertyAccessorDescriptor {
|
||||
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitPropertySetterDescriptor(this, data);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PropertySetterDescriptor getOriginal() {
|
||||
return this.original;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user