fixed breakpoints in lambdas inside local classes

This commit is contained in:
Egor.Ushakov
2015-07-23 16:20:01 +03:00
parent df1e9f196f
commit 4bd81f0d56
2 changed files with 11 additions and 5 deletions
@@ -476,10 +476,16 @@ public class JVMNameUtil {
@Nullable
public static String getClassVMName(@Nullable PsiClass containingClass) {
if (containingClass == null) return null;
// no support for local classes for now
if (containingClass == null || PsiUtil.isLocalClass(containingClass)) return null;
if (containingClass instanceof PsiAnonymousClass) {
return getClassVMName(PsiTreeUtil.getParentOfType(containingClass, PsiClass.class)) +
JavaAnonymousClassesHelper.getName((PsiAnonymousClass)containingClass);
String parentName = getClassVMName(PsiTreeUtil.getParentOfType(containingClass, PsiClass.class));
if (parentName == null) {
return null;
}
else {
return parentName + JavaAnonymousClassesHelper.getName((PsiAnonymousClass)containingClass);
}
}
return ClassUtil.getJVMClassName(containingClass);
}
@@ -213,8 +213,8 @@ public class PositionManagerImpl implements PositionManager, MultiRequestPositio
}
private PsiElement remapElement(PsiElement element) {
PsiClass aClass = getEnclosingClass(element);
if (!Comparing.equal(myExpectedClassName, JVMNameUtil.getClassVMName(aClass))) {
String name = JVMNameUtil.getClassVMName(getEnclosingClass(element));
if (name != null && !name.equals(myExpectedClassName)) {
return null;
}
PsiElement method = DebuggerUtilsEx.getContainingMethod(element);