natpryce
02/21/2019, 8:46 AMgildor
02/21/2019, 8:51 AMnatpryce
02/21/2019, 8:52 AMis
operator doesn’t work with reified types in an object expression within the inline function.
These tests fail on native:
@Test
fun is_from_object() {
inline fun <reified T> isA() = object {
operator fun invoke(value: Any) = value is T
}
assertTrue(isA<String>()("a string"), "a string is a string")
assertFalse(isA<String>()(10), "an int is not a string")
assertTrue(isA<Int>()(10), "an int is an int")
assertFalse(isA<Int>()("a string"), "a string is not an int")
}
@Test
fun not_is_from_object() {
inline fun <reified T> isNotA() = object {
operator fun invoke(value: Any) = value !is T
}
assertFalse(isNotA<String>()("a string"), "a string is a string")
assertTrue(isNotA<String>()(10), "an int is not a string")
assertFalse(isNotA<Int>()(10), "an int is an int")
assertTrue(isNotA<Int>()("a string"), "a string is not an int")
}
svyatoslav.scherbina
02/21/2019, 2:15 PMnatpryce
02/21/2019, 2:56 PMsvyatoslav.scherbina
02/21/2019, 4:22 PMinline
functions with reified parameters and object expressions declared in other compilation unit.natpryce
02/21/2019, 5:00 PM