diff --git a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/smartStepInto/KotlinMethodSmartStepIntoTarget.kt b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/smartStepInto/KotlinMethodSmartStepIntoTarget.kt index e191b722030..c7c3465e6af 100644 --- a/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/smartStepInto/KotlinMethodSmartStepIntoTarget.kt +++ b/idea/jvm-debugger/jvm-debugger-core/src/org/jetbrains/kotlin/idea/debugger/stepping/smartStepInto/KotlinMethodSmartStepIntoTarget.kt @@ -11,6 +11,7 @@ import com.intellij.util.Range import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.decompiler.navigation.SourceNavigationHelper import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.psi.KtDeclaration @@ -21,11 +22,13 @@ import javax.swing.Icon class KotlinMethodSmartStepTarget( descriptor: CallableMemberDescriptor, - val declaration: KtDeclaration?, + declaration: KtDeclaration?, label: String, highlightElement: PsiElement, lines: Range ) : SmartStepTarget(label, highlightElement, false, lines) { + val declaration = declaration?.let(SourceNavigationHelper::getNavigationElement) + val isInvoke = descriptor is FunctionInvokeDescriptor init { diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinSteppingTestGenerated.java b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinSteppingTestGenerated.java index 4d3270cfeb8..255e08dc743 100644 --- a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinSteppingTestGenerated.java +++ b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinSteppingTestGenerated.java @@ -1261,6 +1261,11 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest { runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/smartStepIntoWithOverrides.kt"); } + @TestMetadata("stepIntoLibWithSources.kt") + public void testStepIntoLibWithSources() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.kt"); + } + @TestMetadata("stepIntoStdlibInlineFun2step.kt") public void testStepIntoStdlibInlineFun2step() throws Exception { runTest("idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoStdlibInlineFun2step.kt"); diff --git a/idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.kt b/idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.kt new file mode 100644 index 00000000000..47c41a8d542 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.kt @@ -0,0 +1,10 @@ +package stepIntoLibWithSources + +import java.io.StringReader + +fun main() { + //Breakpoint! + val text = StringReader("OK").readText() +} + +// SMART_STEP_INTO_BY_INDEX: 2 \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.out b/idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.out new file mode 100644 index 00000000000..e9f55f375a6 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-test/testData/stepping/custom/stepIntoLibWithSources.out @@ -0,0 +1,8 @@ +LineBreakpoint created at stepIntoLibWithSources.kt:7 +Run Java +Connected to the target VM +stepIntoLibWithSources.kt:7 +ReadWrite.!EXT! +Disconnected from the target VM + +Process finished with exit code 0