Visibilities of property accessors were not resolved for properties overriding others. They had "internal" visibility after analysis passed.
This commit is contained in:
@@ -536,10 +536,16 @@ public class OverrideResolver {
|
||||
|
||||
if (memberDescriptor instanceof PropertyDescriptor) {
|
||||
((PropertyDescriptor)memberDescriptor).setVisibility(visibility);
|
||||
for (PropertyAccessorDescriptor accessor : ((PropertyDescriptor) memberDescriptor).getAccessors()) {
|
||||
resolveUnknownVisibilityForMember(null, accessor);
|
||||
}
|
||||
}
|
||||
else if (memberDescriptor instanceof FunctionDescriptorImpl) {
|
||||
((FunctionDescriptorImpl)memberDescriptor).setVisibility(visibility);
|
||||
}
|
||||
else {
|
||||
assert memberDescriptor instanceof FunctionDescriptorImpl;
|
||||
((FunctionDescriptorImpl)memberDescriptor).setVisibility(visibility);
|
||||
assert memberDescriptor instanceof PropertyAccessorDescriptor;
|
||||
((PropertyAccessorDescriptor) memberDescriptor).setVisibility(visibility);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
trait A {
|
||||
val v : Int
|
||||
public var int : Int
|
||||
private set
|
||||
|
||||
protected fun f() : Int
|
||||
}
|
||||
|
||||
class B : A {
|
||||
override var int: Int = 0
|
||||
get set
|
||||
override fun f(): Int {
|
||||
}
|
||||
override val v: Int = 0
|
||||
get
|
||||
}
|
||||
|
||||
//internal trait A defined in root package
|
||||
//internal abstract val v : jet.Int defined in A
|
||||
//public abstract var int : jet.Int defined in A
|
||||
//private abstract fun <set-int>(<set-?> : jet.Int) : Unit defined in A
|
||||
//protected abstract fun f() : jet.Int defined in A
|
||||
//internal final class B : A defined in root package
|
||||
//public open var int : jet.Int defined in B
|
||||
//public open fun <get-int>() : jet.Int defined in B
|
||||
//private open fun <set-int>(<set-?> : jet.Int) : Unit defined in B
|
||||
//protected open fun f() : jet.Int defined in B
|
||||
//internal open val v : jet.Int defined in B
|
||||
//internal open fun <get-v>() : jet.Int defined in B
|
||||
@@ -23,6 +23,8 @@ import org.jetbrains.jet.JetTestCaseBuilder;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetElement;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetVisitorVoid;
|
||||
@@ -77,6 +79,10 @@ public class DescriptorRendererTest extends JetLiteFixture {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testInheritedMembersVisibility() throws IOException {
|
||||
doTest();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTestDataPath() {
|
||||
return JetTestCaseBuilder.getTestDataPathBase() + "/renderer";
|
||||
|
||||
Reference in New Issue
Block a user