diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinWrappingLightClass.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinWrappingLightClass.java index 06b4f8391dd..fddb4ed27e6 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinWrappingLightClass.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinWrappingLightClass.java @@ -17,16 +17,14 @@ package org.jetbrains.jet.asJava; import com.intellij.lang.Language; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiField; -import com.intellij.psi.PsiManager; -import com.intellij.psi.PsiMethod; +import com.intellij.psi.*; import com.intellij.psi.impl.PsiClassImplUtil; import com.intellij.psi.impl.light.AbstractLightClass; import com.intellij.psi.impl.light.LightField; import com.intellij.psi.impl.light.LightMethod; import com.intellij.psi.impl.source.ClassInnerStuffCache; import com.intellij.psi.impl.source.PsiExtensibleClass; +import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -114,8 +112,8 @@ public abstract class KotlinWrappingLightClass extends AbstractLightClass implem public PsiField fun(PsiField field) { JetDeclaration declaration = ClsWrapperStubPsiFactory.getOriginalDeclaration(field); return declaration instanceof JetProperty - ? new KotlinLightField(myManager, (JetProperty) declaration, field, KotlinWrappingLightClass.this) - : new LightField(myManager, field, KotlinWrappingLightClass.this); + ? new KotlinLightField(myManager, (JetProperty) declaration, field, KotlinWrappingLightClass.this) + : new LightField(myManager, field, KotlinWrappingLightClass.this); } }); } @@ -134,6 +132,17 @@ public abstract class KotlinWrappingLightClass extends AbstractLightClass implem }); } + @Override + public boolean processDeclarations( + @NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, @NotNull PsiElement place + ) { + if (isEnum()) { + if (!PsiClassImplUtil.processDeclarationsInEnum(processor, state, myInnersCache)) return false; + } + + return super.processDeclarations(processor, state, lastParent, place); + } + @Override public String getText() { JetClassOrObject origin = getOrigin(); diff --git a/idea/testData/kotlinAndJavaChecker/EnumAutoGeneratedMethods.java b/idea/testData/kotlinAndJavaChecker/EnumAutoGeneratedMethods.java new file mode 100644 index 00000000000..34e88803b72 --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/EnumAutoGeneratedMethods.java @@ -0,0 +1,8 @@ +package test; + +class EnumAutoGeneratedMethods { + void foo() { + TestEnum.values(); + assert TestEnum.valueOf("first") == TestEnum.first; + } +} diff --git a/idea/testData/kotlinAndJavaChecker/EnumAutoGeneratedMethods.kt b/idea/testData/kotlinAndJavaChecker/EnumAutoGeneratedMethods.kt new file mode 100644 index 00000000000..6d1ed43eb21 --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/EnumAutoGeneratedMethods.kt @@ -0,0 +1,5 @@ +package test + +enum class TestEnum { + first second third +} diff --git a/idea/tests/org/jetbrains/jet/checkers/KotlinAndJavaCheckerTest.java b/idea/tests/org/jetbrains/jet/checkers/KotlinAndJavaCheckerTest.java index 909c6fd9fe0..90a2fb102cc 100644 --- a/idea/tests/org/jetbrains/jet/checkers/KotlinAndJavaCheckerTest.java +++ b/idea/tests/org/jetbrains/jet/checkers/KotlinAndJavaCheckerTest.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.checkers; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.nullable.NullableStuffInspection; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl; import com.siyeh.ig.bugs.StaticCallOnSubclassInspection; import com.siyeh.ig.bugs.StaticFieldReferenceOnSubclassInspection; import org.jetbrains.jet.JetTestCaseBuilder; @@ -73,4 +72,8 @@ public class KotlinAndJavaCheckerTest extends KotlinDaemonAnalyzerTestCase { public void testImplementedMethodsFromTraits() throws Exception { doTest(true, true, "ImplementedMethodsFromTraits.java", "ImplementedMethodsFromTraits.kt"); } + + public void testEnumAutoGeneratedMethods() throws Exception { + doTest(true, true, "EnumAutoGeneratedMethods.java", "EnumAutoGeneratedMethods.kt"); + } }