IDEA-133881 Debugger will not stop on a breakpoint in a method of an inner class of an anonymous - fixes after review

This commit is contained in:
Egor.Ushakov
2015-02-09 18:55:34 +03:00
parent f5aeb4b409
commit c67a992230
2 changed files with 19 additions and 23 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -249,13 +249,13 @@ public class JVMNameUtil {
}
public static JVMName getJVMQualifiedName(PsiClass psiClass) {
if (!PsiUtil.isLocalOrAnonymousClass(psiClass)) {
final String name = getNonAnonymousClassName(psiClass);
if (name != null) {
return getJVMRawText(name);
}
final String name = getNonAnonymousClassName(psiClass);
if (name != null) {
return getJVMRawText(name);
}
else {
return new JVMClassAt(SourcePosition.createFromElement(psiClass));
}
return new JVMClassAt(SourcePosition.createFromElement(psiClass));
}
@Nullable
@@ -264,17 +264,18 @@ public class JVMNameUtil {
if (psiClass == null) {
return null;
}
if (!PsiUtil.isLocalOrAnonymousClass(psiClass)) {
final String name = getNonAnonymousClassName(psiClass);
if (name != null) {
return getJVMRawText(name);
}
final String name = getNonAnonymousClassName(psiClass);
if (name != null) {
return getJVMRawText(name);
}
return new JVMClassAt(pos);
}
@Nullable
public static String getNonAnonymousClassName(PsiClass aClass) {
if (PsiUtil.isLocalOrAnonymousClass(aClass)) {
return null;
}
String name = aClass.getName();
if (name == null) {
return null;
@@ -84,7 +84,8 @@ public class PositionManagerImpl implements PositionManager {
return;
}
if (!classHasName(psiClass)) {
String className = JVMNameUtil.getNonAnonymousClassName(psiClass);
if (className == null) {
final PsiClass parent = JVMNameUtil.getTopLevelParentClass(psiClass);
if (parent == null) {
@@ -107,7 +108,7 @@ public class PositionManagerImpl implements PositionManager {
});
}
else {
waitPrepareFor.set(JVMNameUtil.getNonAnonymousClassName(psiClass));
waitPrepareFor.set(className);
waitRequestor.set(requestor);
}
}
@@ -118,10 +119,6 @@ public class PositionManagerImpl implements PositionManager {
return myDebugProcess.getRequestsManager().createClassPrepareRequest(waitRequestor.get(), waitPrepareFor.get());
}
private static boolean classHasName(PsiClass psiClass) {
return !PsiUtil.isLocalOrAnonymousClass(psiClass) && JVMNameUtil.getNonAnonymousClassName(psiClass) != null;
}
public SourcePosition getSourcePosition(final Location location) throws NoDataException {
DebuggerManagerThreadImpl.assertIsManagerThread();
if(location == null) {
@@ -244,7 +241,8 @@ public class PositionManagerImpl implements PositionManager {
final PsiClass psiClass = JVMNameUtil.getClassAt(position);
if (psiClass != null) {
classAtPositionRef.set(psiClass);
if (!classHasName(psiClass)) {
String className = JVMNameUtil.getNonAnonymousClassName(psiClass);
if (className == null) {
isLocalOrAnonymous.set(Boolean.TRUE);
final PsiClass topLevelClass = JVMNameUtil.getTopLevelParentClass(psiClass);
if (topLevelClass != null) {
@@ -259,10 +257,7 @@ public class PositionManagerImpl implements PositionManager {
}
}
else {
final String className = JVMNameUtil.getNonAnonymousClassName(psiClass);
if (className != null) {
baseClassNameRef.set(className);
}
baseClassNameRef.set(className);
}
}
}