Fix incorrect reference target for class literals in some cases

This commit is contained in:
Pavel V. Talanov
2015-02-17 19:57:26 +03:00
parent 88c5379424
commit 640d2de5b9
5 changed files with 42 additions and 8 deletions
@@ -161,20 +161,17 @@ private fun QualifierReceiver.resolveReferenceTarget(selector: DeclarationDescri
return classifier
}
val containingDeclaration = when {
val selectorContainer = when {
selector is ConstructorDescriptor -> selector.getContainingDeclaration().getContainingDeclaration()
else -> selector?.getContainingDeclaration()
}
if (packageView != null && (containingDeclaration is PackageFragmentDescriptor || containingDeclaration is PackageViewDescriptor)
&& getFqName(packageView) == getFqName(containingDeclaration)) {
if (packageView != null && (selectorContainer is PackageFragmentDescriptor || selectorContainer is PackageViewDescriptor)
&& getFqName(packageView) == getFqName(selectorContainer)) {
return packageView
}
if (classifier != null && containingDeclaration is ClassDescriptor && classifier == containingDeclaration) {
return classifier
}
if (classifier is ClassDescriptor && classifier.classObjectDescriptor != null) {
if (classifier is ClassDescriptor && classifier.classObjectDescriptor == selectorContainer) {
return classifier.getClassObjectReferenceTarget()
}