From 8a9de2a00f02802b389386ffe1ffb5beeecbef60 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 20 Jul 2016 17:49:49 +0300 Subject: [PATCH] Show all Kotlin annotations when browsing hierarchy of "java.lang.Annotation" --- .../kotlin/idea/stubindex/IdeStubIndexService.java | 7 ++++--- .../withLib/annotation/Annotation_verification.xml | 4 ++++ idea/testData/hierarchy/withLib/annotation/main.kt | 7 +++++++ .../idea/hierarchy/HierarchyWithLibTestGenerated.java | 6 ++++++ 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 idea/testData/hierarchy/withLib/annotation/Annotation_verification.xml create mode 100644 idea/testData/hierarchy/withLib/annotation/main.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/stubindex/IdeStubIndexService.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/stubindex/IdeStubIndexService.java index 79f7165db86..b7dc74f2499 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/stubindex/IdeStubIndexService.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/stubindex/IdeStubIndexService.java @@ -25,22 +25,20 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; -import org.jetbrains.kotlin.lexer.KtModifierKeywordToken; import org.jetbrains.kotlin.lexer.KtTokens; import org.jetbrains.kotlin.load.java.JvmAbi; import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.KtClassOrObject; -import org.jetbrains.kotlin.psi.KtDeclarationModifierList; import org.jetbrains.kotlin.psi.KtFile; -import org.jetbrains.kotlin.psi.KtScript; import org.jetbrains.kotlin.psi.stubs.*; import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes; import org.jetbrains.kotlin.psi.stubs.elements.StubIndexService; import org.jetbrains.kotlin.util.TypeIndexUtilKt; import java.io.IOException; +import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.List; @@ -134,6 +132,9 @@ public class IdeStubIndexService extends StubIndexService { if (modifierListStub.hasModifier(KtTokens.ENUM_KEYWORD)) { sink.occurrence(KotlinSuperClassIndex.getInstance().getKey(), Enum.class.getSimpleName()); } + if (modifierListStub.hasModifier(KtTokens.ANNOTATION_KEYWORD)) { + sink.occurrence(KotlinSuperClassIndex.getInstance().getKey(), Annotation.class.getSimpleName()); + } } @Nullable diff --git a/idea/testData/hierarchy/withLib/annotation/Annotation_verification.xml b/idea/testData/hierarchy/withLib/annotation/Annotation_verification.xml new file mode 100644 index 00000000000..47dc71afe8a --- /dev/null +++ b/idea/testData/hierarchy/withLib/annotation/Annotation_verification.xml @@ -0,0 +1,4 @@ + + + + diff --git a/idea/testData/hierarchy/withLib/annotation/main.kt b/idea/testData/hierarchy/withLib/annotation/main.kt new file mode 100644 index 00000000000..a59ad9225d8 --- /dev/null +++ b/idea/testData/hierarchy/withLib/annotation/main.kt @@ -0,0 +1,7 @@ +// BASE_CLASS: java.lang.annotation.Annotation + +package a; + +annotation class MyAnno + +annotation class MyAnno2 \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyWithLibTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyWithLibTestGenerated.java index 43e0fbb028b..3b0df025542 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyWithLibTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyWithLibTestGenerated.java @@ -35,6 +35,12 @@ public class HierarchyWithLibTestGenerated extends AbstractHierarchyWithLibTest 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") public void testEnum() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/withLib/enum/");