From bf4e3bdac934f6f0dab2ba5dd70ffa87caaa2476 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 14 Jul 2015 16:08:30 +0300 Subject: [PATCH] Minor: fix warnings in KotlinSmartStepIntoHandler --- .../debugger/KotlinSmartStepIntoHandler.kt | 69 +++++++------------ 1 file changed, 26 insertions(+), 43 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinSmartStepIntoHandler.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinSmartStepIntoHandler.kt index f5b05826132..89ecd27fa9d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinSmartStepIntoHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/KotlinSmartStepIntoHandler.kt @@ -16,56 +16,51 @@ package org.jetbrains.kotlin.idea.debugger -import com.intellij.debugger.actions.JvmSmartStepIntoHandler import com.intellij.debugger.SourcePosition -import com.intellij.debugger.actions.SmartStepTarget -import java.util.Collections +import com.intellij.debugger.actions.JvmSmartStepIntoHandler import com.intellij.debugger.actions.MethodSmartStepTarget -import com.intellij.util.containers.OrderedSet -import com.intellij.util.Range -import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.asJava.LightClassUtil -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import com.intellij.debugger.engine.MethodFilter +import com.intellij.debugger.actions.SmartStepTarget import com.intellij.debugger.engine.BasicStepMethodFilter import com.intellij.debugger.engine.DebugProcessImpl -import com.sun.jdi.Location -import com.intellij.psi.PsiMethod +import com.intellij.debugger.engine.MethodFilter import com.intellij.psi.PsiDocumentManager -import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.idea.util.application.runReadAction +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiMethod +import com.intellij.util.Range +import com.intellij.util.containers.OrderedSet +import com.sun.jdi.Location +import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.codeInsight.* +import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde +import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall public class KotlinSmartStepIntoHandler : JvmSmartStepIntoHandler() { override fun isAvailable(position: SourcePosition?) = position?.getFile() is JetFile override fun findSmartStepTargets(position: SourcePosition): List { - if (position.getLine() < 0) return Collections.emptyList() + if (position.getLine() < 0) return emptyList() val file = position.getFile() - val lineStart = CodeInsightUtils.getStartLineOffset(file, position.getLine()) - if (lineStart == null) return Collections.emptyList() + val lineStart = CodeInsightUtils.getStartLineOffset(file, position.getLine()) ?: return emptyList() - val elementAtOffset = file.findElementAt(lineStart) - if (elementAtOffset == null) return Collections.emptyList() + val elementAtOffset = file.findElementAt(lineStart) ?: return emptyList() val element = CodeInsightUtils.getTopmostElementAtOffset(elementAtOffset, lineStart) - if (element !is JetElement) return Collections.emptyList() + if (element !is JetElement) return emptyList() - val elementTextRange = element.getTextRange() - if (elementTextRange == null) return Collections.emptyList() + val elementTextRange = element.getTextRange() ?: return emptyList() - val doc = PsiDocumentManager.getInstance(file.getProject()).getDocument(file) - if (doc == null) return Collections.emptyList() + val doc = PsiDocumentManager.getInstance(file.getProject()).getDocument(file) ?: return emptyList() - val lines = Range(doc.getLineNumber(elementTextRange.getStartOffset()), doc.getLineNumber(elementTextRange.getEndOffset())) + val lines = Range(doc.getLineNumber(elementTextRange.getStartOffset()), doc.getLineNumber(elementTextRange.getEndOffset())) val bindingContext = element.analyze() val result = OrderedSet() @@ -159,8 +154,7 @@ public class KotlinSmartStepIntoHandler : JvmSmartStepIntoHandler() { } private fun recordFunction(expression: JetExpression) { - val resolvedCall = expression.getResolvedCall(bindingContext) - if (resolvedCall == null) return + val resolvedCall = expression.getResolvedCall(bindingContext) ?: return val descriptor = resolvedCall.getResultingDescriptor() if (descriptor is CallableMemberDescriptor) { @@ -196,8 +190,7 @@ public class KotlinSmartStepIntoHandler : JvmSmartStepIntoHandler() { val containingFile = runReadAction { stepTarget.resolvedElement.getContainingFile() } if (containingFile !is JetFile) return false - val positionManager = process.getPositionManager() - if (positionManager == null) return false + val positionManager = process.getPositionManager() ?: return false val classes = positionManager.getAllClasses(MockSourcePosition(_file = containingFile, _elementAt = stepTarget.resolvedElement)) @@ -208,16 +201,6 @@ public class KotlinSmartStepIntoHandler : JvmSmartStepIntoHandler() { } } - private fun getTopmostElementAtOffset(element: PsiElement, offset: Int): PsiElement? { - var resultElement: PsiElement? = element - while (resultElement?.getParent()?.getTextRange() != null && - resultElement?.getParent()?.getTextRange()!!.getStartOffset() >= offset) { - resultElement = resultElement!!.getParent() - } - - return resultElement - } - class KotlinMethodSmartStepTarget(val resolvedElement: JetElement, psiMethod: PsiMethod, label: String?,