diff --git a/java/java-psi-impl/src/com/intellij/lang/java/lexer/JavaLexer.java b/java/java-psi-impl/src/com/intellij/lang/java/lexer/JavaLexer.java index b771724eacbe..297eb7f0cbb8 100644 --- a/java/java-psi-impl/src/com/intellij/lang/java/lexer/JavaLexer.java +++ b/java/java-psi-impl/src/com/intellij/lang/java/lexer/JavaLexer.java @@ -40,7 +40,11 @@ public final class JavaLexer extends LexerBase { level.isAtLeast(LanguageLevel.JDK_10) && VAR.contentEquals(id) || level.isAtLeast(LanguageLevel.JDK_15_PREVIEW) && RECORD.contentEquals(id) || level.isAtLeast(LanguageLevel.JDK_14) && YIELD.contentEquals(id) || - (level.isAtLeast(LanguageLevel.JDK_15_PREVIEW) && (level == LanguageLevel.JDK_X || level.isPreview()) && (SEALED.contentEquals(id) || PERMITS.contentEquals(id)))); + (isSealedAvailable(level) && (SEALED.contentEquals(id) || PERMITS.contentEquals(id)))); + } + + public static boolean isSealedAvailable(@NotNull LanguageLevel level) { + return level.isAtLeast(LanguageLevel.JDK_15_PREVIEW) && (level == LanguageLevel.JDK_X || level.isPreview()); } private final _JavaLexer myFlexLexer; diff --git a/java/java-psi-impl/src/com/intellij/lang/java/parser/DeclarationParser.java b/java/java-psi-impl/src/com/intellij/lang/java/parser/DeclarationParser.java index d71d4bf49af9..2bb4558eb8d6 100644 --- a/java/java-psi-impl/src/com/intellij/lang/java/parser/DeclarationParser.java +++ b/java/java-psi-impl/src/com/intellij/lang/java/parser/DeclarationParser.java @@ -4,6 +4,7 @@ package com.intellij.lang.java.parser; import com.intellij.core.JavaPsiBundle; import com.intellij.lang.PsiBuilder; import com.intellij.lang.PsiBuilderUtil; +import com.intellij.lang.java.lexer.JavaLexer; import com.intellij.openapi.util.Pair; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.JavaTokenType; @@ -434,13 +435,13 @@ public class DeclarationParser { } private static boolean isSealedToken(PsiBuilder builder, IElementType tokenType) { - return getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_15_PREVIEW) && + return JavaLexer.isSealedAvailable(getLanguageLevel(builder)) && tokenType == JavaTokenType.IDENTIFIER && PsiKeyword.SEALED.equals(builder.getTokenText()); } private static boolean isNonSealedToken(PsiBuilder builder, IElementType tokenType) { - if (!getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_15_PREVIEW) || + if (!JavaLexer.isSealedAvailable(getLanguageLevel(builder)) || tokenType != JavaTokenType.IDENTIFIER || !"non".equals(builder.getTokenText()) || builder.lookAhead(1) != JavaTokenType.MINUS ||