diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.kt new file mode 100644 index 00000000000..7381bc7a902 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.kt @@ -0,0 +1,37 @@ +// !LANGUAGE: +MultiPlatformProjects +// !DIAGNOSTICS: -UNUSED_PARAMETER +// MODULE: m1-common +// FILE: common.kt + +expect open class Container { + fun publicFun() + + internal fun internalFun1() + internal fun internalFun2() + internal fun internalFun3() + + protected fun protectedFun1() + protected fun protectedFun2() + protected fun protectedFun3() + + open internal fun openInternalFun() +} + +// MODULE: m2-jvm(m1-common) + +// FILE: jvm.kt + +actual open class Container { + actual fun publicFun() {} // OK: public -> public + + actual fun internalFun1() {} // OK: internal -> public + actual internal fun internalFun2() {} // OK: internal -> internal + + actual fun protectedFun1() {} // OK: protected -> public + actual protected fun protectedFun2() {} // OK: protected -> protected + + actual internal fun protectedFun3() {} // BAD: protected -> internal + actual protected fun internalFun3() {} // BAD: internal -> protected + + actual open fun openInternalFun() {} // BAD: internal+open -> public +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.txt new file mode 100644 index 00000000000..4bdb6ba879b --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.txt @@ -0,0 +1,35 @@ +// -- Module: -- +package + +public open expect class Container { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + internal final expect fun internalFun1(): kotlin.Unit + internal final expect fun internalFun2(): kotlin.Unit + internal final expect fun internalFun3(): kotlin.Unit + internal open expect fun openInternalFun(): kotlin.Unit + protected final expect fun protectedFun1(): kotlin.Unit + protected final expect fun protectedFun2(): kotlin.Unit + protected final expect fun protectedFun3(): kotlin.Unit + public final expect fun publicFun(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + + +// -- Module: -- +package + +public open actual class Container { + public constructor Container() + 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 final actual fun internalFun1(): kotlin.Unit + internal final actual fun internalFun2(): kotlin.Unit + protected final actual fun internalFun3(): kotlin.Unit + public open actual fun openInternalFun(): kotlin.Unit + public final actual fun protectedFun1(): kotlin.Unit + protected final actual fun protectedFun2(): kotlin.Unit + internal final actual fun protectedFun3(): kotlin.Unit + public final actual fun publicFun(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.kt new file mode 100644 index 00000000000..cdbd2982deb --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.kt @@ -0,0 +1,22 @@ +// !LANGUAGE: +MultiPlatformProjects +// !DIAGNOSTICS: -UNUSED_PARAMETER +// MODULE: m1-common +// FILE: common.kt + +expect open class Container { + internal fun internalFun() +} + +// MODULE: m2-jvm(m1-common) + +// FILE: foo/Foo.java + +package foo; + +public class Foo { + public final void internalFun() {} // OK: internal -> public +} + +// FILE: jvm.kt + +actual typealias Container = foo.Foo \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.txt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.txt new file mode 100644 index 00000000000..37cb28d24fa --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.txt @@ -0,0 +1,26 @@ +// -- Module: -- +package + +public open expect class Container { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + internal final expect fun internalFun(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + + +// -- Module: -- +package + +public actual typealias Container = foo.Foo + +package foo { + + public open class Foo { + public constructor Foo() + 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 final fun internalFun(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 9884395956e..900dfee6c6d 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -13419,6 +13419,16 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/modalityCheckForExplicitAndImplicitOverride.kt"); } + @TestMetadata("morePermissiveVisibilityOnActual.kt") + public void testMorePermissiveVisibilityOnActual() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.kt"); + } + + @TestMetadata("morePermissiveVisibilityOnActualViaTypeAlias.kt") + public void testMorePermissiveVisibilityOnActualViaTypeAlias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.kt"); + } + @TestMetadata("nestedClasses.kt") public void testNestedClasses() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClasses.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 7a0491b2f29..b9fb125396e 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -13419,6 +13419,16 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/modalityCheckForExplicitAndImplicitOverride.kt"); } + @TestMetadata("morePermissiveVisibilityOnActual.kt") + public void testMorePermissiveVisibilityOnActual() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActual.kt"); + } + + @TestMetadata("morePermissiveVisibilityOnActualViaTypeAlias.kt") + public void testMorePermissiveVisibilityOnActualViaTypeAlias() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/morePermissiveVisibilityOnActualViaTypeAlias.kt"); + } + @TestMetadata("nestedClasses.kt") public void testNestedClasses() throws Exception { runTest("compiler/testData/diagnostics/tests/multiplatform/headerClass/nestedClasses.kt");