diff --git a/idea/testData/search/annotations/annotationAliased.kt b/idea/testData/search/annotations/annotationAliased.kt new file mode 100644 index 00000000000..f7ce2ea50ff --- /dev/null +++ b/idea/testData/search/annotations/annotationAliased.kt @@ -0,0 +1,15 @@ +import java.lang.Deprecated as D + +@D class TestClass1 {} + + +@D fun f() + +class TestClass5 { + @D fun g() {} + + @D class innerTestClass() {} +} + +// ANNOTATION: java.lang.Deprecated +// SEARCH: class:TestClass1, class:innerTestClass, method:f, method:g diff --git a/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTest.kt b/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTest.kt index 5671fe269f6..1cce43e0351 100644 --- a/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTest.kt +++ b/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTest.kt @@ -17,13 +17,20 @@ package org.jetbrains.kotlin.search import com.intellij.openapi.util.io.FileUtil +import com.intellij.psi.impl.java.stubs.PsiJavaFileStub import com.intellij.psi.search.searches.AnnotatedMembersSearch import com.intellij.testFramework.LightProjectDescriptor import junit.framework.TestCase +import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext +import org.jetbrains.kotlin.asJava.builder.StubComputationTracker +import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.IDELightClassConstructionContext +import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.IDELightClassConstructionContext.Mode.EXACT +import org.jetbrains.kotlin.idea.completion.test.withServiceRegistered import org.jetbrains.kotlin.idea.search.PsiBasedClassResolver import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.test.InTextDirectivesUtils +import org.junit.Assert import java.io.File abstract class AbstractAnnotatedMembersSearchTest : AbstractSearcherTest() { @@ -39,20 +46,23 @@ abstract class AbstractAnnotatedMembersSearchTest : AbstractSearcherTest() { TestCase.assertFalse("Specify ANNOTATION directive in test file", directives.isEmpty()) val annotationClassName = directives.first() - val psiClass = getPsiClass(annotationClassName) - PsiBasedClassResolver.trueHits.set(0) - PsiBasedClassResolver.falseHits.set(0) + project.withServiceRegistered(NoRealDelegatesComputed) { + val psiClass = getPsiClass(annotationClassName) + PsiBasedClassResolver.trueHits.set(0) + PsiBasedClassResolver.falseHits.set(0) - AbstractSearcherTest.checkResult(path, AnnotatedMembersSearch.search(psiClass, projectScope)) + AbstractSearcherTest.checkResult(path, AnnotatedMembersSearch.search(psiClass, projectScope)) - val optimizedTrue = InTextDirectivesUtils.getPrefixedInt(fileText, "// OPTIMIZED_TRUE:") - if (optimizedTrue != null) { - TestCase.assertEquals(optimizedTrue.toInt(), PsiBasedClassResolver.trueHits.get()) - } - val optimizedFalse = InTextDirectivesUtils.getPrefixedInt(fileText, "// OPTIMIZED_FALSE:") - if (optimizedFalse != null) { - TestCase.assertEquals(optimizedFalse.toInt(), PsiBasedClassResolver.falseHits.get()) + val optimizedTrue = InTextDirectivesUtils.getPrefixedInt(fileText, "// OPTIMIZED_TRUE:") + if (optimizedTrue != null) { + TestCase.assertEquals(optimizedTrue.toInt(), PsiBasedClassResolver.trueHits.get()) + } + val optimizedFalse = InTextDirectivesUtils.getPrefixedInt(fileText, "// OPTIMIZED_FALSE:") + if (optimizedFalse != null) { + TestCase.assertEquals(optimizedFalse.toInt(), PsiBasedClassResolver.falseHits.get()) + } } + } override fun getTestDataPath(): String { @@ -60,3 +70,10 @@ abstract class AbstractAnnotatedMembersSearchTest : AbstractSearcherTest() { } } +private object NoRealDelegatesComputed : StubComputationTracker { + override fun onStubComputed(javaFileStub: PsiJavaFileStub, context: LightClassConstructionContext) { + if ((context as IDELightClassConstructionContext).mode == EXACT) { + Assert.fail("Should not have computed exact delegate for ${javaFileStub.classes.single().qualifiedName}") + } + } +} diff --git a/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTestGenerated.java b/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTestGenerated.java index 82c03ac0bf2..6c4b3f7a920 100644 --- a/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/search/AnnotatedMembersSearchTestGenerated.java @@ -36,6 +36,12 @@ public class AnnotatedMembersSearchTestGenerated extends AbstractAnnotatedMember KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/search/annotations"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("annotationAliased.kt") + public void testAnnotationAliased() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/search/annotations/annotationAliased.kt"); + doTest(fileName); + } + @TestMetadata("testAmbiguousNestedNonAnnotationClass.kt") public void testTestAmbiguousNestedNonAnnotationClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/search/annotations/testAmbiguousNestedNonAnnotationClass.kt");