From 47041885ca37d91c7c8d380c9f603e0db982b24b Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 13 Jan 2016 18:51:31 +0300 Subject: [PATCH] Do not use incorrect import --- .../jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt | 3 +++ .../diagnostics/tests/imports/ImportFromCompanionObject.kt | 4 ++-- .../testData/diagnostics/tests/imports/ImportFromObject.kt | 4 ++-- compiler/testData/diagnostics/tests/scopes/kt900-1.kt | 2 +- compiler/testData/diagnostics/tests/scopes/kt900-2.kt | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt index 6f1a63169f5..c43085cba0b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/QualifiedExpressionResolver.kt @@ -150,9 +150,12 @@ class QualifiedExpressionResolver(val symbolUsageValidator: SymbolUsageValidator if (importDirective.isAllUnder) { val packageOrClassDescriptor = resolveToPackageOrClass(path, moduleDescriptor, trace, packageFragmentForCheck, scopeForFirstPart = null, position = QualifierPosition.IMPORT) ?: return null + if (packageOrClassDescriptor is ClassDescriptor && packageOrClassDescriptor.kind.isSingleton) { trace.report(Errors.CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON.on(lastPart.expression, packageOrClassDescriptor)) // todo report on star + return null } + return AllUnderImportScope(packageOrClassDescriptor) } else { diff --git a/compiler/testData/diagnostics/tests/imports/ImportFromCompanionObject.kt b/compiler/testData/diagnostics/tests/imports/ImportFromCompanionObject.kt index e295643f313..5aa918ae0b8 100644 --- a/compiler/testData/diagnostics/tests/imports/ImportFromCompanionObject.kt +++ b/compiler/testData/diagnostics/tests/imports/ImportFromCompanionObject.kt @@ -63,8 +63,8 @@ package b import a.C1.O.* fun testErroneusAllUnderImportFromObject() { - A() - B + A() + B bar() } diff --git a/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt b/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt index 7c438b4abfa..1ebd85704bd 100644 --- a/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt +++ b/compiler/testData/diagnostics/tests/imports/ImportFromObject.kt @@ -57,8 +57,8 @@ package b import a.O.* fun testErroneusAllUnderImportFromObject() { - A() - B + A() + B bar() } diff --git a/compiler/testData/diagnostics/tests/scopes/kt900-1.kt b/compiler/testData/diagnostics/tests/scopes/kt900-1.kt index 98641ea444c..dd64c8a044a 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 c89932677b3..75af2441e76 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 {