Update "defaultness" for property accessor with inherited visibility
Property accessor that overrides a non-default property accessor with visibility different from the property visibility was incorrectly considered "default". Corresponding metadata was written incorrectly, and 'internal' setter call caused NSME #KT-23044 Fixed Target versions 1.2.40
This commit is contained in:
+5
-1
@@ -29,7 +29,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescriptorNonRootImpl implements PropertyAccessorDescriptor {
|
||||
private final boolean isDefault;
|
||||
private boolean isDefault;
|
||||
private final boolean isExternal;
|
||||
private final Modality modality;
|
||||
private final PropertyDescriptor correspondingProperty;
|
||||
@@ -66,6 +66,10 @@ public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescript
|
||||
return isDefault;
|
||||
}
|
||||
|
||||
public void setDefault(boolean aDefault) {
|
||||
isDefault = aDefault;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Kind getKind() {
|
||||
|
||||
@@ -840,7 +840,11 @@ public class OverridingUtil {
|
||||
}
|
||||
else {
|
||||
assert memberDescriptor instanceof PropertyAccessorDescriptorImpl;
|
||||
((PropertyAccessorDescriptorImpl) memberDescriptor).setVisibility(visibilityToInherit);
|
||||
PropertyAccessorDescriptorImpl propertyAccessorDescriptor = (PropertyAccessorDescriptorImpl) memberDescriptor;
|
||||
propertyAccessorDescriptor.setVisibility(visibilityToInherit);
|
||||
if (visibilityToInherit != propertyAccessorDescriptor.getCorrespondingProperty().getVisibility()) {
|
||||
propertyAccessorDescriptor.setDefault(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user