Import names from singleton but show CANNOT_IMPORT_ON_DEMAND_FROM_SINGLETON error

This commit is contained in:
Stanislav Erokhin
2015-09-04 21:17:28 +03:00
parent 5786e620e8
commit 286d39b866
6 changed files with 59 additions and 3 deletions
@@ -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())
}
@@ -0,0 +1,20 @@
// FILE: a.kt
package a
object O {
class A
object B
fun bar() {}
}
// FILE: b.kt
package b
import a.<!CANNOT_IMPORT_ON_DEMAND_FROM_SINGLETON!>O<!>.*
fun test() {
A()
B
<!UNRESOLVED_REFERENCE!>bar<!>()
}
@@ -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
}
+1 -1
View File
@@ -6,7 +6,7 @@ import c.<!CANNOT_IMPORT_ON_DEMAND_FROM_SINGLETON!>M<!>.*
fun foo() {
val <!UNUSED_VARIABLE!>b<!>: B = B()
var <!UNUSED_VARIABLE!>r<!>: <!UNRESOLVED_REFERENCE!>R<!> = <!UNRESOLVED_REFERENCE!>R<!>()
var <!UNUSED_VARIABLE!>r<!>: R = R()
}
class A() {
+1 -1
View File
@@ -14,7 +14,7 @@ val y: T = Y
fun f() {
<!UNRESOLVED_REFERENCE!>bar<!>()
R.bar()
<!UNRESOLVED_REFERENCE!>B<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>foo<!>()
B.foo()
}
object M {
@@ -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");