don't generate synthetic value* methods for cls anonymous enums

GitOrigin-RevId: ecac99579cb1fa4bfd1e9620c7b0866b2a220703
This commit is contained in:
Peter Gromov
2020-01-22 19:52:55 +01:00
committed by intellij-monorepo-bot
parent f0aab2d6aa
commit 75dce5e822
3 changed files with 28 additions and 5 deletions

View File

@@ -17,6 +17,7 @@ import com.intellij.psi.impl.compiled.ClsParameterImpl;
import com.intellij.psi.impl.java.stubs.PsiMethodStub;
import com.intellij.psi.impl.source.tree.java.ClassElement;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.searches.DirectClassInheritorsSearch;
import com.intellij.psi.util.PsiUtil;
import com.intellij.testFramework.LeakHunter;
import com.intellij.testFramework.LightIdeaTestCase;
@@ -25,6 +26,8 @@ import com.intellij.util.ref.GCWatcher;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.concurrent.TimeUnit;
public class ClsPsiTest extends LightIdeaTestCase {
private static final String TEST_DATA_PATH = "/psi/cls/repo";
@@ -299,6 +302,20 @@ public class ClsPsiTest extends LightIdeaTestCase {
assertEquals(type, field.getType());
}
public void testSyntheticEnumMethodsWhereApplicable() {
PsiClass aClass = getJavaFacade().findClass(TimeUnit.class.getName());
assertTrue(aClass.isEnum());
assertSize(1, aClass.findMethodsByName("valueOf", false));
assertSize(1, aClass.findMethodsByName("values", false));
Collection<PsiClass> constants = DirectClassInheritorsSearch.search(aClass).findAll();
assertSize(7, constants);
for (PsiClass constant : constants) {
assertSize(0, constant.findMethodsByName("valueOf", false));
assertSize(0, constant.findMethodsByName("values", false));
}
}
public void testAnnotations() {
PsiClass aClass = getFile("Annotated").getClasses()[0];