Find Usages: Fix exception in the search of class with default parameters in primary constructor

This commit is contained in:
Alexey Sedunov
2015-03-27 16:23:22 +03:00
parent 0a93cfc9c0
commit 11675322ee
4 changed files with 18 additions and 0 deletions
@@ -43,6 +43,7 @@ import com.intellij.find.findUsages.JavaFindUsagesHandlerFactory
import com.intellij.psi.PsiMethod
import com.intellij.psi.search.searches.MethodReferencesSearch
import com.intellij.util.CommonProcessors
import org.jetbrains.kotlin.asJava.KotlinLightMethod
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
@@ -93,6 +94,7 @@ public class KotlinFindClassUsagesHandler(
if (kotlinOptions.searchConstructorUsages) {
val constructors = classOrObject.toLightClass()?.getConstructors() ?: PsiMethod.EMPTY_ARRAY
for (constructor in constructors) {
if (constructor !is KotlinLightMethod) continue
constructor.processDelegationCallConstructorUsages(constructor.getUseScope()) {
it.getCalleeExpression()?.getReference()?.let { KotlinFindUsagesHandler.processUsage(uniqueProcessor, it) }
}
@@ -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()
}
@@ -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");
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")