anonymous parameters of anonymous classes were skipped

This commit is contained in:
Konstantin Bulenkov
2012-04-04 11:19:20 +02:00
parent cbefa54660
commit 04b46f7924
2 changed files with 21 additions and 4 deletions
@@ -16,9 +16,7 @@
package com.intellij.ide.util;
import com.intellij.openapi.util.Key;
import com.intellij.psi.JavaRecursiveElementWalkingVisitor;
import com.intellij.psi.PsiAnonymousClass;
import com.intellij.psi.PsiClass;
import com.intellij.psi.*;
import com.intellij.psi.util.CachedValue;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
@@ -49,6 +47,19 @@ public class JavaAnonymousClassesHelper {
@Override
public void visitAnonymousClass(PsiAnonymousClass aClass) {
final PsiExpressionList arguments = aClass.getArgumentList();
if (arguments != null) {
for (PsiExpression expression : arguments.getExpressions()) {
expression.acceptChildren(new JavaRecursiveElementVisitor() {
@Override
public void visitAnonymousClass(PsiAnonymousClass aClass) {
index++;
map.put(aClass, "$" + String.valueOf(index));
}
});
}
}
index++;
map.put(aClass, "$" + String.valueOf(index));
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 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.
@@ -37,6 +37,12 @@ public class JavaAnonymousClassesProvider implements AnonymousElementProvider {
element.accept(new JavaRecursiveElementWalkingVisitor() {
@Override
public void visitAnonymousClass(PsiAnonymousClass aClass) {
final PsiExpressionList arguments = aClass.getArgumentList();
if (arguments != null) {
for (PsiExpression expression : arguments.getExpressions()) {
visitExpression(expression);
}
}
elements.add(aClass);
}