From d3e6d2d6cdff2ee6b09189cda430b1a430a17ca7 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Fri, 5 Jul 2013 18:02:28 +0400 Subject: [PATCH] do not need to check stand-alone class object for class, when it's on the left hand side of dot it is analyzed in 'getIdForImplicitReceiver' (test added) --- .../calls/autocasts/DataFlowValueFactory.java | 4 ---- .../tests/smartCasts/classObjectMember.kt | 22 +++++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 5 +++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/smartCasts/classObjectMember.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java index 726764a603d..780169f9878 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java @@ -202,10 +202,6 @@ public class DataFlowValueFactory { if (declarationDescriptor instanceof NamespaceDescriptor) { return createNamespaceInfo(declarationDescriptor); } - if (declarationDescriptor instanceof ClassDescriptor) { - ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor; - return createInfo(classDescriptor, classDescriptor.getClassObjectDescriptor() != null); - } return NO_IDENTIFIER_INFO; } diff --git a/compiler/testData/diagnostics/tests/smartCasts/classObjectMember.kt b/compiler/testData/diagnostics/tests/smartCasts/classObjectMember.kt new file mode 100644 index 00000000000..53bf09c020e --- /dev/null +++ b/compiler/testData/diagnostics/tests/smartCasts/classObjectMember.kt @@ -0,0 +1,22 @@ +open class T { + val x : Int? = null +} + +class A { + class object: T() { + } +} + +class B { + class object: T() { + } +} + +fun test() { + if (A.x != null) { + useInt(A.x) + useInt(B.x) + } +} + +fun useInt(i: Int) = i \ 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 2bbd81a66cc..abb5951ef74 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -4867,6 +4867,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/smartCasts"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("classObjectMember.kt") + public void testClassObjectMember() throws Exception { + doTest("compiler/testData/diagnostics/tests/smartCasts/classObjectMember.kt"); + } + @TestMetadata("combineWithNoSelectorInfo.kt") public void testCombineWithNoSelectorInfo() throws Exception { doTest("compiler/testData/diagnostics/tests/smartCasts/combineWithNoSelectorInfo.kt");