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) { private fun searchNamedArguments(parameter: JetParameter, queryParameters: ReferencesSearch.SearchParameters) {
val parameterName = parameter.name ?: return
val function = parameter.ownerFunction ?: return val function = parameter.ownerFunction ?: return
if (function.nameAsName?.isSpecial ?: true) return if (function.nameAsName?.isSpecial ?: true) return
val project = function.project val project = function.project
@@ -83,7 +84,7 @@ public class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, Referenc
namedArgsScope = GlobalSearchScope.filesScope(project, filesWithFunctionName.asList()) namedArgsScope = GlobalSearchScope.filesScope(project, filesWithFunctionName.asList())
} }
queryParameters.optimizer.searchWord(parameter.name!!, queryParameters.optimizer.searchWord(parameterName,
namedArgsScope, namedArgsScope,
KOTLIN_NAMED_ARGUMENT_SEARCH_CONTEXT, KOTLIN_NAMED_ARGUMENT_SEARCH_CONTEXT,
true, true,
@@ -251,6 +251,8 @@ class PropertyUsagesSearchHelper(
override fun makeItemList(target: UsagesSearchTarget<JetNamedDeclaration>): List<UsagesSearchRequestItem> { override fun makeItemList(target: UsagesSearchTarget<JetNamedDeclaration>): List<UsagesSearchRequestItem> {
val element = target.element val element = target.element
if (element is JetParameter) { if (element is JetParameter) {
val parameterName = element.name ?: return emptyList()
val realUsagesScope = element.useScope and target.effectiveScope val realUsagesScope = element.useScope and target.effectiveScope
val realUsagesTarget = target.withScope(realUsagesScope) val realUsagesTarget = target.withScope(realUsagesScope)
val realUsagesFilter = makeFilter(target) and !(PsiReference::isNamedArgumentUsage).searchFilter val realUsagesFilter = makeFilter(target) and !(PsiReference::isNamedArgumentUsage).searchFilter
@@ -271,10 +273,10 @@ class PropertyUsagesSearchHelper(
scope = JetSourceFilterScope.kotlinSourcesAndLibraries(scope, element.project) 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 additionalFilter2 = AdditionalFileFilter(function.name!!, UsageSearchContext.IN_CODE, true)
val namedArgsRequest = UsagesSearchRequestItem(target.withScope(scope), val namedArgsRequest = UsagesSearchRequestItem(target.withScope(scope),
listOf(element.name!!), listOf(parameterName),
(PsiReference::isNamedArgumentUsage).searchFilter and makeFilter(target), (PsiReference::isNamedArgumentUsage).searchFilter and makeFilter(target),
additionalFileFilters = listOf(additionalFilter1, additionalFilter2)) additionalFileFilters = listOf(additionalFilter1, additionalFilter2))
return listOf(realUsagesRequest, namedArgsRequest) return listOf(realUsagesRequest, namedArgsRequest)