KTIJ-664 [SealedClassInheritorsProvider]: IDE-specific implementation
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+FreedomForSealedClasses
|
||||
|
||||
package sealed
|
||||
|
||||
sealed class SealedDeclarationClass {
|
||||
class AClass: SealedDeclarationClass()
|
||||
}
|
||||
|
||||
sealed interface SealedDeclarationInterface {
|
||||
class A: SealedDeclarationInterface
|
||||
}
|
||||
|
||||
class B: SealedDeclarationInterface
|
||||
class BClass: SealedDeclarationClass()
|
||||
@@ -0,0 +1,35 @@
|
||||
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+FreedomForSealedClasses
|
||||
package sealed
|
||||
|
||||
class C: SealedDeclarationInterface {}
|
||||
class CClass: SealedDeclarationClass() {}
|
||||
|
||||
class D: SealedDeclarationInterface {
|
||||
class E: SealedDeclarationInterface {
|
||||
class F: SealedDeclarationInterface
|
||||
}
|
||||
}
|
||||
|
||||
class DClass: SealedDeclarationClass() {
|
||||
class EClass: SealedDeclarationClass() {
|
||||
class FClass: SealedDeclarationClass()
|
||||
}
|
||||
}
|
||||
|
||||
fun checkWhenNone(value: SealedDeclarationInterface): Int = <error descr="[NO_ELSE_IN_WHEN] 'when' expression must be exhaustive, add necessary 'is A', 'is B', 'is C', 'is D', 'is E', 'is F' branches or 'else' branch instead">when</error> (<warning descr="[UNUSED_EXPRESSION] The expression is unused">value</warning>) {
|
||||
}
|
||||
|
||||
fun checkWhenNone(value: SealedDeclarationClass): Int = <error descr="[NO_ELSE_IN_WHEN] 'when' expression must be exhaustive, add necessary 'is AClass', 'is BClass', 'is CClass', 'is DClass', 'is EClass', 'is FClass' branches or 'else' branch instead">when</error> (<warning descr="[UNUSED_EXPRESSION] The expression is unused">value</warning>) {
|
||||
}
|
||||
|
||||
fun checkWhenOneMissing(value: SealedDeclarationInterface): Int = <error descr="[NO_ELSE_IN_WHEN] 'when' expression must be exhaustive, add necessary 'is D', 'is E', 'is F' branches or 'else' branch instead">when</error> (value) {
|
||||
is SealedDeclarationInterface.A -> 1
|
||||
is B -> 2
|
||||
is C -> 3
|
||||
}
|
||||
|
||||
fun checkWhenOneMissing(value: SealedDeclarationClass): Int = <error descr="[NO_ELSE_IN_WHEN] 'when' expression must be exhaustive, add necessary 'is DClass', 'is EClass', 'is FClass' branches or 'else' branch instead">when</error> (value) {
|
||||
is SealedDeclarationClass.AClass -> 1
|
||||
is BClass -> 2
|
||||
is CClass -> 3
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// COMPILER_ARGUMENTS: -XXLanguage:+SealedInterfaces -XXLanguage:+FreedomForSealedClasses
|
||||
package sealed.otherpackage
|
||||
import sealed.SealedDeclarationInterface
|
||||
import sealed.SealedDeclarationClass
|
||||
|
||||
class D: <error descr="[SEALED_INHERITOR_IN_DIFFERENT_PACKAGE] Inheritor of sealed class or interface declared in package sealed but it must be in package {2} where base class is declared">SealedDeclarationInterface</error>
|
||||
class DClass: <error descr="[SEALED_INHERITOR_IN_DIFFERENT_PACKAGE] Inheritor of sealed class or interface declared in package sealed but it must be in package {2} where base class is declared">SealedDeclarationClass</error>()
|
||||
Reference in New Issue
Block a user