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