From e5fcb9ea2b7e165899edbd1bdb124ebe350e2a99 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 2 Dec 2009 20:51:32 +0000 Subject: [PATCH] IDEADEV-41804 groovy: breakpoints in inner classes do not stop --- .../groovy/debugger/GroovyPositionManager.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyPositionManager.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyPositionManager.java index d8f89702b929..ddb3c8b3cf26 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyPositionManager.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyPositionManager.java @@ -65,8 +65,6 @@ public class GroovyPositionManager implements PositionManager { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.PositionManagerImpl"); private final DebugProcess myDebugProcess; - @NotNull - public static final Set GROOVY_EXTENSIONS = new java.util.HashSet(Arrays.asList("groovy", "gvy", "gy", "gsh")); public GroovyPositionManager(DebugProcess debugProcess) { myDebugProcess = debugProcess; @@ -157,7 +155,7 @@ public class GroovyPositionManager implements PositionManager { public String compute() { GroovyPsiElement sourceImage = findReferenceTypeSourceImage(position); if (sourceImage instanceof GrTypeDefinition) { - return ((GrTypeDefinition)sourceImage).getQualifiedName(); + return getClassNameForJvm((GrTypeDefinition)sourceImage); } else if (sourceImage == null) { return getScriptQualifiedName(position); } @@ -166,6 +164,15 @@ public class GroovyPositionManager implements PositionManager { }); } + private static String getClassNameForJvm(final PsiClass typeDefinition) { + final PsiClass psiClass = typeDefinition.getContainingClass(); + if (psiClass != null) { + return getClassNameForJvm(psiClass) + "$" + typeDefinition.getName(); + } + + return typeDefinition.getQualifiedName(); + } + @Nullable private static String getScriptQualifiedName(SourcePosition position) { PsiFile file = position.getFile(); @@ -293,7 +300,7 @@ public class GroovyPositionManager implements PositionManager { final String scriptName = getScriptQualifiedName(position); if (sourceImage instanceof GrTypeDefinition) { - String qName = ((GrTypeDefinition)sourceImage).getQualifiedName(); + String qName = getClassNameForJvm((GrTypeDefinition)sourceImage); if (qName != null) return myDebugProcess.getVirtualMachineProxy().classesByName(qName); } else if (sourceImage == null) { if (scriptName != null) return myDebugProcess.getVirtualMachineProxy().classesByName(scriptName);