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) {
|
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()) {
|
if (descriptor.isVar()) {
|
||||||
bodyBuilder.append("var ");
|
bodyBuilder.append("var ");
|
||||||
}
|
}
|
||||||
@@ -142,9 +143,9 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static JetElement overrideFunction(Project project, JetFile file, SimpleFunctionDescriptor descriptor) {
|
private static JetElement overrideFunction(Project project, JetFile file, SimpleFunctionDescriptor descriptor) {
|
||||||
StringBuilder bodyBuilder = new StringBuilder("override fun ");
|
StringBuilder bodyBuilder = new StringBuilder();
|
||||||
bodyBuilder.append(descriptor.getName());
|
bodyBuilder.append(displayableVisibility(descriptor));
|
||||||
bodyBuilder.append("(");
|
bodyBuilder.append("override fun ").append(descriptor.getName()).append("(");
|
||||||
boolean isAbstractFun = descriptor.getModality() == Modality.ABSTRACT;
|
boolean isAbstractFun = descriptor.getModality() == Modality.ABSTRACT;
|
||||||
StringBuilder delegationBuilder = new StringBuilder();
|
StringBuilder delegationBuilder = new StringBuilder();
|
||||||
if (isAbstractFun) {
|
if (isAbstractFun) {
|
||||||
@@ -207,6 +208,11 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String displayableVisibility(MemberDescriptor descriptor) {
|
||||||
|
Visibility visibility = descriptor.getVisibility();
|
||||||
|
return visibility != Visibilities.INTERNAL ? visibility.toString() + " ": "";
|
||||||
|
}
|
||||||
|
|
||||||
private MemberChooser<DescriptorClassMember> showOverrideImplementChooser(Project project,
|
private MemberChooser<DescriptorClassMember> showOverrideImplementChooser(Project project,
|
||||||
DescriptorClassMember[] members) {
|
DescriptorClassMember[] members) {
|
||||||
final MemberChooser<DescriptorClassMember> chooser = new MemberChooser<DescriptorClassMember>(members, true, true, project);
|
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 {
|
class Impl(): Intf {
|
||||||
|
|
||||||
override fun getFooBar() : String? {
|
public override fun getFooBar() : String? {
|
||||||
throw UnsupportedOperationException()
|
throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import foo.Intf
|
|||||||
|
|
||||||
class Impl(): 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()
|
throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import foo.A
|
|||||||
|
|
||||||
class C : 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)
|
return super<A>.getAnswer(array, number, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ class SomeTest : Test {
|
|||||||
fun some() {
|
fun some() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ trait Test {
|
|||||||
|
|
||||||
class SomeTest : Test {
|
class SomeTest : Test {
|
||||||
val hello = 12
|
val hello = 12
|
||||||
override fun test() {
|
public override fun test() {
|
||||||
throw UnsupportedOperationException()
|
throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
override val testProp : Int = 0
|
protected override val testProp : Int = 0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test
|
* test
|
||||||
@@ -16,4 +16,4 @@ class SomeTest : Test {
|
|||||||
fun some() {
|
fun some() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,10 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
|||||||
doOverrideDirectoryTest();
|
doOverrideDirectoryTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testInheritVisibilities() {
|
||||||
|
doMultiOverrideFileTest();
|
||||||
|
}
|
||||||
|
|
||||||
private void doImplementFileTest() {
|
private void doImplementFileTest() {
|
||||||
doFileTest(new ImplementMethodsHandler());
|
doFileTest(new ImplementMethodsHandler());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user