Fix for a problem where inner (or nested) classes were not analyzed in some situations

# KT-3124 Fixed
This commit is contained in:
Pavel V. Talanov
2013-01-09 17:23:43 +04:00
parent ad848f2ebc
commit 293b272a22
3 changed files with 38 additions and 2 deletions
@@ -75,8 +75,7 @@ public final class JavaInnerClassResolver {
}
private static boolean shouldBeIgnored(DeclarationDescriptor owner, PsiClass psiClass, PsiClass innerPsiClass, boolean isStatic) {
if (innerPsiClass.hasModifierProperty(PsiModifier.PRIVATE)
|| innerPsiClass.getName().equals(JvmAbi.CLASS_OBJECT_CLASS_NAME)
if (innerPsiClass.getName().equals(JvmAbi.CLASS_OBJECT_CLASS_NAME)
|| DescriptorResolverUtils.isInnerEnum(innerPsiClass, owner)) {
return true;
}
@@ -0,0 +1,32 @@
// FILE: a/M.java
package a;
public class M {
public class Inner {
}
public static class Nested {
}
private class PrInner {
}
private static class PrNested {
}
}
// FILE: b.kt
package b
fun f() {
val <!UNUSED_VARIABLE!>c1<!>: a.M.Inner
val <!UNUSED_VARIABLE!>c2<!>: a.M.Nested
val <!UNUSED_VARIABLE!>c3<!>: a.M.<!INVISIBLE_REFERENCE!>PrInner<!>
val <!UNUSED_VARIABLE!>c4<!>: a.M.<!INVISIBLE_REFERENCE!>PrNested<!>
}
@@ -2384,6 +2384,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/j+k"), "kt", true);
}
@TestMetadata("innerNestedClassFromJava.kt")
public void testInnerNestedClassFromJava() throws Exception {
doTest("compiler/testData/diagnostics/tests/j+k/innerNestedClassFromJava.kt");
}
@TestMetadata("kt1402.kt")
public void testKt1402() throws Exception {
doTest("compiler/testData/diagnostics/tests/j+k/kt1402.kt");