From 453b01bbbc39f59aaf6e9a9d8eaf183abd77ba0f Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Dec 2013 22:43:23 +0400 Subject: [PATCH] Fix wrong assertion in KotlinSignature line markers Since "memberScope" comes from JavaDescriptorResolver and the latter can return Kotlin descriptors (built-in or deserialized from another module), "container" must not always be JavaClassDescriptor. This assertion was reproducible on Kotlin project by opening "IntProgression" class from runtime module --- .../ktSignature/KotlinSignatureInJavaMarkerProvider.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java index 865a17d8831..55fa1b1f950 100644 --- a/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/ktSignature/KotlinSignatureInJavaMarkerProvider.java @@ -201,7 +201,9 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { if (member instanceof PsiMethod) { if (((PsiMethod) member).isConstructor()) { DeclarationDescriptor container = memberScope.getContainingDeclaration(); - assert container instanceof JavaClassDescriptor : container + "\n" + memberScope; + if (!(container instanceof JavaClassDescriptor)) { + return null; + } ((JavaClassDescriptor) container).getConstructors(); } else {