diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPassFactory.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPassFactory.java index 49d8c2e34044..985481c1ac5d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPassFactory.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterHintsPassFactory.java @@ -26,7 +26,6 @@ import com.intellij.openapi.editor.Inlay; import com.intellij.openapi.editor.VisualPosition; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.progress.ProgressIndicatorProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.psi.*; @@ -67,70 +66,20 @@ public class ParameterHintsPassFactory extends AbstractProjectComponent implemen myAnnotations.clear(); if (!isEnabled() || !(myFile instanceof PsiJavaFile)) return; PsiJavaFile file = (PsiJavaFile) myFile; - - PsiClass[] classes = file.getClasses(); - for (PsiClass aClass : classes) { - ProgressIndicatorProvider.checkCanceled(); - addElementsToFold(aClass); - } + + SyntaxTraverser.psiTraverser(file).forEach(element -> process(element)); } private static boolean isEnabled() { return EditorSettingsExternalizable.getInstance().isShowParameterNameHints(); } - private void addElementsToFold(PsiClass aClass) { - PsiElement[] children = aClass.getChildren(); - for (PsiElement child : children) { - ProgressIndicatorProvider.checkCanceled(); - - if (child instanceof PsiMethod) { - PsiMethod method = (PsiMethod)child; - PsiCodeBlock body = method.getBody(); - if (body != null) { - addCodeBlockFolds(body); - } - } - else if (child instanceof PsiField) { - PsiField field = (PsiField)child; - PsiExpression initializer = field.getInitializer(); - if (initializer != null) { - addCodeBlockFolds(initializer); - } else if (field instanceof PsiEnumConstant) { - addCodeBlockFolds(field); - } - } - else if (child instanceof PsiClassInitializer) { - PsiClassInitializer initializer = (PsiClassInitializer)child; - addCodeBlockFolds(initializer); - } - else if (child instanceof PsiClass) { - addElementsToFold((PsiClass)child); - } + private void process(PsiElement child) { + if (child instanceof PsiCallExpression) { + inlineLiteralArgumentsNames((PsiCallExpression)child); } } - - private void addCodeBlockFolds(PsiElement scope) { - scope.accept(new JavaRecursiveElementWalkingVisitor() { - @Override - public void visitClass(PsiClass aClass) { - addElementsToFold(aClass); - } - - @Override - public void visitMethodCallExpression(PsiMethodCallExpression expression) { - inlineLiteralArgumentsNames(expression); - super.visitMethodCallExpression(expression); - } - - @Override - public void visitNewExpression(PsiNewExpression expression) { - inlineLiteralArgumentsNames(expression); - super.visitNewExpression(expression); - } - }); - } - + private void inlineLiteralArgumentsNames(@NotNull PsiCallExpression expression) { ParameterNameHintsManager manager = new ParameterNameHintsManager(expression); for (InlayInfo info : manager.getDescriptors()) {