From 4b8afb79ff0cff2e18b2f3e17300db70045a91e8 Mon Sep 17 00:00:00 2001 From: Kirill Smelov Date: Wed, 4 Aug 2021 09:59:57 +0300 Subject: [PATCH] WI-51002 Fetch all RegExpClassElement children as class elements instead of manually peeking by tokens To not miss potential candidates like RegExpPosixBracketExpression GitOrigin-RevId: f37553a211a5dc78163301e52f1f058852e03472 --- .../intellij/lang/regexp/RegExpElementTypes.java | 2 -- .../lang/regexp/psi/impl/RegExpClassImpl.java | 14 ++++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpElementTypes.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpElementTypes.java index 86df31eba369..aba92869a586 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpElementTypes.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpElementTypes.java @@ -44,6 +44,4 @@ public interface RegExpElementTypes { TokenSet ATOMS = TokenSet.create(CLOSURE, BOUNDARY, SIMPLE_CLASS, CLASS, CHAR, GROUP, PROPERTY, BACKREF, NAMED_GROUP_REF, CONDITIONAL, NAMED_CHARACTER, SET_OPTIONS); - - TokenSet CLASS_ELEMENTS = TokenSet.create(CHAR, CHAR_RANGE, SIMPLE_CLASS, CLASS, INTERSECTION, PROPERTY); } diff --git a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpClassImpl.java b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpClassImpl.java index c4a130238091..686f9a77e237 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpClassImpl.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpClassImpl.java @@ -16,7 +16,7 @@ package org.intellij.lang.regexp.psi.impl; import com.intellij.lang.ASTNode; -import org.intellij.lang.regexp.RegExpElementTypes; +import com.intellij.psi.util.PsiTreeUtil; import org.intellij.lang.regexp.RegExpTT; import org.intellij.lang.regexp.psi.RegExpClass; import org.intellij.lang.regexp.psi.RegExpClassElement; @@ -25,7 +25,9 @@ import org.jetbrains.annotations.NotNull; public class RegExpClassImpl extends RegExpElementImpl implements RegExpClass { - public RegExpClassImpl(ASTNode astNode) { + private static final RegExpClassElement[] EMPTY_CHILDREN = new RegExpClassElement[0]; + + public RegExpClassImpl(ASTNode astNode) { super(astNode); } @@ -37,12 +39,8 @@ public class RegExpClassImpl extends RegExpElementImpl implements RegExpClass { @Override public RegExpClassElement @NotNull [] getElements() { - final ASTNode[] nodes = getNode().getChildren(RegExpElementTypes.CLASS_ELEMENTS); - final RegExpClassElement[] e = new RegExpClassElement[nodes.length]; - for (int i = 0; i < e.length; i++) { - e[i] = (RegExpClassElement)nodes[i].getPsi(); - } - return e; + RegExpClassElement[] children = PsiTreeUtil.getChildrenOfType(this, RegExpClassElement.class); + return children != null ? children : EMPTY_CHILDREN; } @Override