Different behavior of KClass between Kotlin-jvm and Kotlin-js

I wrote some kotlin code to show a difference of behavior between the execution on jvm and in js.
I don’t know which is the correct result between the two. I hope it is the JVM one :slight_smile:

This equality: booleanKClass == genericKclass
is true for JVM
is false for JS

I’m going to paste the code followed by the output generated by the console (one for jvm and one for js)
If you call test1() from a multiplatform project you will see this as I did.
I’m using kotlin_version = ‘1.2.41’

fun test1() { val values = PropertyDelegate() val result = Result(values) println("This will call the delegate getter.") println("result.success is not really important but: ${result.success}") println("This will call the delegate setter...") result.success = true println("end") } class Result(del: PropertyDelegate) { var success: Boolean by del } class PropertyDelegate() { inline operator fun <reified T> getValue(thisRef: Any?, property: KProperty<*>): T { val booleanKClass = Boolean::class val genericKclass = T::class println("getValue (booleanKClass == genericKclass) is ${booleanKClass == genericKclass}") return true as T } inline operator fun <reified T> setValue(thisRef: Any?, property: KProperty<*>, value: T) { val booleanKClass = Boolean::class val genericKclass = T::class println("setValue (booleanKClass == genericKclass) is ${booleanKClass == genericKclass}") } } 

JVM output:

This will call the delegate getter. getValue (booleanKClass == genericKclass) is true result.success is true This will call the delegate setter... setValue (booleanKClass == genericKclass) is true end 

JS output:

This will call the delegate getter. getValue (booleanKClass == genericKclass) is false result.success is not really important but: true This will call the delegate setter... setValue (booleanKClass == genericKclass) is false end