KT-900 Inaccessible class should be unresolved
This commit is contained in:
@@ -128,18 +128,24 @@ public class JetPsiUtil {
|
||||
return getFQName(file.getNamespaceHeader());
|
||||
}
|
||||
|
||||
public static String getFQName(JetClass jetClass) {
|
||||
public static String getFQName(JetClassOrObject jetClass) {
|
||||
PsiElement parent = jetClass.getParent();
|
||||
if (parent instanceof JetFile) {
|
||||
return makeFQName(getFQName((JetFile) parent), jetClass);
|
||||
}
|
||||
if (parent instanceof JetClass) {
|
||||
return makeFQName(getFQName(((JetClass) parent)), jetClass);
|
||||
while (parent instanceof JetClassBody) {
|
||||
parent = parent.getParent();
|
||||
if (parent instanceof JetObjectDeclaration && parent.getParent() instanceof JetClassObject) {
|
||||
parent = parent.getParent().getParent();
|
||||
}
|
||||
}
|
||||
if (parent instanceof JetClassOrObject) {
|
||||
return makeFQName(getFQName(((JetClassOrObject) parent)), jetClass);
|
||||
}
|
||||
return jetClass.getName();
|
||||
}
|
||||
|
||||
private static String makeFQName(String prefix, JetClass jetClass) {
|
||||
return (prefix.length() == 0 ? "" : prefix + ".") + jetClass.getName();
|
||||
private static String makeFQName(String prefix, JetClassOrObject jetClass) {
|
||||
return ((prefix == null || prefix.length() == 0) ? "" : prefix + ".") + jetClass.getName();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
//FILE:a.kt
|
||||
//KT-900 Inaccessible class should be unresolved
|
||||
|
||||
package a
|
||||
|
||||
fun foo() {
|
||||
val <!UNUSED_VARIABLE!>b<!> : <!UNRESOLVED_REFERENCE!>B<!> = <!UNRESOLVED_REFERENCE!>B<!>() //only B() is unresolved, but in ": B" and "B.foo()" B should also be unresolved
|
||||
<!UNRESOLVED_REFERENCE!>B<!>.foo()
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>P<!>.foo()
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>M<!>.bar()
|
||||
}
|
||||
|
||||
class A() {
|
||||
class object {
|
||||
class B() {
|
||||
class object {
|
||||
fun foo() {}
|
||||
}
|
||||
}
|
||||
|
||||
object P {
|
||||
fun foo() {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object N {
|
||||
object M {
|
||||
fun bar() {}
|
||||
}
|
||||
}
|
||||
|
||||
//FILE:b.kt
|
||||
package b
|
||||
|
||||
import N.M
|
||||
import A.P
|
||||
import b.A.B
|
||||
|
||||
fun foo() {
|
||||
val <!UNUSED_VARIABLE!>b<!> : B = B()
|
||||
B.foo()
|
||||
|
||||
P.foo()
|
||||
|
||||
M.bar()
|
||||
}
|
||||
|
||||
class A() {
|
||||
class object {
|
||||
class B() {
|
||||
class object {
|
||||
fun foo() {}
|
||||
}
|
||||
}
|
||||
|
||||
object P {
|
||||
fun foo() {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object N {
|
||||
object M {
|
||||
fun bar() {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user