Merge pull request #37 from Frostman/override-inherit-visibility
Override/Implement actions are now inherits visibility. #KT-1724 fixed
This commit is contained in:
@@ -121,7 +121,8 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
||||
}
|
||||
|
||||
private static JetElement overrideProperty(Project project, JetFile file, PropertyDescriptor descriptor) {
|
||||
StringBuilder bodyBuilder = new StringBuilder("override ");
|
||||
StringBuilder bodyBuilder = new StringBuilder();
|
||||
bodyBuilder.append(displayableVisibility(descriptor)).append("override ");
|
||||
if (descriptor.isVar()) {
|
||||
bodyBuilder.append("var ");
|
||||
}
|
||||
@@ -142,9 +143,9 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
||||
}
|
||||
|
||||
private static JetElement overrideFunction(Project project, JetFile file, SimpleFunctionDescriptor descriptor) {
|
||||
StringBuilder bodyBuilder = new StringBuilder("override fun ");
|
||||
bodyBuilder.append(descriptor.getName());
|
||||
bodyBuilder.append("(");
|
||||
StringBuilder bodyBuilder = new StringBuilder();
|
||||
bodyBuilder.append(displayableVisibility(descriptor));
|
||||
bodyBuilder.append("override fun ").append(descriptor.getName()).append("(");
|
||||
boolean isAbstractFun = descriptor.getModality() == Modality.ABSTRACT;
|
||||
StringBuilder delegationBuilder = new StringBuilder();
|
||||
if (isAbstractFun) {
|
||||
@@ -207,6 +208,11 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String displayableVisibility(MemberDescriptor descriptor) {
|
||||
Visibility visibility = descriptor.getVisibility();
|
||||
return visibility != Visibilities.INTERNAL ? visibility.toString() + " ": "";
|
||||
}
|
||||
|
||||
private MemberChooser<DescriptorClassMember> showOverrideImplementChooser(Project project,
|
||||
DescriptorClassMember[] members) {
|
||||
final MemberChooser<DescriptorClassMember> chooser = new MemberChooser<DescriptorClassMember>(members, true, true, project);
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
open class A() {
|
||||
protected open fun protectedFun() { }
|
||||
internal open fun internalFun() {}
|
||||
public open fun publicFun() {}
|
||||
}
|
||||
|
||||
trait B {
|
||||
protected open val protectedProperty : Int
|
||||
internal open val internalProperty : Int
|
||||
public open val publicProperty : Int
|
||||
}
|
||||
|
||||
class C : A(), B {
|
||||
<caret>
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
open class A() {
|
||||
protected open fun protectedFun() { }
|
||||
internal open fun internalFun() {}
|
||||
public open fun publicFun() {}
|
||||
}
|
||||
|
||||
trait B {
|
||||
protected open val protectedProperty : Int
|
||||
internal open val internalProperty : Int
|
||||
public open val publicProperty : Int
|
||||
}
|
||||
|
||||
class C : A(), B {
|
||||
|
||||
override fun internalFun() {
|
||||
super<A>.internalFun()
|
||||
}
|
||||
override val internalProperty : Int = 0
|
||||
protected override fun protectedFun() {
|
||||
super<A>.protectedFun()
|
||||
}
|
||||
protected override val protectedProperty : Int = 0
|
||||
public override fun publicFun() {
|
||||
super<A>.publicFun()
|
||||
}
|
||||
public override val publicProperty : Int = 0
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import foo.Intf
|
||||
|
||||
class Impl(): Intf {
|
||||
|
||||
override fun getFooBar() : String? {
|
||||
public override fun getFooBar() : String? {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import foo.Intf
|
||||
|
||||
class Impl(): Intf {
|
||||
|
||||
override fun fooBar(i : Int, s : Array<String?>?, foo : Any?) {
|
||||
public override fun fooBar(i : Int, s : Array<String?>?, foo : Any?) {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import foo.A
|
||||
|
||||
class C : A() {
|
||||
|
||||
override fun getAnswer(array : Array<String?>?, number : Int, value : Any?) : Int {
|
||||
public override fun getAnswer(array : Array<String?>?, number : Int, value : Any?) : Int {
|
||||
return super<A>.getAnswer(array, number, value)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,4 +12,4 @@ class SomeTest : Test {
|
||||
fun some() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ trait Test {
|
||||
|
||||
class SomeTest : Test {
|
||||
val hello = 12
|
||||
override fun test() {
|
||||
public override fun test() {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
override val testProp : Int = 0
|
||||
protected override val testProp : Int = 0
|
||||
|
||||
/**
|
||||
* test
|
||||
@@ -16,4 +16,4 @@ class SomeTest : Test {
|
||||
fun some() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,6 +122,10 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
||||
doOverrideDirectoryTest();
|
||||
}
|
||||
|
||||
public void testInheritVisibilities() {
|
||||
doMultiOverrideFileTest();
|
||||
}
|
||||
|
||||
private void doImplementFileTest() {
|
||||
doFileTest(new ImplementMethodsHandler());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user