KT-8718 KNPE at PropertyUsagesSearchHelper.makeItemList() on erasing parameter name

#KT-8718 Fixed
This commit is contained in:
Valentin Kipyatkov
2015-08-07 19:35:08 +03:00
parent 1cfdbdea82
commit c943ec104d
2 changed files with 6 additions and 3 deletions
@@ -70,6 +70,7 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
}
private fun searchNamedArguments(parameter: JetParameter, queryParameters: ReferencesSearch.SearchParameters) {
val parameterName = parameter.name ?: return
val function = parameter.ownerFunction ?: return
if (function.nameAsName?.isSpecial ?: true) return
val project = function.project
@@ -83,7 +84,7 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
namedArgsScope = GlobalSearchScope.filesScope(project, filesWithFunctionName.asList())
}
queryParameters.optimizer.searchWord(parameter.name!!,
queryParameters.optimizer.searchWord(parameterName,
namedArgsScope,
KOTLIN_NAMED_ARGUMENT_SEARCH_CONTEXT,
true,
@@ -251,6 +251,8 @@ class PropertyUsagesSearchHelper(
override fun makeItemList(target: UsagesSearchTarget<JetNamedDeclaration>): List<UsagesSearchRequestItem> {
val element = target.element
if (element is JetParameter) {
val parameterName = element.name ?: return emptyList()
val realUsagesScope = element.useScope and target.effectiveScope
val realUsagesTarget = target.withScope(realUsagesScope)
val realUsagesFilter = makeFilter(target) and !(PsiReference::isNamedArgumentUsage).searchFilter
@@ -271,10 +273,10 @@ class PropertyUsagesSearchHelper(
scope = JetSourceFilterScope.kotlinSourcesAndLibraries(scope, element.project)
}
val additionalFilter1 = AdditionalFileFilter(element.name!!, KOTLIN_NAMED_ARGUMENT_SEARCH_CONTEXT, true)
val additionalFilter1 = AdditionalFileFilter(parameterName, KOTLIN_NAMED_ARGUMENT_SEARCH_CONTEXT, true)
val additionalFilter2 = AdditionalFileFilter(function.name!!, UsageSearchContext.IN_CODE, true)
val namedArgsRequest = UsagesSearchRequestItem(target.withScope(scope),
listOf(element.name!!),
listOf(parameterName),
(PsiReference::isNamedArgumentUsage).searchFilter and makeFilter(target),
additionalFileFilters = listOf(additionalFilter1, additionalFilter2))
return listOf(realUsagesRequest, namedArgsRequest)