From 293b272a2229acd0cfa282c0839f9cd278c97e05 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 9 Jan 2013 17:23:43 +0400 Subject: [PATCH] Fix for a problem where inner (or nested) classes were not analyzed in some situations # KT-3124 Fixed --- .../java/resolver/JavaInnerClassResolver.java | 3 +- .../tests/j+k/innerNestedClassFromJava.kt | 32 +++++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 5 +++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/j+k/innerNestedClassFromJava.kt diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java index 41a8a001eee..34a9e086cd6 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaInnerClassResolver.java @@ -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; } diff --git a/compiler/testData/diagnostics/tests/j+k/innerNestedClassFromJava.kt b/compiler/testData/diagnostics/tests/j+k/innerNestedClassFromJava.kt new file mode 100644 index 00000000000..d7554c04d75 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/innerNestedClassFromJava.kt @@ -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 c1: a.M.Inner + val c2: a.M.Nested + val c3: a.M.PrInner + val c4: a.M.PrNested + +} + diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index abb775a4cc8..6037af763e1 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -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");