Skip to content

Commit 5c567c5

Browse files
committed
adding contracts to AnyCol.isX functions
1 parent cc8ae15 commit 5c567c5

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/DataColumnType.kt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,39 @@
1+
@file:OptIn(ExperimentalContracts::class)
2+
13
package org.jetbrains.kotlinx.dataframe.api
24

35
import org.jetbrains.kotlinx.dataframe.AnyCol
6+
import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup
47
import org.jetbrains.kotlinx.dataframe.columns.ColumnKind
8+
import org.jetbrains.kotlinx.dataframe.columns.FrameColumn
9+
import org.jetbrains.kotlinx.dataframe.columns.ValueColumn
510
import org.jetbrains.kotlinx.dataframe.impl.isNothing
611
import org.jetbrains.kotlinx.dataframe.impl.projectTo
712
import org.jetbrains.kotlinx.dataframe.type
813
import org.jetbrains.kotlinx.dataframe.typeClass
14+
import kotlin.contracts.ExperimentalContracts
15+
import kotlin.contracts.contract
916
import kotlin.reflect.KClass
1017
import kotlin.reflect.KType
1118
import kotlin.reflect.KTypeProjection
1219
import kotlin.reflect.full.isSubclassOf
1320
import kotlin.reflect.full.isSubtypeOf
1421
import kotlin.reflect.typeOf
1522

16-
public fun AnyCol.isColumnGroup(): Boolean = kind() == ColumnKind.Group
23+
public fun AnyCol.isColumnGroup(): Boolean {
24+
contract { returns(true) implies (this@isColumnGroup is ColumnGroup<*>) }
25+
return kind() == ColumnKind.Group
26+
}
1727

18-
public fun AnyCol.isFrameColumn(): Boolean = kind() == ColumnKind.Frame
28+
public fun AnyCol.isFrameColumn(): Boolean {
29+
contract { returns(true) implies (this@isFrameColumn is FrameColumn<*>) }
30+
return kind() == ColumnKind.Frame
31+
}
1932

20-
public fun AnyCol.isValueColumn(): Boolean = kind() == ColumnKind.Value
33+
public fun AnyCol.isValueColumn(): Boolean {
34+
contract { returns(true) implies (this@isValueColumn is ValueColumn<*>) }
35+
return kind() == ColumnKind.Value
36+
}
2137

2238
public fun AnyCol.isSubtypeOf(type: KType): Boolean =
2339
this.type.isSubtypeOf(type) && (!this.type.isMarkedNullable || type.isMarkedNullable)

0 commit comments

Comments
 (0)