IDEA-140341 Debugger stops in anonymous class constructor
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Fri, 15 May 2015 14:31:48 +0000 (17:31 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Fri, 15 May 2015 14:33:23 +0000 (17:33 +0300)
java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java

index b56bd09127092936223e05ea8a215bc9805bea35..eeb4ad5482fe5d0316283d1c35465f021b20b6cb 100644 (file)
@@ -67,6 +67,7 @@ import javax.swing.*;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.regex.Pattern;
 
 public class LineBreakpoint extends BreakpointWithHighlighter {
   private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.breakpoints.LineBreakpoint");
@@ -188,8 +189,16 @@ public class LineBreakpoint extends BreakpointWithHighlighter {
     updateUI();
   }
 
+  private static Pattern ourAnonymousPattern = Pattern.compile(".*\\$\\d*$");
+  private static boolean isAnonymousClass(ReferenceType classType) {
+    if (classType instanceof ClassType) {
+      return ourAnonymousPattern.matcher(classType.name()).matches();
+    }
+    return false;
+  }
+
   protected boolean acceptLocation(DebugProcessImpl debugProcess, ReferenceType classType, Location loc) {
-    return true;
+    return !(loc.method().isConstructor() && isAnonymousClass(classType));
   }
 
   private boolean isInScopeOf(DebugProcessImpl debugProcess, String className) {