diff --git a/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtUElementAsPsiInspectionTest.kt b/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtUElementAsPsiInspectionTest.kt index 48d10be02bb3..2be65e14f19b 100644 --- a/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtUElementAsPsiInspectionTest.kt +++ b/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtUElementAsPsiInspectionTest.kt @@ -85,6 +85,24 @@ class KtUElementAsPsiInspectionTest : LightCodeInsightFixtureTestCase() { } + fun testCast() { + myFixture.configureByText("UastUsage.kt", """ + import org.jetbrains.uast.*; + import com.intellij.psi.PsiClass; + + class UastUsage { + + constructor(uElement: UElement){ + (uElement as? PsiClass).toString(); + (uElement as? UClass).toString(); + } + + } + """.trimIndent()) + myFixture.testHighlighting("UastUsage.kt") + + } + fun testCallParentMethod() { myFixture.configureByText("UastUsage.kt", """ import org.jetbrains.uast.UClass; diff --git a/plugins/devkit/src/inspections/UElementAsPsiInspection.kt b/plugins/devkit/src/inspections/UElementAsPsiInspection.kt index 2f82a7e0ccdc..203f93135ea1 100644 --- a/plugins/devkit/src/inspections/UElementAsPsiInspection.kt +++ b/plugins/devkit/src/inspections/UElementAsPsiInspection.kt @@ -100,6 +100,13 @@ class UElementAsPsiInspection : DevKitUastInspectionBase() { return false; } + override fun visitBinaryExpressionWithType(node: UBinaryExpressionWithType): Boolean { + if (isUElementType(node.operand.getExpressionType()) && isPsiElementType(node.typeReference?.type)) { + node.operand.sourcePsiElement?.let { reportedElements.add(it) } + } + return false + } + override fun visitVariable(node: UVariable): Boolean { if (isUElementType(node.uastInitializer?.getExpressionType()) && isPsiElementType(node.type)) { node.uastInitializer.sourcePsiElement?.let { reportedElements.add(it) } diff --git a/plugins/devkit/testSources/inspections/UElementAsPsiInspectionTest.kt b/plugins/devkit/testSources/inspections/UElementAsPsiInspectionTest.kt index bed52020d728..64f91942f651 100644 --- a/plugins/devkit/testSources/inspections/UElementAsPsiInspectionTest.kt +++ b/plugins/devkit/testSources/inspections/UElementAsPsiInspectionTest.kt @@ -67,6 +67,30 @@ class UElementAsPsiInspectionTest : PluginModuleTestCase() { } + fun testCast() { + //language=JAVA + myFixture.addClass(""" + import org.jetbrains.uast.UClass; + import com.intellij.psi.PsiClass; + import org.jetbrains.uast.UElement; + + class UastUsage { + + public UastUsage(UElement uElement){ + if(uElement instanceof PsiClass){ + PsiClass psiClass = (PsiClass)uElement; + } + if(uElement instanceof UClass){ + UClass uClass = (UClass)uElement; + } + } + + } + """.trimIndent()) + myFixture.testHighlighting("UastUsage.java") + + } + fun testCallParentMethod() { //language=JAVA myFixture.addClass("""