From fe553edfb45eaec6db42600c52f8e790391e48ce Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 19 Mar 2015 19:35:57 +0300 Subject: [PATCH] References Search: Add extension which looks for constructor usages in delegation calls --- idea/src/META-INF/plugin.xml | 1 + ...structorDelegationCallReferenceSearcher.kt | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index f23133dfe29..d707bab0997 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -448,6 +448,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt new file mode 100644 index 00000000000..81119a2ed45 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinConstructorDelegationCallReferenceSearcher.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.search.ideaExtensions + +import com.intellij.openapi.application.QueryExecutorBase +import com.intellij.psi.PsiReference +import com.intellij.psi.search.searches.MethodReferencesSearch.SearchParameters +import com.intellij.util.Processor +import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages + +public class KotlinConstructorDelegationCallReferenceSearcher() : QueryExecutorBase(true) { + override fun processQuery(queryParameters: SearchParameters, consumer: Processor) { + val method = queryParameters.getMethod() + if (!method.isConstructor()) return + + method.processDelegationCallConstructorUsages(method.getUseScope()) { + it.getCalleeExpression()?.getReference()?.let { consumer.process(it) } + } + } +} \ No newline at end of file