KT-27601 keep imports for extension functions used in kdoc
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
423aeb9a08
commit
90cfa80683
@@ -10,9 +10,7 @@ import com.intellij.psi.*
|
|||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.asJava.unwrapped
|
import org.jetbrains.kotlin.asJava.unwrapped
|
||||||
import org.jetbrains.kotlin.builtins.isExtensionFunctionType
|
import org.jetbrains.kotlin.builtins.isExtensionFunctionType
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
|
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
||||||
@@ -287,7 +285,16 @@ fun KtExpression.readWriteAccessWithFullExpression(useResolveForReadWrite: Boole
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun KtReference.canBeResolvedViaImport(target: DeclarationDescriptor, bindingContext: BindingContext): Boolean {
|
fun KtReference.canBeResolvedViaImport(target: DeclarationDescriptor, bindingContext: BindingContext): Boolean {
|
||||||
if (this is KDocReference) return element.getQualifiedName().size == 1
|
if (this is KDocReference) {
|
||||||
|
val qualifier = element.getQualifier() ?: return true
|
||||||
|
return if (target.isExtension) {
|
||||||
|
val elementHasFunctionDescriptor = element.resolveMainReferenceToDescriptors().find { it is FunctionDescriptor } != null
|
||||||
|
val qualifierHasClassDescriptor = qualifier.resolveMainReferenceToDescriptors().find { it is ClassDescriptor } != null
|
||||||
|
elementHasFunctionDescriptor && qualifierHasClassDescriptor
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
return element.canBeResolvedViaImport(target, bindingContext)
|
return element.canBeResolvedViaImport(target, bindingContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
import kotlin.concurrent.fixedRateTimer
|
import kotlin.concurrent.fixedRateTimer
|
||||||
import kotlin.concurrent.read
|
import kotlin.concurrent.read
|
||||||
|
import kotlin.concurrent.withLock
|
||||||
|
import kotlin.concurrent.write
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
import java.util.concurrent.locks.Lock
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to [ArrayList]
|
* Reference to [ArrayList]
|
||||||
* Reference to [fixedRateTimer]
|
* Reference to [fixedRateTimer]
|
||||||
* Reference to [kotlin.concurrent.read]
|
* Reference to [kotlin.concurrent.read]
|
||||||
|
* Reference to [Lock.withLock]
|
||||||
|
* Reference to [java.util.concurrent.locks.ReentrantReadWriteLock.write]
|
||||||
*/
|
*/
|
||||||
fun foo() {
|
fun foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
import java.util.concurrent.locks.Lock
|
||||||
import kotlin.concurrent.fixedRateTimer
|
import kotlin.concurrent.fixedRateTimer
|
||||||
|
import kotlin.concurrent.withLock
|
||||||
|
import kotlin.concurrent.write
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to [ArrayList]
|
* Reference to [ArrayList]
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
import kotlin.concurrent.fixedRateTimer
|
import kotlin.concurrent.fixedRateTimer
|
||||||
import kotlin.concurrent.read
|
import kotlin.concurrent.read
|
||||||
|
import kotlin.concurrent.withLock
|
||||||
|
import kotlin.concurrent.write
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
import java.util.concurrent.locks.Lock
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to [ArrayList]
|
* Reference to [ArrayList]
|
||||||
* Reference to [fixedRateTimer]
|
* Reference to [fixedRateTimer]
|
||||||
* Reference to [kotlin.concurrent.read]
|
* Reference to [kotlin.concurrent.read]
|
||||||
|
* Reference to [Lock.withLock]
|
||||||
|
* Reference to [java.util.concurrent.locks.ReentrantReadWriteLock.write]
|
||||||
*/
|
*/
|
||||||
fun foo() {
|
fun foo() {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user