highlight usages for parameter doesn't look at base declarations
#KT-10204 Fixed
This commit is contained in:
+7
-2
@@ -31,6 +31,7 @@ import com.intellij.usageView.UsageInfo
|
||||
import com.intellij.util.*
|
||||
import org.jetbrains.kotlin.asJava.toLightMethods
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinCallableFindUsagesOptions
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory
|
||||
@@ -164,8 +165,12 @@ abstract class KotlinFindMemberUsagesHandler<T : KtNamedDeclaration>
|
||||
|
||||
override fun findReferencesToHighlight(target: PsiElement, searchScope: SearchScope): Collection<PsiReference> {
|
||||
val callableDescriptor = (target as? KtCallableDeclaration)?.resolveToDescriptorIfAny() as? CallableDescriptor
|
||||
val baseDescriptors = callableDescriptor?.findOriginalTopMostOverriddenDescriptors() ?: emptyList<CallableDescriptor>()
|
||||
val baseDeclarations = baseDescriptors.map { it.source.getPsi() }.filter { it != null && it != target }
|
||||
val descriptorsToHighlight = if (callableDescriptor is ParameterDescriptor)
|
||||
listOf(callableDescriptor)
|
||||
else
|
||||
callableDescriptor?.findOriginalTopMostOverriddenDescriptors() ?: emptyList<CallableDescriptor>()
|
||||
|
||||
val baseDeclarations = descriptorsToHighlight.map { it.source.getPsi() }.filter { it != null && it != target }
|
||||
|
||||
return if (baseDeclarations.isNotEmpty()) {
|
||||
baseDeclarations.flatMap {
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtParameter
|
||||
// HIGHLIGHTING
|
||||
interface A {
|
||||
fun test(foo: Int)
|
||||
}
|
||||
|
||||
class B(): A {
|
||||
override fun test(foo<caret>: Int) {
|
||||
println(foo) // not highlighted `foo`
|
||||
}
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
Value read (9: 17) println(foo) // not highlighted `foo`
|
||||
@@ -803,6 +803,12 @@ public class FindUsagesTestGenerated extends AbstractFindUsagesTest {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findParameterUsages/kotlinFunctionParameterUsages.0.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinHighlightParameterUsages.0.kt")
|
||||
public void testKotlinHighlightParameterUsages() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findParameterUsages/kotlinHighlightParameterUsages.0.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/findUsages/kotlin/findPrimaryConstructorUsages")
|
||||
|
||||
Reference in New Issue
Block a user