Update KClass.isData KDoc to include info about data objects
^KT-58985 Fixed Review: https://jetbrains.team/p/kt/reviews/10385 `isData` returns `true` for `data object`s even if kotlin-reflect version is old (1.2.0), so it looks like we got correct `KClass.isData` behaviour for "free". That's why this behaviour was never covered with tests. This commit updates the documentation and covers the behaviour described in the KDoc with tests.
This commit is contained in:
@@ -7,9 +7,10 @@ import kotlin.test.assertFalse
|
|||||||
|
|
||||||
sealed class S {
|
sealed class S {
|
||||||
data class DataClass(val x: Int) : S()
|
data class DataClass(val x: Int) : S()
|
||||||
|
data object DataObject
|
||||||
inner class InnerClass
|
inner class InnerClass
|
||||||
companion object
|
companion object
|
||||||
object NonCompanionObject
|
object RegularObject
|
||||||
fun interface FunInterface { fun invoke() }
|
fun interface FunInterface { fun invoke() }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,6 +35,13 @@ fun box(): String {
|
|||||||
assertFalse(S.DataClass::class.isFun)
|
assertFalse(S.DataClass::class.isFun)
|
||||||
assertFalse(S.DataClass::class.isValue)
|
assertFalse(S.DataClass::class.isValue)
|
||||||
|
|
||||||
|
assertFalse(S.DataObject::class.isSealed)
|
||||||
|
assertTrue(S.DataObject::class.isData)
|
||||||
|
assertFalse(S.DataObject::class.isInner)
|
||||||
|
assertFalse(S.DataObject::class.isCompanion)
|
||||||
|
assertFalse(S.DataObject::class.isFun)
|
||||||
|
assertFalse(S.DataObject::class.isValue)
|
||||||
|
|
||||||
assertFalse(S.InnerClass::class.isSealed)
|
assertFalse(S.InnerClass::class.isSealed)
|
||||||
assertFalse(S.InnerClass::class.isData)
|
assertFalse(S.InnerClass::class.isData)
|
||||||
assertTrue(S.InnerClass::class.isInner)
|
assertTrue(S.InnerClass::class.isInner)
|
||||||
@@ -48,12 +56,12 @@ fun box(): String {
|
|||||||
assertFalse(S.Companion::class.isFun)
|
assertFalse(S.Companion::class.isFun)
|
||||||
assertFalse(S.Companion::class.isValue)
|
assertFalse(S.Companion::class.isValue)
|
||||||
|
|
||||||
assertFalse(S.NonCompanionObject::class.isSealed)
|
assertFalse(S.RegularObject::class.isSealed)
|
||||||
assertFalse(S.NonCompanionObject::class.isData)
|
assertFalse(S.RegularObject::class.isData)
|
||||||
assertFalse(S.NonCompanionObject::class.isInner)
|
assertFalse(S.RegularObject::class.isInner)
|
||||||
assertFalse(S.NonCompanionObject::class.isCompanion)
|
assertFalse(S.RegularObject::class.isCompanion)
|
||||||
assertFalse(S.NonCompanionObject::class.isFun)
|
assertFalse(S.RegularObject::class.isFun)
|
||||||
assertFalse(S.NonCompanionObject::class.isValue)
|
assertFalse(S.RegularObject::class.isValue)
|
||||||
|
|
||||||
assertFalse(S.FunInterface::class.isSealed)
|
assertFalse(S.FunInterface::class.isSealed)
|
||||||
assertFalse(S.FunInterface::class.isData)
|
assertFalse(S.FunInterface::class.isData)
|
||||||
|
|||||||
@@ -104,9 +104,10 @@ public actual interface KClass<T : Any> : KDeclarationContainer, KAnnotatedEleme
|
|||||||
public val isSealed: Boolean
|
public val isSealed: Boolean
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* `true` if this class is a data class.
|
* `true` if this class or object has the `data` keyword.
|
||||||
* See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/data-classes.html)
|
* For more information, see [data class](https://kotlinlang.org/docs/reference/data-classes.html) and
|
||||||
* for more information.
|
* [data object](https://kotlinlang.org/docs/object-declarations.html#data-objects)
|
||||||
|
* in the Kotlin language documentation.
|
||||||
*/
|
*/
|
||||||
@SinceKotlin("1.1")
|
@SinceKotlin("1.1")
|
||||||
public val isData: Boolean
|
public val isData: Boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user