diff --git a/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.kt b/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.kt new file mode 100644 index 00000000000..63dd2b4894d --- /dev/null +++ b/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.kt @@ -0,0 +1,64 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +// FILE: A.java + +public class A { + static class NC {} + class IC {} + static interface NI {} +} + +// FILE: I.java + +public interface I { + class NC {} + interface NI {} +} + +// FILE: B.java + +public class B extends A { + +} + +// FILE: C.java + +public class C implements I { + +} + +// FILE: D.java + +public class D extends A implements I { + +} + +// FILE: K.kt + +class K : D() + +// FILE: test.kt + +fun test() { + val ac: A.NC = A.NC() + val aic: A.IC = A().IC() + val ai: A.NI? = null + + val ic: I.NC = I.NC() + val ii: I.NI? = null + + val bc: B.NC = B.NC() + val bic: B.IC = B().IC() + val bi: B.NI? = null + + val cc: C.NC = C.NC() + val ci: C.NI? = null + + val dc: D.NC = D.NC() + val dic: D.IC = D().IC() + val di: D.NI? = null + + val kc: K.NC = K.NC() + val kic: K.IC = K().IC() + val ki: K.NI? = null +} diff --git a/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.txt b/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.txt new file mode 100644 index 00000000000..64709747cfc --- /dev/null +++ b/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.txt @@ -0,0 +1,77 @@ +package + +public fun test(): kotlin.Unit + +public open class A { + public constructor A() + 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 + + public/*package*/ open inner class IC { + public/*package*/ constructor IC() + 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 + } + + public/*package*/ open class NC { + public/*package*/ constructor NC() + 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 + } + + public/*package*/ interface NI { + 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 + } +} + +public open class B : A { + public constructor B() + 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 +} + +public open class C : I { + public constructor C() + 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 +} + +public open class D : A, I { + public constructor D() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String +} + +public interface I { + 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 + + public open class NC { + public constructor NC() + 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 + } + + public interface NI { + 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 + } +} + +public final class K : D { + public constructor K() + 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 +} diff --git a/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.kt b/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.kt new file mode 100644 index 00000000000..a1990de8005 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.kt @@ -0,0 +1,44 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +open class A { + class NC {} + inner class IC {} + interface NI {} +} + +interface I { + class NC {} + interface NI {} +} + +class B : A() { + +} + +class C : I { + +} + +class D : A(), I { + +} + +fun test() { + val ac: A.NC = A.NC() + val aic: A.IC = A().IC() + val ai: A.NI? = null + + val ic: I.NC = I.NC() + val ii: I.NI? = null + + val bc: B.NC = B.NC() + val bic: B.IC = B().IC() + val bi: B.NI? = null + + val cc: C.NC = C.NC() + val ci: C.NI? = null + + val dc: D.NC = D.NC() + val dic: D.IC = D().IC() + val di: D.NI? = null +} diff --git a/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.txt b/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.txt new file mode 100644 index 00000000000..32ca9aeb86f --- /dev/null +++ b/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.txt @@ -0,0 +1,70 @@ +package + +public fun test(): kotlin.Unit + +public open class A { + public constructor A() + 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 + + public final inner class IC { + public constructor IC() + 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 + } + + public final class NC { + public constructor NC() + 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 + } + + public interface NI { + 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 + } +} + +public final class B : A { + public constructor B() + 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 +} + +public final class C : I { + public constructor C() + 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 +} + +public final class D : A, I { + public constructor D() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String +} + +public interface I { + 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 + + public final class NC { + public constructor NC() + 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 + } + + public interface NI { + 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 + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java index 91743239fbb..70d1dac1368 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -8603,6 +8603,18 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class Inner extends AbstractJetDiagnosticsTest { + @TestMetadata("accessingToJavaNestedClass.kt") + public void testAccessingToJavaNestedClass() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.kt"); + doTest(fileName); + } + + @TestMetadata("accessingToKotlinNestedClass.kt") + public void testAccessingToKotlinNestedClass() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.kt"); + doTest(fileName); + } + public void testAllFilesPresentInInner() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/inner"), Pattern.compile("^(.+)\\.kt$"), true); }