IR: Make sure that symbols refer to original descriptors only
If a descriptor is a WrappedDeclarationDescriptor, it SHOULD NOT be substituted.
This commit is contained in:
+8
-3
@@ -102,6 +102,7 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
@NotNull KotlinType enhancedReturnType,
|
||||
@Nullable Pair<UserDataKey<?>, ?> additionalUserData
|
||||
) {
|
||||
PropertyDescriptor enhancedOriginal = getOriginal() == this ? null : getOriginal();
|
||||
JavaPropertyDescriptor enhanced = new JavaPropertyDescriptor(
|
||||
getContainingDeclaration(),
|
||||
getAnnotations(),
|
||||
@@ -110,7 +111,7 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
isVar(),
|
||||
getName(),
|
||||
getSource(),
|
||||
getOriginal() == this ? null : getOriginal(),
|
||||
enhancedOriginal,
|
||||
getKind(),
|
||||
isStaticFinal,
|
||||
additionalUserData);
|
||||
@@ -120,7 +121,9 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
if (getter != null) {
|
||||
newGetter = new PropertyGetterDescriptorImpl(
|
||||
enhanced, getter.getAnnotations(), getter.getModality(), getter.getVisibility(),
|
||||
getter.isDefault(), getter.isExternal(), getter.isInline(), getKind(), getter, getter.getSource()
|
||||
getter.isDefault(), getter.isExternal(), getter.isInline(), getKind(),
|
||||
enhancedOriginal == null ? null : enhancedOriginal.getGetter(),
|
||||
getter.getSource()
|
||||
);
|
||||
newGetter.setInitialSignatureDescriptor(getter.getInitialSignatureDescriptor());
|
||||
newGetter.initialize(enhancedReturnType);
|
||||
@@ -131,7 +134,9 @@ public class JavaPropertyDescriptor extends PropertyDescriptorImpl implements Ja
|
||||
if (setter != null) {
|
||||
newSetter = new PropertySetterDescriptorImpl(
|
||||
enhanced, setter.getAnnotations(), setter.getModality(), setter.getVisibility(),
|
||||
setter.isDefault(), setter.isExternal(), setter.isInline(), getKind(), setter, setter.getSource()
|
||||
setter.isDefault(), setter.isExternal(), setter.isInline(), getKind(),
|
||||
enhancedOriginal == null ? null : enhancedOriginal.getSetter(),
|
||||
setter.getSource()
|
||||
);
|
||||
newSetter.setInitialSignatureDescriptor(newSetter.getInitialSignatureDescriptor());
|
||||
newSetter.initialize(setter.getValueParameters().get(0));
|
||||
|
||||
+14
-2
@@ -334,6 +334,16 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
public PropertyDescriptor build() {
|
||||
return doSubstitute(this);
|
||||
}
|
||||
|
||||
PropertyGetterDescriptor getOriginalGetter() {
|
||||
if (original == null) return null;
|
||||
return original.getGetter();
|
||||
}
|
||||
|
||||
PropertySetterDescriptor getOriginalSetter() {
|
||||
if (original == null) return null;
|
||||
return original.getSetter();
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -389,7 +399,8 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
|
||||
PropertyGetterDescriptorImpl newGetter = getter == null ? null : new PropertyGetterDescriptorImpl(
|
||||
substitutedDescriptor, getter.getAnnotations(), copyConfiguration.modality, normalizeVisibility(getter.getVisibility(), copyConfiguration.kind),
|
||||
getter.isDefault(), getter.isExternal(), getter.isInline(), copyConfiguration.kind, copyConfiguration.original == null ? null : copyConfiguration.original.getGetter(),
|
||||
getter.isDefault(), getter.isExternal(), getter.isInline(), copyConfiguration.kind,
|
||||
copyConfiguration.getOriginalGetter(),
|
||||
SourceElement.NO_SOURCE
|
||||
);
|
||||
if (newGetter != null) {
|
||||
@@ -399,7 +410,8 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
||||
}
|
||||
PropertySetterDescriptorImpl newSetter = setter == null ? null : new PropertySetterDescriptorImpl(
|
||||
substitutedDescriptor, setter.getAnnotations(), copyConfiguration.modality, normalizeVisibility(setter.getVisibility(), copyConfiguration.kind),
|
||||
setter.isDefault(), setter.isExternal(), setter.isInline(), copyConfiguration.kind, copyConfiguration.original == null ? null : copyConfiguration.original.getSetter(),
|
||||
setter.isDefault(), setter.isExternal(), setter.isInline(), copyConfiguration.kind,
|
||||
copyConfiguration.getOriginalSetter(),
|
||||
SourceElement.NO_SOURCE
|
||||
);
|
||||
if (newSetter != null) {
|
||||
|
||||
Reference in New Issue
Block a user