From 4448cabea29153e093310aeb9a4eef9d997a3cbe Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 5 Feb 2015 12:46:21 +0300 Subject: [PATCH] smart step into an anonymous class while debugging decompiled code --- .../src/com/intellij/debugger/engine/PositionManagerImpl.java | 2 +- .../openapi/src/com/intellij/debugger/SourcePosition.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java index 5e4fbfb5ebee..3cdc27b07146 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java @@ -363,7 +363,7 @@ public class PositionManagerImpl implements PositionManager { continue; } int locationLine = lnumber - 1; - PsiFile psiFile = position.getFile(); + PsiFile psiFile = position.getFile().getOriginalFile(); if (psiFile instanceof PsiCompiledFile) { locationLine = bytecodeToSourceLine(psiFile, locationLine); if (locationLine < 0) continue; diff --git a/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java b/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java index 895e3da0385a..fc13858daac9 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java +++ b/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java @@ -168,6 +168,9 @@ public abstract class SourcePosition implements Navigatable{ Document document = null; try { document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file); + if (document == null) { // may be decompiled psi - try to get document for the original file + document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file.getOriginalFile()); + } } catch (Throwable e) { LOG.error(e);