KT-900 Inaccessible class should be unresolved
This commit is contained in:
@@ -128,18 +128,24 @@ public class JetPsiUtil {
|
|||||||
return getFQName(file.getNamespaceHeader());
|
return getFQName(file.getNamespaceHeader());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getFQName(JetClass jetClass) {
|
public static String getFQName(JetClassOrObject jetClass) {
|
||||||
PsiElement parent = jetClass.getParent();
|
PsiElement parent = jetClass.getParent();
|
||||||
if (parent instanceof JetFile) {
|
if (parent instanceof JetFile) {
|
||||||
return makeFQName(getFQName((JetFile) parent), jetClass);
|
return makeFQName(getFQName((JetFile) parent), jetClass);
|
||||||
}
|
}
|
||||||
if (parent instanceof JetClass) {
|
while (parent instanceof JetClassBody) {
|
||||||
return makeFQName(getFQName(((JetClass) parent)), jetClass);
|
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();
|
return jetClass.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String makeFQName(String prefix, JetClass jetClass) {
|
private static String makeFQName(String prefix, JetClassOrObject jetClass) {
|
||||||
return (prefix.length() == 0 ? "" : prefix + ".") + jetClass.getName();
|
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