Fix private setter visibility for generic class

#KT-8888 fixed
This commit is contained in:
Alexey Tsvetkov
2015-10-26 17:26:32 +03:00
parent 7dbb0dff2c
commit 7c54024a22
4 changed files with 28 additions and 2 deletions
@@ -0,0 +1,9 @@
class A<T> {
public var x: Int = 0
private set
}
fun main(args: Array<String>) {
val a = A<Any>()
<!INVISIBLE_SETTER!>a.x<!> = 1
}
@@ -0,0 +1,11 @@
package
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
public final class A</*0*/ T> {
public constructor A</*0*/ T>()
public final var x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -13146,6 +13146,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("invisibleSetter.kt")
public void testInvisibleSetter() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/scopes/invisibleSetter.kt");
doTest(fileName);
}
@TestMetadata("kt1078.kt")
public void testKt1078() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/scopes/kt1078.kt");
@@ -256,7 +256,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
substitutedDescriptor.setType(outType, substitutedTypeParameters, substitutedDispatchReceiver, substitutedReceiverType);
PropertyGetterDescriptorImpl newGetter = getter == null ? null : new PropertyGetterDescriptorImpl(
substitutedDescriptor, getter.getAnnotations(), newModality, convertVisibility(getter.getVisibility(), newVisibility),
substitutedDescriptor, getter.getAnnotations(), newModality, getter.getVisibility(),
getter.hasBody(), getter.isDefault(), getter.isExternal(), kind, original == null ? null : original.getGetter(), SourceElement.NO_SOURCE
);
if (newGetter != null) {
@@ -264,7 +264,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
newGetter.initialize(returnType != null ? substitutor.substitute(returnType, Variance.OUT_VARIANCE) : null);
}
PropertySetterDescriptorImpl newSetter = setter == null ? null : new PropertySetterDescriptorImpl(
substitutedDescriptor, setter.getAnnotations(), newModality, convertVisibility(setter.getVisibility(), newVisibility),
substitutedDescriptor, setter.getAnnotations(), newModality, setter.getVisibility(),
setter.hasBody(), setter.isDefault(), setter.isExternal(), kind, original == null ? null : original.getSetter(), SourceElement.NO_SOURCE
);
if (newSetter != null) {