[FE] Prohibit protected members in final expected or actual classes

^KT-28850 Fixed
This commit is contained in:
Roman Efremov
2023-04-05 15:07:08 +02:00
committed by Space Team
parent 2f5b1dff16
commit b368b78faa
8 changed files with 107 additions and 4 deletions
@@ -0,0 +1,48 @@
// LANGUAGE: +MultiPlatformProjects
// !DIAGNOSTICS: -NO_ACTUAL_FOR_EXPECT, -ACTUAL_WITHOUT_EXPECT
// FIR_IDENTICAL
class SimpleClass {
protected fun foo() = Unit
}
expect class ExpClass {
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun foo()
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val bar: Int
}
actual class ActClass {
actual <!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun foo() = Unit
actual <!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val bar: Int = 42
}
expect open class ExpOpenClass {
protected fun foo()
}
actual open class ActOpenClass {
actual protected fun foo() = Unit
}
enum class SimpleEnum {
ENTRY;
protected fun foo() = Unit
}
expect enum class ExpEnumClass {
ENTRY;
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun foo()
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val bar: Int
}
actual enum class ActEnumClass {
ENTRY;
actual <!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> fun foo() = Unit
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>protected<!> val bar: Int = 42
}