From 286d39b8668304e732adda0274caf31f2f0f76f3 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Fri, 4 Sep 2015 21:17:28 +0300 Subject: [PATCH] Import names from singleton but show CANNOT_IMPORT_ON_DEMAND_FROM_SINGLETON error --- .../kotlin/resolve/AllUnderImportsScope.kt | 2 +- .../tests/imports/ImportFromObject.kt | 20 +++++++++++++ .../tests/imports/ImportFromObject.txt | 30 +++++++++++++++++++ .../diagnostics/tests/scopes/kt900-1.kt | 2 +- .../diagnostics/tests/scopes/kt900-2.kt | 2 +- .../checkers/JetDiagnosticsTestGenerated.java | 6 ++++ 6 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/imports/ImportFromObject.kt create mode 100644 compiler/testData/diagnostics/tests/imports/ImportFromObject.txt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt index bdee6f4977d..ae2331e22af 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AllUnderImportsScope.kt @@ -32,7 +32,7 @@ class AllUnderImportsScope : JetScope { if (descriptor is PackageViewDescriptor) { scopes.add(NoSubpackagesInPackageScope(descriptor)) } - else if (descriptor is ClassDescriptor && ImportDirectiveProcessor.canAllUnderImportFromClass(descriptor)) { + else if (descriptor is ClassDescriptor) { scopes.add(descriptor.getStaticScope()) scopes.add(descriptor.getUnsubstitutedInnerClassesScope()) } diff --git a/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt b/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt new file mode 100644 index 00000000000..874db09218c --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt @@ -0,0 +1,20 @@ +// FILE: a.kt +package a + +object O { + class A + object B + + fun bar() {} +} + +// FILE: b.kt +package b + +import a.O.* + +fun test() { + A() + B + bar() +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/imports/ImportFromObject.txt b/compiler/testData/diagnostics/tests/imports/ImportFromObject.txt new file mode 100644 index 00000000000..2a6828ead49 --- /dev/null +++ b/compiler/testData/diagnostics/tests/imports/ImportFromObject.txt @@ -0,0 +1,30 @@ +package + +package a { + + public object O { + private constructor O() + public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public object B { + private constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +package b { + public fun test(): kotlin.Unit +} diff --git a/compiler/testData/diagnostics/tests/scopes/kt900-1.kt b/compiler/testData/diagnostics/tests/scopes/kt900-1.kt index 825a7e289a8..cc9dd509202 100644 --- a/compiler/testData/diagnostics/tests/scopes/kt900-1.kt +++ b/compiler/testData/diagnostics/tests/scopes/kt900-1.kt @@ -6,7 +6,7 @@ import c.M.* fun foo() { val b: B = B() - var r: R = R() + var r: R = R() } class A() { diff --git a/compiler/testData/diagnostics/tests/scopes/kt900-2.kt b/compiler/testData/diagnostics/tests/scopes/kt900-2.kt index a59f7ba4e1a..32d53af337c 100644 --- a/compiler/testData/diagnostics/tests/scopes/kt900-2.kt +++ b/compiler/testData/diagnostics/tests/scopes/kt900-2.kt @@ -14,7 +14,7 @@ val y: T = Y fun f() { bar() R.bar() - B.foo() + B.foo() } object M { diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java index f4ed8d805bc..df4a6cdf7c9 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -6537,6 +6537,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("ImportFromObject.kt") + public void testImportFromObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/imports/ImportFromObject.kt"); + doTest(fileName); + } + @TestMetadata("ImportFromRootPackage.kt") public void testImportFromRootPackage() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/imports/ImportFromRootPackage.kt");