Fix KNPE during lookup items calculation (EA-130318)

This commit is contained in:
Andrey Uskov
2018-12-24 20:50:03 +03:00
parent 95caabf22f
commit 9ec8ec4f3d
@@ -46,21 +46,21 @@ internal class ParameterNameExpression(
} }
override fun calculateResult(context: ExpressionContext?): Result? { override fun calculateResult(context: ExpressionContext?): Result? {
val lookupItems = calculateLookupItems(context)!! val lookupItems = calculateLookupItems(context) ?: return null
return TextResult(if (lookupItems.isEmpty()) "" else lookupItems.first().lookupString) return TextResult(if (lookupItems.isEmpty()) "" else lookupItems.first().lookupString)
} }
override fun calculateQuickResult(context: ExpressionContext?) = calculateResult(context) override fun calculateQuickResult(context: ExpressionContext?) = calculateResult(context)
override fun calculateLookupItems(context: ExpressionContext?): Array<LookupElement>? { override fun calculateLookupItems(context: ExpressionContext?): Array<LookupElement>? {
context!! context ?: return null
val names = LinkedHashSet(this.names.toList()) val names = LinkedHashSet(this.names.toList())
// find the parameter list // find the parameter list
val project = context.project!! val project = context.project ?: return null
val offset = context.startOffset val offset = context.startOffset
PsiDocumentManager.getInstance(project).commitAllDocuments() PsiDocumentManager.getInstance(project).commitAllDocuments()
val editor = context.editor!! val editor = context.editor ?: return null
val file = PsiDocumentManager.getInstance(project).getPsiFile(editor.document) as KtFile val file = PsiDocumentManager.getInstance(project).getPsiFile(editor.document) as KtFile
val elementAt = file.findElementAt(offset) val elementAt = file.findElementAt(offset)
val declaration = PsiTreeUtil.getParentOfType(elementAt, KtFunction::class.java, KtClass::class.java) ?: return arrayOf() val declaration = PsiTreeUtil.getParentOfType(elementAt, KtFunction::class.java, KtClass::class.java) ?: return arrayOf()