diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinMultiplatformJUnitRecognizer.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinMultiplatformJUnitRecognizer.kt index fd0b61faf23..a84f394cfb4 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinMultiplatformJUnitRecognizer.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinMultiplatformJUnitRecognizer.kt @@ -27,12 +27,14 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.facet.implementingDescriptors -import org.jetbrains.kotlin.idea.highlighter.markers.actualsFor import org.jetbrains.kotlin.idea.project.targetPlatform import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered class KotlinMultiplatformJUnitRecognizer : JUnitRecognizer() { override fun isTestAnnotated(method: PsiMethod): Boolean { @@ -54,10 +56,14 @@ class KotlinMultiplatformJUnitRecognizer : JUnitRecognizer() { private fun AnnotationWithTarget.isExpectOfAnnotation(fqName: String, implModules: Collection): Boolean { val annotationClass = annotation.type.constructor.declarationDescriptor as? ClassifierDescriptorWithTypeParameters ?: return false if (!annotationClass.isExpect) return false + val classId = annotationClass.classId ?: return false + val segments = classId.relativeClassName.pathSegments() return implModules .any { module -> - module.actualsFor(annotationClass, checkCompatible = false) + module + .getPackage(classId.packageFqName).memberScope + .getDescriptorsFiltered(DescriptorKindFilter.CLASSIFIERS) { it == segments.first() } .filterIsInstance() .any { it.classDescriptor?.fqNameSafe?.asString() == fqName } }