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("""