From 4c41d19eb1c14fc01c64054e7a97163491f74c3a Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Wed, 11 Dec 2013 17:11:17 +0400 Subject: [PATCH] interpret class in class object as static nested class removed hack in TaskPrioritizer for import class from class object --- .../resolve/calls/tasks/TaskPrioritizer.java | 17 ----------------- .../classObjects/importClassInClassObject.kt | 11 +++++++++++ .../enum/starImportNestedClassAndEntries.kt | 2 +- .../checkers/JetDiagnosticsTestGenerated.java | 5 +++++ .../jet/lang/resolve/DescriptorUtils.java | 3 +-- idea/testData/editor/optimizeImports/Kt2709.kt | 2 +- .../editor/optimizeImports/Kt2709_after.kt | 2 +- 7 files changed, 20 insertions(+), 22 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/classObjects/importClassInClassObject.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java index 6b7708f9ab9..ee5e6b895b6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java @@ -43,7 +43,6 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isClassObject; import static org.jetbrains.jet.lang.resolve.calls.CallResolverUtil.isOrOverridesSynthesized; import static org.jetbrains.jet.lang.resolve.calls.tasks.ExplicitReceiverKind.*; import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue.NO_RECEIVER; @@ -322,22 +321,6 @@ public class TaskPrioritizer { } } } - if (receiverParameters.size() == 1 && !receiverParameters.iterator().next().exists()) { - for (D descriptor : descriptors) { - if (descriptor.getExpectedThisObject() != null && descriptor.getReceiverParameter() == null) { - DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); - if (descriptor instanceof ConstructorDescriptor) { - containingDeclaration = containingDeclaration.getContainingDeclaration(); - } - if (containingDeclaration != null && isClassObject(containingDeclaration)) { - ResolutionCandidate candidate = ResolutionCandidate.create(descriptor); - candidate.setThisObject(((ClassDescriptor) containingDeclaration).getThisAsReceiverParameter().getValue()); - candidate.setExplicitReceiverKind(ExplicitReceiverKind.NO_EXPLICIT_RECEIVER); - result.add(candidate); - } - } - } - } return result; } diff --git a/compiler/testData/diagnostics/tests/classObjects/importClassInClassObject.kt b/compiler/testData/diagnostics/tests/classObjects/importClassInClassObject.kt new file mode 100644 index 00000000000..e684c1296e1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/classObjects/importClassInClassObject.kt @@ -0,0 +1,11 @@ +package f + +import f.A.B + +class A { + class object { + class B + } +} + +fun test() = B() \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/enum/starImportNestedClassAndEntries.kt b/compiler/testData/diagnostics/tests/enum/starImportNestedClassAndEntries.kt index 55850414848..872997884e5 100644 --- a/compiler/testData/diagnostics/tests/enum/starImportNestedClassAndEntries.kt +++ b/compiler/testData/diagnostics/tests/enum/starImportNestedClassAndEntries.kt @@ -21,4 +21,4 @@ fun f1() = ENTRY fun f2() = ANOTHER fun f3() = Nested() fun f4() = Nested.foo() -fun f5() = values() +fun f5() = values() \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 093362a78b4..c4621e3ff7c 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -1374,6 +1374,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage doTest("compiler/testData/diagnostics/tests/classObjects/ClassObjects.kt"); } + @TestMetadata("importClassInClassObject.kt") + public void testImportClassInClassObject() throws Exception { + doTest("compiler/testData/diagnostics/tests/classObjects/importClassInClassObject.kt"); + } + @TestMetadata("InnerClassClassObject.kt") public void testInnerClassClassObject() throws Exception { doTest("compiler/testData/diagnostics/tests/classObjects/InnerClassClassObject.kt"); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index e58f929d9b7..258dbfdb494 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -432,8 +432,7 @@ public class DescriptorUtils { DeclarationDescriptor containing = descriptor.getContainingDeclaration(); return descriptor instanceof ClassDescriptor && containing instanceof ClassDescriptor && - !((ClassDescriptor) descriptor).isInner() && - !((ClassDescriptor) containing).getKind().isSingleton(); + !((ClassDescriptor) descriptor).isInner(); } @Nullable diff --git a/idea/testData/editor/optimizeImports/Kt2709.kt b/idea/testData/editor/optimizeImports/Kt2709.kt index 7303b62992f..a4e12e7d0bc 100644 --- a/idea/testData/editor/optimizeImports/Kt2709.kt +++ b/idea/testData/editor/optimizeImports/Kt2709.kt @@ -6,6 +6,6 @@ fun main() { class MyClass { class object { - public val TEST: String = "" + object TEST {} } } diff --git a/idea/testData/editor/optimizeImports/Kt2709_after.kt b/idea/testData/editor/optimizeImports/Kt2709_after.kt index 7303b62992f..a4e12e7d0bc 100644 --- a/idea/testData/editor/optimizeImports/Kt2709_after.kt +++ b/idea/testData/editor/optimizeImports/Kt2709_after.kt @@ -6,6 +6,6 @@ fun main() { class MyClass { class object { - public val TEST: String = "" + object TEST {} } }