[FE] Allow declaring protected constructors in sealed classes
#KT-44865 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
f3a8fcaea6
commit
7c61ddc72b
+41
@@ -0,0 +1,41 @@
|
||||
// LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
|
||||
// DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
sealed class Case1(val x: Int) {
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(s: String) : this(s.length)<!>
|
||||
|
||||
class Inheritor1 : Case1(10)
|
||||
class Inheritor2 : Case1("Hello")
|
||||
}
|
||||
|
||||
sealed class Case2 <!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(val x: Int)<!> { // should be REDUNDANT_MODIFIER
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(s: String) : this(s.length)<!>
|
||||
|
||||
class Inheritor1 : Case2(10)
|
||||
class Inheritor2 : Case2("Hello")
|
||||
}
|
||||
|
||||
sealed class Case3 private constructor(val x: Int) {
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(s: String) : this(s.length)<!>
|
||||
|
||||
class Inheritor1 : Case3(10) // should OK
|
||||
class Inheritor2 : Case3("Hello")
|
||||
}
|
||||
|
||||
class Case3Inheritor3 : <!INAPPLICABLE_CANDIDATE!>Case3<!>(20) // should be an error in 1.6 (?)
|
||||
|
||||
sealed class Case4 {
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(x: Int)<!>
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(s: String) : this(s.length)<!>
|
||||
|
||||
class Inheritor1 : Case4(10)
|
||||
class Inheritor2 : Case4("Hello")
|
||||
}
|
||||
|
||||
sealed class Case5() {
|
||||
private constructor(x: Int) : this()
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>protected constructor(x: Byte) : this()<!>
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>internal constructor(x: Short) : this()<!>
|
||||
<!NON_PRIVATE_CONSTRUCTOR_IN_SEALED!>public constructor(x: Long) : this()<!>
|
||||
constructor(x: Double) : this()
|
||||
}
|
||||
Reference in New Issue
Block a user