From 08c21bf96fa9aef1f6d880adfb123a388be22ce5 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Wed, 10 Jun 2015 19:56:38 +0300 Subject: [PATCH] [JavaFormatter] Do not check if annotation is type annotation if next element is keyword. This change slightly improves formatting block building performance on our codebase(at least), since most of the annotations targets are methods and fields with visibility modifiers. --- .../psi/formatter/java/wrap/impl/JavaChildWrapArranger.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java b/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java index 0d05bd6aa79e..23914cb5fce8 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java @@ -31,6 +31,7 @@ import com.intellij.psi.impl.source.tree.ChildRole; import com.intellij.psi.impl.source.tree.CompositeElement; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -268,6 +269,8 @@ public class JavaChildWrapArranger { private static boolean isTypeAnnotationOrFalseIfDumb(@NotNull ASTNode child) { PsiElement node = child.getPsi(); + PsiElement next = PsiTreeUtil.skipSiblingsForward(node, PsiWhiteSpace.class, PsiAnnotation.class); + if (next instanceof PsiKeyword) return false; return !DumbService.isDumb(node.getProject()) && isTypeAnnotation(node); }