Show all Kotlin annotations when browsing hierarchy of "java.lang.Annotation"

This commit is contained in:
Pavel V. Talanov
2016-07-20 17:49:49 +03:00
parent 84dae76bd9
commit 8a9de2a00f
4 changed files with 21 additions and 3 deletions
@@ -25,22 +25,20 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo;
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil;
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken;
import org.jetbrains.kotlin.lexer.KtTokens; import org.jetbrains.kotlin.lexer.KtTokens;
import org.jetbrains.kotlin.load.java.JvmAbi; import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils; import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.KtClassOrObject; import org.jetbrains.kotlin.psi.KtClassOrObject;
import org.jetbrains.kotlin.psi.KtDeclarationModifierList;
import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.psi.KtScript;
import org.jetbrains.kotlin.psi.stubs.*; import org.jetbrains.kotlin.psi.stubs.*;
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes; import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes;
import org.jetbrains.kotlin.psi.stubs.elements.StubIndexService; import org.jetbrains.kotlin.psi.stubs.elements.StubIndexService;
import org.jetbrains.kotlin.util.TypeIndexUtilKt; import org.jetbrains.kotlin.util.TypeIndexUtilKt;
import java.io.IOException; import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -134,6 +132,9 @@ public class IdeStubIndexService extends StubIndexService {
if (modifierListStub.hasModifier(KtTokens.ENUM_KEYWORD)) { if (modifierListStub.hasModifier(KtTokens.ENUM_KEYWORD)) {
sink.occurrence(KotlinSuperClassIndex.getInstance().getKey(), Enum.class.getSimpleName()); sink.occurrence(KotlinSuperClassIndex.getInstance().getKey(), Enum.class.getSimpleName());
} }
if (modifierListStub.hasModifier(KtTokens.ANNOTATION_KEYWORD)) {
sink.occurrence(KotlinSuperClassIndex.getInstance().getKey(), Annotation.class.getSimpleName());
}
} }
@Nullable @Nullable
@@ -0,0 +1,4 @@
<node text="Annotation (java.lang.annotation)" base="true">
<node text="MyAnno (a)"/>
<node text="MyAnno2 (a)"/>
</node>
+7
View File
@@ -0,0 +1,7 @@
// BASE_CLASS: java.lang.annotation.Annotation
package a;
annotation class MyAnno
annotation class MyAnno2
@@ -35,6 +35,12 @@ public class HierarchyWithLibTestGenerated extends AbstractHierarchyWithLibTest
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/withLib"), Pattern.compile("^([^\\.]+)$"), false); KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/withLib"), Pattern.compile("^([^\\.]+)$"), false);
} }
@TestMetadata("annotation")
public void testAnnotation() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/withLib/annotation/");
doTest(fileName);
}
@TestMetadata("enum") @TestMetadata("enum")
public void testEnum() throws Exception { public void testEnum() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/withLib/enum/"); String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/withLib/enum/");