Skip to content

Commit

Permalink
Method from java overridden in kotlin should have kotlin visibility
Browse files Browse the repository at this point in the history
  • Loading branch information
NataliaUkhorskaya committed Feb 6, 2013
1 parent 55d4599 commit 1749e32
Show file tree
Hide file tree
Showing 14 changed files with 85 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ protected Integer compareTo(@NotNull Visibility visibility) {
public String toString() {
return "public/*package*/";
}

@NotNull
@Override
public Visibility normalize() {
return Visibilities.INTERNAL;
}
};

public static final Visibility PROTECTED_STATIC_VISIBILITY = new Visibility("protected_static", false) {
Expand Down Expand Up @@ -89,6 +95,12 @@ protected boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @
public String toString() {
return "protected/*protected static*/";
}

@NotNull
@Override
public Visibility normalize() {
return Visibilities.PROTECTED;
}
};

public static final Visibility PROTECTED_AND_PACKAGE = new Visibility("protected_and_package", false) {
Expand Down Expand Up @@ -122,6 +134,12 @@ protected Integer compareTo(@NotNull Visibility visibility) {
public String toString() {
return "protected/*protected and package*/";
}

@NotNull
@Override
public Visibility normalize() {
return Visibilities.PROTECTED;
}
};

private JavaPropertyResolver propertiesResolver;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,10 @@ public String toString() {
return name;
}

@NotNull
public Visibility normalize() {
return this;
}

protected abstract boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from);
}
Original file line number Diff line number Diff line change
Expand Up @@ -881,17 +881,17 @@ public static void resolveUnknownVisibilityForMember(@Nullable JetDeclaration me
}

if (memberDescriptor instanceof PropertyDescriptorImpl) {
((PropertyDescriptorImpl)memberDescriptor).setVisibility(visibility);
((PropertyDescriptorImpl)memberDescriptor).setVisibility(visibility.normalize());
for (PropertyAccessorDescriptor accessor : ((PropertyDescriptor) memberDescriptor).getAccessors()) {
resolveUnknownVisibilityForMember(null, accessor, trace);
}
}
else if (memberDescriptor instanceof FunctionDescriptorImpl) {
((FunctionDescriptorImpl)memberDescriptor).setVisibility(visibility);
((FunctionDescriptorImpl)memberDescriptor).setVisibility(visibility.normalize());
}
else {
assert memberDescriptor instanceof PropertyAccessorDescriptorImpl;
((PropertyAccessorDescriptorImpl) memberDescriptor).setVisibility(visibility);
((PropertyAccessorDescriptorImpl) memberDescriptor).setVisibility(visibility.normalize());
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package test

public open class Base : java.lang.Object {
public constructor Base()
public/*package*/ open fun foo() : Unit
}

internal final class Derived : test.Base {
public constructor Derived()
internal open override /*1*/ fun foo() : Unit
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package test;

public class Base {
void foo() {}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package test

class Derived(): Base() {
override fun foo() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package test

public open class Base : java.lang.Object {
public constructor Base()
protected/*protected and package*/ open fun foo() : Unit
}

internal final class Derived : test.Base {
public constructor Derived()
protected open override /*1*/ fun foo() : Unit
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package test;

public class Base {
protected void foo() {}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package test

class Derived(): Base() {
override fun foo() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public File fun(String s) {
}

public void testPackageLocalVisibility() throws Exception {
String dir = PATH + "/packageLocalVisibility";
String dir = PATH + "/packageLocalVisibility/simple/";
String javaDir = dir + "/java";
doTest(dir + "/expected.txt",
javaDir + "/test/JFrame.java",
Expand Down Expand Up @@ -163,15 +163,23 @@ public void testSubclassWithRawType() throws Exception {

public static class SubclassingKotlinInJavaTest extends KotlinTestWithEnvironmentManagement {
public void testSubclassingKotlinInJava() throws Exception {
doTest();
doTest(PATH + "/" + getTestName(true));
}

public void testDeepSubclassingKotlinInJava() throws Exception {
doTest();
doTest(PATH + "/" + getTestName(true));
}

public void doTest() throws Exception {
File dir = new File(PATH + "/" + getTestName(true));
public void testPackageInheritance() throws Exception {
doTest(PATH + "/packageLocalVisibility/inheritance");
}

public void testProtectedPackageInheritance() throws Exception {
doTest(PATH + "/protectedPackageVisibility/inheritance");
}

public void doTest(String path) throws Exception {
File dir = new File(path);

CompilerConfiguration configuration = JetTestUtils.compilerConfigurationForTests(
ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, new File(dir, "java"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,17 +264,8 @@ else if (returnType.equals(builtIns.getBooleanType())) {
}

private static String displayableVisibility(MemberDescriptor descriptor) {
Visibility visibility = descriptor.getVisibility();
if (visibility == Visibilities.INTERNAL) {
return "";
}
if (visibility == JavaDescriptorResolver.PACKAGE_VISIBILITY) {
return "internal ";
}
if (visibility == JavaDescriptorResolver.PROTECTED_AND_PACKAGE) {
return "protected ";
}
return visibility.toString() + " ";
Visibility visibility = descriptor.getVisibility().normalize();
return visibility != Visibilities.INTERNAL ? visibility.toString() + " " : "";
}

@NotNull
Expand Down

0 comments on commit 1749e32

Please sign in to comment.