mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[java-rd] IDEA-333104 fix cases when highlighting get null in parents
- fix comments - BasicJavaTokenSet is renamed to ParentAwareTokenSet and move to core - method `toTokenSet` is deleted, because it was the reason a lot of mistakes GitOrigin-RevId: b776be4f067d99e4a531d3622dfa9b9e8078c543
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7b31275d08
commit
4cf2e16167
@@ -2,12 +2,12 @@
|
||||
package com.intellij;
|
||||
|
||||
import com.intellij.lang.xml.XmlTokenElementMarkTypes;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
|
||||
|
||||
public interface BaseJavaJspElementType {
|
||||
BasicJavaTokenSet WHITE_SPACE_BIT_SET = BasicJavaTokenSet.orSet(
|
||||
BasicJavaTokenSet.create(TokenSet.WHITE_SPACE),
|
||||
BasicJavaTokenSet.create(XmlTokenElementMarkTypes.XML_WHITE_SPACE_MARK));
|
||||
ParentAwareTokenSet WHITE_SPACE_BIT_SET = ParentAwareTokenSet.orSet(
|
||||
ParentAwareTokenSet.create(TokenSet.WHITE_SPACE),
|
||||
ParentAwareTokenSet.create(XmlTokenElementMarkTypes.XML_WHITE_SPACE_MARK));
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -139,7 +139,7 @@ public abstract class AbstractBasicJavaTypedHandler extends TypedHandlerDelegate
|
||||
PsiDocumentManager.getInstance(project).commitDocument(doc);
|
||||
final PsiElement leaf = file.findElementAt(offset);
|
||||
if (BasicJavaAstTreeUtil.getParentOfType(leaf, BASIC_ARRAY_INITIALIZER_EXPRESSION, false,
|
||||
BasicJavaTokenSet.orSet(BasicJavaTokenSet.create(BASIC_CODE_BLOCK), MEMBER_SET)) != null) {
|
||||
ParentAwareTokenSet.orSet(ParentAwareTokenSet.create(BASIC_CODE_BLOCK), MEMBER_SET)) != null) {
|
||||
return Result.CONTINUE;
|
||||
}
|
||||
PsiElement st = leaf != null ? leaf.getParent() : null;
|
||||
@@ -168,7 +168,7 @@ public abstract class AbstractBasicJavaTypedHandler extends TypedHandlerDelegate
|
||||
// lambda
|
||||
if (prevLeaf != null && prevLeaf.getNode().getElementType() == JavaTokenType.ARROW) return true;
|
||||
// anonymous class
|
||||
BasicJavaTokenSet stopAt = BasicJavaTokenSet.orSet(MEMBER_SET, BasicJavaTokenSet.create(BASIC_CODE_BLOCK));
|
||||
ParentAwareTokenSet stopAt = ParentAwareTokenSet.orSet(MEMBER_SET, ParentAwareTokenSet.create(BASIC_CODE_BLOCK));
|
||||
if (BasicJavaAstTreeUtil.getParentOfType(prevLeaf, BASIC_NEW_EXPRESSION, true, stopAt) != null) return true;
|
||||
// local class
|
||||
if (prevLeaf != null && prevLeaf.getParent() != null && BasicJavaAstTreeUtil.is(prevLeaf.getNode(), JavaTokenType.IDENTIFIER) &&
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -177,7 +177,7 @@ public abstract class AbstractBasicJavadocTypedHandler extends TypedHandlerDeleg
|
||||
|
||||
// The contents of inline tags is not HTML, so the paired tag completion isn't appropriate there.
|
||||
if (BasicJavaAstTreeUtil.is(astNode, DOC_INLINE_TAG, DOC_SNIPPET_TAG) ||
|
||||
BasicJavaAstTreeUtil.getParentOfType(astNode, BasicJavaTokenSet.create(DOC_INLINE_TAG, DOC_SNIPPET_TAG)) != null) {
|
||||
BasicJavaAstTreeUtil.getParentOfType(astNode, ParentAwareTokenSet.create(DOC_INLINE_TAG, DOC_SNIPPET_TAG)) != null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -23,15 +23,15 @@ import static com.intellij.psi.impl.source.BasicJavaElementType.BASIC_LITERAL_EX
|
||||
import static com.intellij.psi.impl.source.BasicJavaElementType.REFERENCE_EXPRESSION_SET;
|
||||
|
||||
public class JavaQuoteHandler extends SimpleTokenSetQuoteHandler implements JavaLikeQuoteHandler, MultiCharQuoteHandler {
|
||||
private final BasicJavaTokenSet myConcatenableStrings = BasicJavaTokenSet.create(JavaTokenType.STRING_LITERAL);
|
||||
private final BasicJavaTokenSet myAppropriateElementTypeForLiteral = BasicJavaTokenSet.orSet(
|
||||
BasicJavaTokenSet.create(JavaDocTokenType.ALL_JAVADOC_TOKENS),
|
||||
BASIC_JAVA_COMMENT_OR_WHITESPACE_BIT_SET, BasicJavaTokenSet.create(BASIC_TEXT_LITERALS),
|
||||
BasicJavaTokenSet.create(JavaTokenType.SEMICOLON, JavaTokenType.COMMA, JavaTokenType.RPARENTH, JavaTokenType.RBRACKET,
|
||||
JavaTokenType.RBRACE));
|
||||
private final TokenSet myConcatenableStrings = TokenSet.create(JavaTokenType.STRING_LITERAL);
|
||||
private final ParentAwareTokenSet myAppropriateElementTypeForLiteral = ParentAwareTokenSet.orSet(
|
||||
ParentAwareTokenSet.create(JavaDocTokenType.ALL_JAVADOC_TOKENS),
|
||||
BASIC_JAVA_COMMENT_OR_WHITESPACE_BIT_SET, ParentAwareTokenSet.create(BASIC_TEXT_LITERALS),
|
||||
ParentAwareTokenSet.create(JavaTokenType.SEMICOLON, JavaTokenType.COMMA, JavaTokenType.RPARENTH, JavaTokenType.RBRACKET,
|
||||
JavaTokenType.RBRACE));
|
||||
|
||||
public JavaQuoteHandler() {
|
||||
super(BasicJavaTokenSet.orSet(BasicJavaTokenSet.create(BASIC_TEXT_LITERALS), BasicJavaTokenSet.create(JavaDocTokenType.DOC_TAG_VALUE_QUOTE)).toTokenSet());
|
||||
super(TokenSet.orSet(BASIC_TEXT_LITERALS, TokenSet.create(JavaDocTokenType.DOC_TAG_VALUE_QUOTE)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -73,7 +73,7 @@ public class JavaQuoteHandler extends SimpleTokenSetQuoteHandler implements Java
|
||||
@NotNull
|
||||
@Override
|
||||
public TokenSet getConcatenatableStringTokenTypes() {
|
||||
return myConcatenableStrings.toTokenSet();
|
||||
return myConcatenableStrings;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,15 +26,15 @@ import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.impl.source.BasicElementTypes;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static com.intellij.psi.impl.source.BasicJavaDocElementType.DOC_COMMENT;
|
||||
|
||||
public class CommentBreakerEnterProcessor implements ASTNodeEnterProcessor {
|
||||
|
||||
private final BasicJavaTokenSet myCommentTypes = BasicJavaTokenSet.orSet(
|
||||
BasicJavaTokenSet.create(BasicElementTypes.BASIC_JAVA_PLAIN_COMMENT_BIT_SET), BasicJavaTokenSet.create(DOC_COMMENT)
|
||||
private final ParentAwareTokenSet myCommentTypes = ParentAwareTokenSet.orSet(
|
||||
ParentAwareTokenSet.create(BasicElementTypes.BASIC_JAVA_PLAIN_COMMENT_BIT_SET), ParentAwareTokenSet.create(DOC_COMMENT)
|
||||
);
|
||||
|
||||
@Override
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -17,9 +17,9 @@ import org.jetbrains.annotations.Nullable;
|
||||
import static com.intellij.psi.impl.source.BasicJavaElementType.*;
|
||||
|
||||
public class LeaveCodeBlockEnterProcessor implements ASTNodeEnterProcessor {
|
||||
private final BasicJavaTokenSet CONTROL_FLOW_ELEMENT_TYPES =
|
||||
BasicJavaTokenSet.create(BASIC_IF_STATEMENT, BASIC_WHILE_STATEMENT, BASIC_DO_WHILE_STATEMENT, BASIC_FOR_STATEMENT,
|
||||
BASIC_FOREACH_STATEMENT);
|
||||
private final ParentAwareTokenSet CONTROL_FLOW_ELEMENT_TYPES =
|
||||
ParentAwareTokenSet.create(BASIC_IF_STATEMENT, BASIC_WHILE_STATEMENT, BASIC_DO_WHILE_STATEMENT, BASIC_FOR_STATEMENT,
|
||||
BASIC_FOREACH_STATEMENT);
|
||||
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
@@ -58,9 +58,9 @@ public class MissingLoopBodyFixer implements Fixer {
|
||||
}
|
||||
|
||||
private static ASTNode getLoopParent(@NotNull ASTNode element) {
|
||||
ASTNode statement = BasicJavaAstTreeUtil.getParentOfType(element, BasicJavaTokenSet.create(BASIC_FOREACH_STATEMENT,
|
||||
BASIC_FOR_STATEMENT,
|
||||
BASIC_WHILE_STATEMENT));
|
||||
ASTNode statement = BasicJavaAstTreeUtil.getParentOfType(element, ParentAwareTokenSet.create(BASIC_FOREACH_STATEMENT,
|
||||
BASIC_FOR_STATEMENT,
|
||||
BASIC_WHILE_STATEMENT));
|
||||
if (statement == null) return null;
|
||||
if (BasicJavaAstTreeUtil.is(statement, BASIC_FOREACH_STATEMENT)) {
|
||||
return isForEachApplicable(statement, element) ? statement : null;
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiJavaToken;
|
||||
import com.intellij.psi.TokenType;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -35,7 +35,7 @@ public class MissingReturnExpressionFixer implements Fixer {
|
||||
return;
|
||||
}
|
||||
|
||||
ASTNode parent = BasicJavaAstTreeUtil.getParentOfType(astNode, BasicJavaTokenSet.create(BASIC_CLASS_INITIALIZER, BASIC_METHOD));
|
||||
ASTNode parent = BasicJavaAstTreeUtil.getParentOfType(astNode, ParentAwareTokenSet.create(BASIC_CLASS_INITIALIZER, BASIC_METHOD));
|
||||
if (BasicJavaAstTreeUtil.is(parent, BASIC_METHOD)) {
|
||||
ASTNode type = BasicJavaAstTreeUtil.findChildByType(parent, BASIC_TYPE);
|
||||
if (type != null && !type.getText().equals("void")) {
|
||||
@@ -68,7 +68,7 @@ public class MissingReturnExpressionFixer implements Fixer {
|
||||
int offset = returnStatement.getTextRange().getEndOffset();
|
||||
final PsiElement psiMethod =
|
||||
BasicJavaAstTreeUtil.getParentOfType(BasicJavaAstTreeUtil.toPsi(returnStatement), BASIC_METHOD, true,
|
||||
BasicJavaTokenSet.create(BASIC_LAMBDA_EXPRESSION));
|
||||
ParentAwareTokenSet.create(BASIC_LAMBDA_EXPRESSION));
|
||||
ASTNode method = BasicJavaAstTreeUtil.toNode(psiMethod);
|
||||
ASTNode type = BasicJavaAstTreeUtil.findChildByType(method, BASIC_TYPE);
|
||||
if (method != null && type != null && type.getText().equals("void")) {
|
||||
|
||||
@@ -5,24 +5,24 @@ import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.impl.source.BasicElementTypes;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class JavaPairedBraceMatcher extends PairedBraceAndAnglesMatcher {
|
||||
|
||||
private static class Holder {
|
||||
private static final BasicJavaTokenSet TYPE_TOKENS =
|
||||
BasicJavaTokenSet.orSet(BaseJavaJspElementType.WHITE_SPACE_BIT_SET,
|
||||
BasicElementTypes.BASIC_JAVA_COMMENT_BIT_SET,
|
||||
BasicJavaTokenSet.create(JavaTokenType.IDENTIFIER, JavaTokenType.COMMA,
|
||||
JavaTokenType.AT,//anno
|
||||
JavaTokenType.RBRACKET, JavaTokenType.LBRACKET, //arrays
|
||||
JavaTokenType.QUEST, JavaTokenType.EXTENDS_KEYWORD, JavaTokenType.SUPER_KEYWORD));//wildcards
|
||||
private static final ParentAwareTokenSet TYPE_TOKENS =
|
||||
ParentAwareTokenSet.orSet(BaseJavaJspElementType.WHITE_SPACE_BIT_SET,
|
||||
BasicElementTypes.BASIC_JAVA_COMMENT_BIT_SET,
|
||||
ParentAwareTokenSet.create(JavaTokenType.IDENTIFIER, JavaTokenType.COMMA,
|
||||
JavaTokenType.AT,//anno
|
||||
JavaTokenType.RBRACKET, JavaTokenType.LBRACKET, //arrays
|
||||
JavaTokenType.QUEST, JavaTokenType.EXTENDS_KEYWORD, JavaTokenType.SUPER_KEYWORD));//wildcards
|
||||
}
|
||||
|
||||
public JavaPairedBraceMatcher() {
|
||||
super(new JavaBraceMatcher(), JavaLanguage.INSTANCE, JavaFileType.INSTANCE, Holder.TYPE_TOKENS.toTokenSet());
|
||||
super(new JavaBraceMatcher(), JavaLanguage.INSTANCE, JavaFileType.INSTANCE, Holder.TYPE_TOKENS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,11 +8,13 @@ import com.intellij.openapi.editor.highlighter.HighlighterIterator;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.LanguageFileType;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public abstract class PairedBraceAndAnglesMatcher extends PairedBraceMatcherAdapter {
|
||||
private final TokenSet myTokenSetAllowedInsideAngleBrackets;
|
||||
private final ParentAwareTokenSet myBasicTokenSetAllowedInsideAngleBrackets;
|
||||
private final LanguageFileType myFileType;
|
||||
|
||||
public PairedBraceAndAnglesMatcher(@NotNull PairedBraceMatcher matcher,
|
||||
@@ -21,6 +23,17 @@ public abstract class PairedBraceAndAnglesMatcher extends PairedBraceMatcherAdap
|
||||
@NotNull TokenSet tokenSetAllowedInsideAngleBrackets) {
|
||||
super(matcher, language);
|
||||
myTokenSetAllowedInsideAngleBrackets = tokenSetAllowedInsideAngleBrackets;
|
||||
myBasicTokenSetAllowedInsideAngleBrackets = null;
|
||||
myFileType = fileType;
|
||||
}
|
||||
|
||||
public PairedBraceAndAnglesMatcher(@NotNull PairedBraceMatcher matcher,
|
||||
@NotNull Language language,
|
||||
@NotNull LanguageFileType fileType,
|
||||
@NotNull ParentAwareTokenSet basicTokenSetAllowedInsideAngleBrackets) {
|
||||
super(matcher, language);
|
||||
myTokenSetAllowedInsideAngleBrackets = null;
|
||||
myBasicTokenSetAllowedInsideAngleBrackets = basicTokenSetAllowedInsideAngleBrackets;
|
||||
myFileType = fileType;
|
||||
}
|
||||
|
||||
@@ -75,7 +88,9 @@ public abstract class PairedBraceAndAnglesMatcher extends PairedBraceMatcherAdap
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!myTokenSetAllowedInsideAngleBrackets.contains(tokenType)) {
|
||||
if (
|
||||
(myTokenSetAllowedInsideAngleBrackets == null || !myTokenSetAllowedInsideAngleBrackets.contains(tokenType)) &&
|
||||
(myBasicTokenSetAllowedInsideAngleBrackets == null || !myBasicTokenSetAllowedInsideAngleBrackets.contains(tokenType))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,8 +12,8 @@ import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
|
||||
import com.intellij.psi.impl.source.BasicJavaTokenSet;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.ParentAwareTokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -29,9 +29,9 @@ public abstract class AbstractBasicJavadocHelper {
|
||||
|
||||
public static final Pair<JavadocParameterInfo, List<JavadocParameterInfo>> EMPTY
|
||||
= new Pair<>(null, Collections.emptyList());
|
||||
private static final @NotNull BasicJavaTokenSet TAG_TOKEN_SET = BasicJavaTokenSet.create(DOC_TAG,
|
||||
DOC_SNIPPET_TAG,
|
||||
DOC_INLINE_TAG);
|
||||
private static final @NotNull ParentAwareTokenSet TAG_TOKEN_SET = ParentAwareTokenSet.create(DOC_TAG,
|
||||
DOC_SNIPPET_TAG,
|
||||
DOC_INLINE_TAG);
|
||||
|
||||
protected AbstractBasicJavadocHelper() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user