Move: Fix processing of callable references to Java constructors

This commit is contained in:
Alexey Sedunov
2017-04-10 18:05:21 +03:00
parent bdaf73411a
commit 9979c6e361
31 changed files with 190 additions and 4 deletions
@@ -249,6 +249,7 @@ private fun getReferenceKind(reference: PsiReference, referencedElement: PsiElem
element.getParentOfTypeAndBranch<KtCallableReferenceExpression> { callableReference }?.let { element.getParentOfTypeAndBranch<KtCallableReferenceExpression> { callableReference }?.let {
if (it.receiverExpression != null) return ReferenceKind.IRRELEVANT if (it.receiverExpression != null) return ReferenceKind.IRRELEVANT
if (referencedElement is KtDeclaration && referencedElement.parent is KtFile) return ReferenceKind.UNQUALIFIABLE if (referencedElement is KtDeclaration && referencedElement.parent is KtFile) return ReferenceKind.UNQUALIFIABLE
if (referencedElement is PsiMember && referencedElement.getContainingClass() == null) return ReferenceKind.UNQUALIFIABLE
} }
return ReferenceKind.QUALIFIABLE return ReferenceKind.QUALIFIABLE
@@ -2,8 +2,11 @@ package baz
import foo.A import foo.A
import foo.J import foo.J
import foo.JConstr
import foo.O import foo.O
import foo.O.objectExtensionMember2 import foo.O.objectExtensionMember2
import foo.Y
import foo.YConstr
import foo.classExtension import foo.classExtension
import foo.companionExtension import foo.companionExtension
import foo.objectExtension import foo.objectExtension
@@ -39,6 +42,12 @@ fun test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::Y
::YConstr
Y::YY
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -0,0 +1,7 @@
package foo
class Y {
class YY
}
class YConstr(n: Int)
@@ -36,6 +36,12 @@ fun <caret>test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::Y
::YConstr
Y::YY
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -0,0 +1,7 @@
package foo
class Y {
class YY
}
class YConstr(n: Int)
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -0,0 +1,7 @@
package foo
class Y {
class YY
}
class YConstr(n: Int)
@@ -32,6 +32,12 @@ fun test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::Y
::YConstr
Y::YY
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -36,6 +36,12 @@ fun <caret>test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::Y
::YConstr
Y::YY
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -0,0 +1,7 @@
package foo
class Y {
class YY
}
class YConstr(n: Int)
@@ -2,8 +2,11 @@ package bar
import foo.A import foo.A
import foo.J import foo.J
import foo.JConstr
import foo.O import foo.O
import foo.O.objectExtensionMember2 import foo.O.objectExtensionMember2
import foo.X
import foo.XConstr
import foo.classExtension import foo.classExtension
import foo.companionExtension import foo.companionExtension
import foo.objectExtension import foo.objectExtension
@@ -39,6 +42,12 @@ fun test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::X
::XConstr
X::XX
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -1,4 +1,7 @@
package foo package foo
class X class X {
class XX
}
class XConstr(n: Int)
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -3,7 +3,10 @@ package foo
import foo.O.objectMember2 import foo.O.objectMember2
import foo.O.objectExtensionMember2 import foo.O.objectExtensionMember2
class X class X {
class XX
}
class XConstr(n: Int)
fun <caret>test() { fun <caret>test() {
A().classMember() A().classMember()
@@ -35,6 +38,12 @@ fun <caret>test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::X
::XConstr
X::XX
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -2,8 +2,11 @@ package bar
import foo.A import foo.A
import foo.J import foo.J
import foo.JConstr
import foo.O import foo.O
import foo.O.objectExtensionMember2 import foo.O.objectExtensionMember2
import foo.X
import foo.XConstr
import foo.classExtension import foo.classExtension
import foo.companionExtension import foo.companionExtension
import foo.objectExtension import foo.objectExtension
@@ -39,6 +42,12 @@ fun test() {
J::javaClassMember J::javaClassMember
J::javaClassStaticMember J::javaClassStaticMember
::topLevel ::topLevel
::X
::XConstr
X::XX
::J
::JConstr
J::JJ
with(A()) { with(A()) {
classMember() classMember()
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -1,4 +1,7 @@
package foo package foo
class X class X {
class XX
}
class XConstr(n: Int)
@@ -1,6 +1,10 @@
package foo; package foo;
public class J { public class J {
public static class JJ {
}
public void javaClassMember() { public void javaClassMember() {
} }
@@ -0,0 +1,7 @@
package foo;
public class JConstr {
public JConstr(int n) {
}
}
@@ -2,7 +2,10 @@ package foo
import foo.O.objectExtensionMember2 import foo.O.objectExtensionMember2
class X class X {
class XX
}
class XConstr(n: Int)
fun <caret>test() { fun <caret>test() {
foo.A().classMember() foo.A().classMember()
@@ -34,6 +37,12 @@ fun <caret>test() {
foo.J::javaClassMember foo.J::javaClassMember
foo.J::javaClassStaticMember foo.J::javaClassStaticMember
::topLevel ::topLevel
::X
::XConstr
X::XX
::J
::JConstr
J::JJ
with(foo.A()) { with(foo.A()) {
classMember() classMember()