diff --git a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt index 5e973a05733..17470323307 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/resolve/lazy/ElementResolver.kt @@ -90,9 +90,18 @@ public abstract class ElementResolver protected constructor( javaClass(), javaClass(), javaClass(), - javaClass()) as JetElement? ?: return null + javaClass()) as JetElement? when (elementOfAdditionalResolve) { + null -> { + // Case of JetAnnotationEntry on top level class + if (element is JetAnnotationEntry) { + return element + } + + return null + } + is JetPackageDirective -> return element is JetParameter -> { diff --git a/idea/testData/search/annotations/testAnnotationsWithParameters.kt b/idea/testData/search/annotations/testAnnotationsWithParameters.kt index 1adb5799508..72163d7bca5 100644 --- a/idea/testData/search/annotations/testAnnotationsWithParameters.kt +++ b/idea/testData/search/annotations/testAnnotationsWithParameters.kt @@ -2,6 +2,8 @@ MyAnnotation("f", "s") fun test1() {} MyAnnotation("f", "s") class Test1() {} +MyAnnotation("f", "s") val test3 = 1 + annotation class MyAnnotation(val first: String, val second: String) // ANNOTATION: MyAnnotation diff --git a/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt b/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt index 3bbb9aa1bc9..69355a35836 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.idea.test.JetLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.JetLightProjectDescriptor import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode public class ResolveElementCacheTest : JetLightCodeInsightFixtureTestCase() { @@ -167,4 +168,17 @@ class C(param1: String = "", param2: Int = 0) { assert(bindingContext1 === bindingContext2) } } + + public fun testAnnotationEntry() { + val file = myFixture.configureByText("Test.kt", """ + annotation class A + A class B {} + """) as JetFile + + val klass = file.getDeclarations()[1] as JetClass + val annotationEntry = klass.getAnnotationEntries().single() + + val context = annotationEntry.analyze(BodyResolveMode.PARTIAL) + assert(context[BindingContext.ANNOTATION, annotationEntry] != null) + } }