From eaeed78154c8388415c904244e0a355d6e917d51 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 19 Aug 2014 15:17:43 +0400 Subject: [PATCH] Resolve type of anonymous object in local object as local --- .../jetbrains/jet/lang/resolve/DescriptorResolver.java | 2 +- .../diagnostics/tests/objects/localObjectInsideObject.kt | 9 +++++++++ .../jet/checkers/JetDiagnosticsTestGenerated.java | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/objects/localObjectInsideObject.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index a77a84e34ec..af8593d4e53 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -1125,7 +1125,7 @@ public class DescriptorResolver { } boolean definedInClass = DescriptorUtils.getParentOfType(descriptor, ClassDescriptor.class) != null; - boolean isLocal = descriptor.getContainingDeclaration() instanceof CallableDescriptor; + boolean isLocal = DescriptorUtils.isLocal(descriptor); Visibility visibility = descriptor.getVisibility(); boolean transformNeeded = !isLocal && !visibility.isPublicAPI() && !(definedInClass && Visibilities.PRIVATE.equals(visibility)); diff --git a/compiler/testData/diagnostics/tests/objects/localObjectInsideObject.kt b/compiler/testData/diagnostics/tests/objects/localObjectInsideObject.kt new file mode 100644 index 00000000000..4eef911ecef --- /dev/null +++ b/compiler/testData/diagnostics/tests/objects/localObjectInsideObject.kt @@ -0,0 +1,9 @@ +fun foo() { + val a = object { + val b = object { + val c = 42 + } + } + + a.b.c : Int +} \ 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 c331c7ad4e9..253c1e82a11 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -5916,6 +5916,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest("compiler/testData/diagnostics/tests/objects/kt5527.kt"); } + @TestMetadata("localObjectInsideObject.kt") + public void testLocalObjectInsideObject() throws Exception { + doTest("compiler/testData/diagnostics/tests/objects/localObjectInsideObject.kt"); + } + @TestMetadata("objectLiteralExpressionTypeMismatch.kt") public void testObjectLiteralExpressionTypeMismatch() throws Exception { doTest("compiler/testData/diagnostics/tests/objects/objectLiteralExpressionTypeMismatch.kt");