diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java index 169178df4e6..b61ea302e55 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java @@ -83,10 +83,10 @@ public abstract class AnnotationCodegen { for (JetAnnotationEntry annotationEntry : annotationEntries) { ResolvedCall resolvedCall = bindingContext.get(BindingContext.RESOLVED_CALL, annotationEntry.getCalleeExpression()); - assert resolvedCall != null; + if (resolvedCall == null) continue; // Skipping annotations if they are not resolved. Needed for JetLightClass generation AnnotationDescriptor annotationDescriptor = bindingContext.get(BindingContext.ANNOTATION, annotationEntry); - assert annotationDescriptor != null; + if (annotationDescriptor == null) continue; // Skipping annotations if they are not resolved. Needed for JetLightClass generation JetType type = annotationDescriptor.getType(); genAnnotation(resolvedCall, type); diff --git a/idea/testData/findUsages/unresolvedAnnotation/Client.java b/idea/testData/findUsages/unresolvedAnnotation/Client.java new file mode 100644 index 00000000000..ec149907c84 --- /dev/null +++ b/idea/testData/findUsages/unresolvedAnnotation/Client.java @@ -0,0 +1 @@ +public class Client extends Foo {} \ No newline at end of file diff --git a/idea/testData/findUsages/unresolvedAnnotation/Server.kt b/idea/testData/findUsages/unresolvedAnnotation/Server.kt new file mode 100644 index 00000000000..c0297935cae --- /dev/null +++ b/idea/testData/findUsages/unresolvedAnnotation/Server.kt @@ -0,0 +1,3 @@ +open class Foo { + vv open val foo = 1 +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java index 073ed22c351..45fad931a0e 100644 --- a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java +++ b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.findUsages; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiStatement; import com.intellij.psi.util.PsiTreeUtil; @@ -56,6 +57,16 @@ public class JetFindUsagesTest extends LightCodeInsightFixtureTestCase { assertEquals("private Server myServer;", field.getText()); } + public void testFindUsagesUnresolvedAnnotation() { + myFixture.configureByFiles("unresolvedAnnotation/Server.kt", "unresolvedAnnotation/Client.java"); + JetClass cls = PsiTreeUtil.getParentOfType(myFixture.getElementAtCaret(), JetClass.class, false); + final Collection usages = myFixture.findUsages(cls); + assertEquals(1, usages.size()); + UsageInfo first = usages.iterator().next(); + final PsiClass psiCLass = PsiTreeUtil.getParentOfType(first.getElement(), PsiClass.class); + assertEquals("public class Client extends Foo {}", psiCLass.getText()); + } + public void testFindMethodUsages() { myFixture.configureByFiles("findMethodUsages/Server.kt", "findMethodUsages/Client.java"); JetFunction function = PsiTreeUtil.getParentOfType(myFixture.getElementAtCaret(), JetFunction.class, false);