mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 11:20:44 +07:00
[java] IDEA-345355 Refactor HighlightingFeature (in progress)
Replace explicit language levels with features in parser GitOrigin-RevId: 270053606902ecb8b951ca55618e422ef6482c7b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ea2b70a2d1
commit
5715a9cac5
+5
-4
@@ -5,6 +5,7 @@ import com.intellij.core.JavaPsiBundle;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.PsiBuilderUtil;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.PsiKeyword;
|
||||
@@ -409,19 +410,19 @@ public class BasicDeclarationParser {
|
||||
if (tokenType == JavaTokenType.IDENTIFIER && PsiKeyword.RECORD.equals(builder.getTokenText()) &&
|
||||
builder.lookAhead(1) == JavaTokenType.IDENTIFIER) {
|
||||
LanguageLevel level = getLanguageLevel(builder);
|
||||
return level.isAtLeast(LanguageLevel.JDK_16);
|
||||
return JavaFeature.RECORDS.isSufficient(level);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isSealedToken(PsiBuilder builder, IElementType tokenType) {
|
||||
return getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_17) &&
|
||||
return JavaFeature.SEALED_CLASSES.isSufficient(getLanguageLevel(builder)) &&
|
||||
tokenType == JavaTokenType.IDENTIFIER &&
|
||||
PsiKeyword.SEALED.equals(builder.getTokenText());
|
||||
}
|
||||
|
||||
static boolean isNonSealedToken(PsiBuilder builder, IElementType tokenType) {
|
||||
if (!getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_17) ||
|
||||
if (!JavaFeature.SEALED_CLASSES.isSufficient(getLanguageLevel(builder)) ||
|
||||
tokenType != JavaTokenType.IDENTIFIER ||
|
||||
!"non".equals(builder.getTokenText()) ||
|
||||
builder.lookAhead(1) != JavaTokenType.MINUS ||
|
||||
@@ -703,7 +704,7 @@ public class BasicDeclarationParser {
|
||||
@Nullable
|
||||
public PsiBuilder.Marker parseLambdaParameter(PsiBuilder builder, boolean typed) {
|
||||
int flags = BasicReferenceParser.ELLIPSIS;
|
||||
if (getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_11)) flags |= BasicReferenceParser.VAR_TYPE;
|
||||
if (JavaFeature.VAR_LAMBDA_PARAMETER.isSufficient(getLanguageLevel(builder))) flags |= BasicReferenceParser.VAR_TYPE;
|
||||
return parseListElement(builder, typed, flags, myJavaElementTypeContainer.PARAMETER);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ package com.intellij.lang.java.parser;
|
||||
|
||||
import com.intellij.core.JavaPsiBundle;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.PsiKeyword;
|
||||
import com.intellij.psi.impl.source.AbstractBasicJavaElementTypeFactory;
|
||||
@@ -95,7 +95,7 @@ public class BasicReferenceParser {
|
||||
builder.lookAhead(1) != JavaTokenType.DOT &&
|
||||
builder.lookAhead(1) != JavaTokenType.COLON &&
|
||||
PsiKeyword.VAR.equals(builder.getTokenText()) &&
|
||||
getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_10)) {
|
||||
JavaFeature.LVTI.isSufficient(getLanguageLevel(builder))) {
|
||||
builder.remapCurrentToken(tokenType = JavaTokenType.VAR_KEYWORD);
|
||||
}
|
||||
else if (tokenType == JavaTokenType.VAR_KEYWORD && !isSet(flags, VAR_TYPE)) {
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@ import com.intellij.core.JavaPsiBundle;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.WhitespacesBinders;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.PsiKeyword;
|
||||
import com.intellij.psi.impl.source.AbstractBasicJavaElementTypeFactory;
|
||||
@@ -276,7 +276,7 @@ public class BasicStatementParser {
|
||||
private static boolean isStmtYieldToken(@NotNull PsiBuilder builder, IElementType tokenType) {
|
||||
if (!(tokenType == JavaTokenType.IDENTIFIER &&
|
||||
PsiKeyword.YIELD.equals(builder.getTokenText()) &&
|
||||
getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_14))) {
|
||||
JavaFeature.SWITCH_EXPRESSION.isSufficient(getLanguageLevel(builder)))) {
|
||||
return false;
|
||||
}
|
||||
// we prefer to parse it as yield stmt wherever possible (even in incomplete syntax)
|
||||
@@ -564,7 +564,7 @@ public class BasicStatementParser {
|
||||
builder.advanceLexer();
|
||||
|
||||
if (isCase) {
|
||||
boolean patternsAllowed = getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_17);
|
||||
boolean patternsAllowed = JavaFeature.PATTERNS_IN_SWITCH.isSufficient(getLanguageLevel(builder));
|
||||
PsiBuilder.Marker list = builder.mark();
|
||||
do {
|
||||
Pair<PsiBuilder.Marker, Boolean> markerAndIsExpression = parseCaseLabel(builder);
|
||||
|
||||
Reference in New Issue
Block a user