diff --git a/js/js.translator/testData/box/reflection/findAssociatedObject.kt b/js/js.translator/testData/box/reflection/findAssociatedObject.kt index 59e41d275ab..2d0b37b7f5e 100644 --- a/js/js.translator/testData/box/reflection/findAssociatedObject.kt +++ b/js/js.translator/testData/box/reflection/findAssociatedObject.kt @@ -93,5 +93,9 @@ fun box(): String { if ((A::class.getAssociatedObjectByAssociated2() as I2).foo() != 20) return "fail 10" + if (Int::class.findAssociatedObject() != null) return "fail 11" + + if (10::class.findAssociatedObject() != null) return "fail 12" + return "OK" } \ No newline at end of file diff --git a/libraries/stdlib/js-ir/src/kotlin/reflection_js-ir.kt b/libraries/stdlib/js-ir/src/kotlin/reflection_js-ir.kt index 834ae920c6b..cd15da6a0ed 100644 --- a/libraries/stdlib/js-ir/src/kotlin/reflection_js-ir.kt +++ b/libraries/stdlib/js-ir/src/kotlin/reflection_js-ir.kt @@ -9,8 +9,8 @@ import kotlin.reflect.js.internal.* @PublishedApi internal fun KClass<*>.findAssociatedObject(annotationClass: KClass): Any? { return if (this is KClassImpl<*> && annotationClass is KClassImpl) { - val key = annotationClass.jClass.asDynamic().`$metadata$`.associatedObjectKey?.unsafeCast() ?: return null - val map = this.jClass.asDynamic().`$metadata$`.associatedObjects ?: return null + val key = annotationClass.jClass.asDynamic().`$metadata$`?.associatedObjectKey?.unsafeCast() ?: return null + val map = this.jClass.asDynamic().`$metadata$`?.associatedObjects ?: return null val factory = map[key] ?: return null return factory() } else {