Fix accept() in light methods elements to avoid treating them as ClsElements

This commit is contained in:
Nikolay Krasko
2015-03-31 17:17:38 +03:00
parent 9d151d2ce8
commit 055be2850f
6 changed files with 39 additions and 0 deletions
@@ -74,6 +74,15 @@ open public class KotlinLightMethodForDeclaration(
override fun getParent(): PsiElement? = getContainingClass()
override fun accept(visitor: PsiElementVisitor) {
if (visitor is JavaElementVisitor) {
visitor.visitMethod(this)
}
else {
visitor.visitElement(this)
}
}
override fun setName(name: String): PsiElement? {
(origin as PsiNamedElement).setName(name)
return this
@@ -25,6 +25,15 @@ public class KotlinNoOriginLightMethod(manager: PsiManager, method: PsiMethod, c
LightMethod(manager, method, containingClass) {
override fun toString() = "KotlinNoOriginLightMethod:${getName()}" + if (isConstructor()) " ctor" else ""
override fun accept(visitor: PsiElementVisitor) {
if (visitor is JavaElementVisitor) {
visitor.visitMethod(this)
}
else {
visitor.visitElement(this)
}
}
}
public class KotlinNoOriginLightField(manager: PsiManager, field: PsiField, containingClass: PsiClass) :
@@ -0,0 +1,9 @@
package test;
import static test.kotlin.KotlinEnum.ENTRY;
public class EnumStaticImportInJava {
void other() {
ENTRY.foo();
}
}
@@ -0,0 +1,7 @@
package test.kotlin
public enum class KotlinEnum {
ENTRY
public fun foo(): String = "foo"
}
@@ -0,0 +1 @@
// TOOL: DataFlowInspection
@@ -124,4 +124,8 @@ public class KotlinAndJavaCheckerTest extends KotlinDaemonAnalyzerTestCase {
public void testEnumEntriesInSwitch() throws Exception {
doTest(true, true, "EnumEntriesInSwitch.java", "EnumEntriesInSwitch.kt");
}
public void testEnumStaticImportInJava() throws Exception {
doTest(true, true, "EnumStaticImportInJava.java", "EnumStaticImportInJava.kt");
}
}