Find Usages: Fix exception in the search of class with default parameters in primary constructor
This commit is contained in:
@@ -43,6 +43,7 @@ import com.intellij.find.findUsages.JavaFindUsagesHandlerFactory
|
|||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import com.intellij.psi.search.searches.MethodReferencesSearch
|
import com.intellij.psi.search.searches.MethodReferencesSearch
|
||||||
import com.intellij.util.CommonProcessors
|
import com.intellij.util.CommonProcessors
|
||||||
|
import org.jetbrains.kotlin.asJava.KotlinLightMethod
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
|
||||||
|
|
||||||
@@ -93,6 +94,7 @@ public class KotlinFindClassUsagesHandler(
|
|||||||
if (kotlinOptions.searchConstructorUsages) {
|
if (kotlinOptions.searchConstructorUsages) {
|
||||||
val constructors = classOrObject.toLightClass()?.getConstructors() ?: PsiMethod.EMPTY_ARRAY
|
val constructors = classOrObject.toLightClass()?.getConstructors() ?: PsiMethod.EMPTY_ARRAY
|
||||||
for (constructor in constructors) {
|
for (constructor in constructors) {
|
||||||
|
if (constructor !is KotlinLightMethod) continue
|
||||||
constructor.processDelegationCallConstructorUsages(constructor.getUseScope()) {
|
constructor.processDelegationCallConstructorUsages(constructor.getUseScope()) {
|
||||||
it.getCalleeExpression()?.getReference()?.let { KotlinFindUsagesHandler.processUsage(uniqueProcessor, it) }
|
it.getCalleeExpression()?.getReference()?.let { KotlinFindUsagesHandler.processUsage(uniqueProcessor, it) }
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// PSI_ELEMENT: org.jetbrains.kotlin.psi.JetClass
|
||||||
|
// OPTIONS: usages, constructorUsages
|
||||||
|
class <caret>A(a: Int = 1)
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
A(0)
|
||||||
|
A()
|
||||||
|
}
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
New instance creation (6: 5) A(0)
|
||||||
|
New instance creation (7: 5) A()
|
||||||
@@ -527,6 +527,12 @@ public class JetFindUsagesTestGenerated extends AbstractJetFindUsagesTest {
|
|||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findClassUsages/kotlinTraitDerivedTraits.0.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findClassUsages/kotlinTraitDerivedTraits.0.kt");
|
||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("primaryConstructorWithDefaultParams.0.kt")
|
||||||
|
public void testPrimaryConstructorWithDefaultParams() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findClassUsages/primaryConstructorWithDefaultParams.0.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("idea/testData/findUsages/kotlin/findFunctionUsages")
|
@TestMetadata("idea/testData/findUsages/kotlin/findFunctionUsages")
|
||||||
|
|||||||
Reference in New Issue
Block a user