GitOrigin-RevId: 6fa4f979e0a6641885e2225eb985b13713373ac5
This commit is contained in:
Vladimir Krivosheev
2024-12-26 14:56:01 +00:00
committed by intellij-monorepo-bot
parent e82d6f4b86
commit 051ed2529b
2577 changed files with 12644 additions and 24993 deletions
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.ide.highlighter;
import com.intellij.core.JavaPsiBundle;
@@ -33,9 +33,8 @@ public final class JavaModuleFileType extends LanguageFileType {
return JavaFileType.DEFAULT_EXTENSION;
}
@Nls
@Override
public @NotNull String getDisplayName() {
public @Nls @NotNull String getDisplayName() {
return JavaPsiBundle.message("filetype.java.module.display.name");
}
@@ -395,9 +395,8 @@ public class BasicJavaLexer extends LexerBase {
return (char)result;
}
@NotNull
@Override
public CharSequence getBufferSequence() {
public @NotNull CharSequence getBufferSequence() {
return myBuffer;
}
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.lang.java.lexer;
import com.intellij.lexer.*;
@@ -55,9 +55,8 @@ public class JavaDocLexer extends MergingLexerAdapter {
return myState;
}
@NotNull
@Override
public CharSequence getBufferSequence() {
public @NotNull CharSequence getBufferSequence() {
return myBuffer;
}
@@ -50,7 +50,7 @@ public class BasicDeclarationParser {
private final AbstractBasicJavaElementTypeFactory.JavaElementTypeContainer myJavaElementTypeContainer;
private final WhiteSpaceAndCommentSetHolder myWhiteSpaceAndCommentSetHolder = WhiteSpaceAndCommentSetHolder.INSTANCE;
public BasicDeclarationParser(@NotNull final BasicJavaParser javaParser) {
public BasicDeclarationParser(final @NotNull BasicJavaParser javaParser) {
myParser = javaParser;
myJavaElementTypeContainer = javaParser.getJavaElementTypeFactory().getContainer();
TYPE_START = TokenSet.orSet(
@@ -74,11 +74,10 @@ public class BasicDeclarationParser {
expectOrError(builder, JavaTokenType.RBRACE, "expected.rbrace");
}
@Nullable
private PsiBuilder.Marker parseClassFromKeyword(PsiBuilder builder,
PsiBuilder.Marker declaration,
boolean isAnnotation,
BaseContext context) {
private @Nullable PsiBuilder.Marker parseClassFromKeyword(PsiBuilder builder,
PsiBuilder.Marker declaration,
boolean isAnnotation,
BaseContext context) {
IElementType keywordTokenType = builder.getTokenType();
final boolean isRecord = isRecordToken(builder, keywordTokenType);
if (isRecord) {
@@ -184,8 +183,7 @@ public class BasicDeclarationParser {
}
}
@Nullable
public PsiBuilder.Marker parseEnumConstant(final PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseEnumConstant(final PsiBuilder builder) {
final PsiBuilder.Marker constant = builder.mark();
parseModifierList(builder);
@@ -255,8 +253,7 @@ public class BasicDeclarationParser {
}
}
@Nullable
public PsiBuilder.Marker parse(final @NotNull PsiBuilder builder, final BaseContext context) {
public @Nullable PsiBuilder.Marker parse(final @NotNull PsiBuilder builder, final BaseContext context) {
IElementType tokenType = builder.getTokenType();
if (tokenType == null) return null;
@@ -458,13 +455,11 @@ public class BasicDeclarationParser {
return isNonSealed;
}
@NotNull
public Pair<PsiBuilder.Marker, Boolean> parseModifierList(final PsiBuilder builder) {
public @NotNull Pair<PsiBuilder.Marker, Boolean> parseModifierList(final PsiBuilder builder) {
return parseModifierList(builder, BASIC_MODIFIER_BIT_SET);
}
@NotNull
public Pair<PsiBuilder.Marker, Boolean> parseModifierList(PsiBuilder builder, TokenSet modifiers) {
public @NotNull Pair<PsiBuilder.Marker, Boolean> parseModifierList(PsiBuilder builder, TokenSet modifiers) {
final PsiBuilder.Marker modList = builder.mark();
boolean isEmpty = true;
@@ -523,8 +518,7 @@ public class BasicDeclarationParser {
return parseMethodBody(builder, declaration, anno);
}
@NotNull
private PsiBuilder.Marker parseMethodBody(PsiBuilder builder, PsiBuilder.Marker declaration, boolean anno) {
private @NotNull PsiBuilder.Marker parseMethodBody(PsiBuilder builder, PsiBuilder.Marker declaration, boolean anno) {
IElementType tokenType = builder.getTokenType();
if (tokenType != JavaTokenType.SEMICOLON && tokenType != JavaTokenType.LBRACE) {
PsiBuilder.Marker error = builder.mark();
@@ -693,17 +687,15 @@ public class BasicDeclarationParser {
done(elementList, type.getNodeType(myJavaElementTypeContainer), myWhiteSpaceAndCommentSetHolder);
}
@Nullable
public PsiBuilder.Marker parseParameter(PsiBuilder builder, boolean ellipsis, boolean disjunctiveType, boolean varType) {
public @Nullable PsiBuilder.Marker parseParameter(PsiBuilder builder, boolean ellipsis, boolean disjunctiveType, boolean varType) {
return parseParameterOrRecordComponent(builder, ellipsis, disjunctiveType, varType, true);
}
@Nullable
public PsiBuilder.Marker parseParameterOrRecordComponent(PsiBuilder builder,
boolean ellipsis,
boolean disjunctiveType,
boolean varType,
boolean isParameter) {
public @Nullable PsiBuilder.Marker parseParameterOrRecordComponent(PsiBuilder builder,
boolean ellipsis,
boolean disjunctiveType,
boolean varType,
boolean isParameter) {
int typeFlags = 0;
if (ellipsis) typeFlags |= BasicReferenceParser.ELLIPSIS;
if (disjunctiveType) typeFlags |= BasicReferenceParser.DISJUNCTIONS;
@@ -712,8 +704,7 @@ public class BasicDeclarationParser {
isParameter ? myJavaElementTypeContainer.PARAMETER : myJavaElementTypeContainer.RECORD_COMPONENT);
}
@Nullable
public PsiBuilder.Marker parseResource(PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseResource(PsiBuilder builder) {
PsiBuilder.Marker marker = builder.mark();
PsiBuilder.Marker expr = myParser.getExpressionParser().parse(builder);
@@ -727,16 +718,14 @@ public class BasicDeclarationParser {
return parseListElement(builder, true, BasicReferenceParser.VAR_TYPE, myJavaElementTypeContainer.RESOURCE_VARIABLE);
}
@Nullable
public PsiBuilder.Marker parseLambdaParameter(PsiBuilder builder, boolean typed) {
public @Nullable PsiBuilder.Marker parseLambdaParameter(PsiBuilder builder, boolean typed) {
int flags = BasicReferenceParser.ELLIPSIS;
if (JavaFeature.VAR_LAMBDA_PARAMETER.isSufficient(getLanguageLevel(builder))) flags |= BasicReferenceParser.VAR_TYPE;
return parseListElement(builder, typed, flags, myJavaElementTypeContainer.PARAMETER);
}
@Nullable
private PsiBuilder.Marker parseListElement(PsiBuilder builder, boolean typed, int typeFlags, IElementType type) {
private @Nullable PsiBuilder.Marker parseListElement(PsiBuilder builder, boolean typed, int typeFlags, IElementType type) {
PsiBuilder.Marker param = builder.mark();
Pair<PsiBuilder.Marker, Boolean> modListInfo = parseModifierList(builder);
@@ -797,11 +786,10 @@ public class BasicDeclarationParser {
return param;
}
@Nullable
private PsiBuilder.Marker parseFieldOrLocalVariable(PsiBuilder builder,
PsiBuilder.Marker declaration,
int declarationStart,
BaseContext context) {
private @Nullable PsiBuilder.Marker parseFieldOrLocalVariable(PsiBuilder builder,
PsiBuilder.Marker declaration,
int declarationStart,
BaseContext context) {
final IElementType varType;
if (context == BaseContext.CLASS || context == BaseContext.ANNOTATION_INTERFACE || context == BaseContext.FILE) {
varType = myJavaElementTypeContainer.FIELD;
@@ -924,8 +912,7 @@ public class BasicDeclarationParser {
return paired;
}
@Nullable
public PsiBuilder.Marker parseAnnotations(final PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseAnnotations(final PsiBuilder builder) {
PsiBuilder.Marker firstAnno = null;
while (builder.getTokenType() == JavaTokenType.AT) {
@@ -936,8 +923,7 @@ public class BasicDeclarationParser {
return firstAnno;
}
@NotNull
public PsiBuilder.Marker parseAnnotation(final PsiBuilder builder) {
public @NotNull PsiBuilder.Marker parseAnnotation(final PsiBuilder builder) {
assert builder.getTokenType() == JavaTokenType.AT : builder.getTokenType();
final PsiBuilder.Marker anno = builder.mark();
builder.advanceLexer();
@@ -1026,8 +1012,7 @@ public class BasicDeclarationParser {
return pair;
}
@Nullable
public PsiBuilder.Marker parseAnnotationValue(PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseAnnotationValue(PsiBuilder builder) {
IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.AT) {
return parseAnnotation(builder);
@@ -38,8 +38,7 @@ public class BasicExpressionParser {
myParser = parser;
}
@Nullable
public PsiBuilder.Marker parse(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parse(@NotNull PsiBuilder builder) {
if (useNewImplementation) {
return myNewExpressionParser.parse(builder);
}
@@ -89,9 +88,8 @@ public class BasicExpressionParser {
/**
* @deprecated plugin compatibility, use the one from the StatementParser
*/
@Nullable
@Deprecated
public PsiBuilder.Marker parseCaseLabel(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseCaseLabel(@NotNull PsiBuilder builder) {
return myParser.getStatementParser().parseCaseLabel(builder).first;
}
}
@@ -112,8 +112,7 @@ public class BasicFileParser {
return false;
}
@Nullable
protected PsiBuilder.Marker parseInitial(PsiBuilder builder) {
protected @Nullable PsiBuilder.Marker parseInitial(PsiBuilder builder) {
return myParser.getDeclarationParser().parse(builder, BasicDeclarationParser.BaseContext.FILE);
}
@@ -141,8 +140,7 @@ public class BasicFileParser {
done(statement, myJavaElementTypeContainer.PACKAGE_STATEMENT, myWhiteSpaceAndCommentSetHolder);
}
@NotNull
protected Pair<PsiBuilder.Marker, Boolean> parseImportList(PsiBuilder builder, Predicate<? super PsiBuilder> stopper) {
protected @NotNull Pair<PsiBuilder.Marker, Boolean> parseImportList(PsiBuilder builder, Predicate<? super PsiBuilder> stopper) {
PsiBuilder.Marker list = builder.mark();
boolean isEmpty = true;
@@ -186,8 +184,7 @@ public class BasicFileParser {
return Pair.create(list, isEmpty);
}
@Nullable
protected PsiBuilder.Marker parseImportStatement(PsiBuilder builder) {
protected @Nullable PsiBuilder.Marker parseImportStatement(PsiBuilder builder) {
if (builder.getTokenType() != JavaTokenType.IMPORT_KEYWORD) return null;
PsiBuilder.Marker statement = builder.mark();
@@ -233,8 +230,7 @@ public class BasicFileParser {
return myJavaElementTypeContainer.IMPORT_STATEMENT;
}
@NotNull
private static @NlsContexts.ParsingError String error(@NotNull AbstractBundle bundle, @NotNull String errorMessageKey) {
private static @NotNull @NlsContexts.ParsingError String error(@NotNull AbstractBundle bundle, @NotNull String errorMessageKey) {
return bundle.getMessage(errorMessageKey);
}
}
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.lang.java.parser;
import com.intellij.lang.PsiBuilder;
@@ -606,13 +606,11 @@ public final class BasicJavaDocParser {
tagData.done(javaDocElementTypeContainer.DOC_TAG_VALUE_ELEMENT);
}
@Nullable
private static IElementType getTokenType(PsiBuilder builder) {
private static @Nullable IElementType getTokenType(PsiBuilder builder) {
return getTokenType(builder, true);
}
@Nullable
private static IElementType getTokenType(PsiBuilder builder, boolean skipWhitespace) {
private static @Nullable IElementType getTokenType(PsiBuilder builder, boolean skipWhitespace) {
IElementType tokenType;
while ((tokenType = builder.getTokenType()) == JavaDocTokenType.DOC_SPACE) {
builder.remapCurrentToken(TokenType.WHITE_SPACE);
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.lang.java.parser;
import com.intellij.psi.impl.source.AbstractBasicJavaElementTypeFactory;
@@ -6,28 +6,21 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@ApiStatus.Experimental
abstract public class BasicJavaParser {
public abstract class BasicJavaParser {
@NotNull
abstract public BasicFileParser getFileParser();
public abstract @NotNull BasicFileParser getFileParser();
@NotNull
abstract public BasicModuleParser getModuleParser();
public abstract @NotNull BasicModuleParser getModuleParser();
@NotNull
abstract public BasicDeclarationParser getDeclarationParser();
public abstract @NotNull BasicDeclarationParser getDeclarationParser();
@NotNull
abstract public BasicStatementParser getStatementParser();
public abstract @NotNull BasicStatementParser getStatementParser();
@NotNull
abstract public BasicExpressionParser getExpressionParser();
public abstract @NotNull BasicExpressionParser getExpressionParser();
@NotNull
abstract public BasicReferenceParser getReferenceParser();
public abstract @NotNull BasicReferenceParser getReferenceParser();
@NotNull
abstract public BasicPatternParser getPatternParser();
public abstract @NotNull BasicPatternParser getPatternParser();
abstract public AbstractBasicJavaElementTypeFactory getJavaElementTypeFactory();
public abstract AbstractBasicJavaElementTypeFactory getJavaElementTypeFactory();
}
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.lang.java.parser;
import com.intellij.core.JavaPsiBundle;
@@ -46,8 +46,7 @@ public final class BasicJavaParserUtil {
builder.putUserData(LANG_LEVEL_KEY, level);
}
@NotNull
public static LanguageLevel getLanguageLevel(final PsiBuilder builder) {
public static @NotNull LanguageLevel getLanguageLevel(final PsiBuilder builder) {
final LanguageLevel level = builder.getUserData(LANG_LEVEL_KEY);
assert level != null : builder;
return level;
@@ -72,8 +71,7 @@ public final class BasicJavaParserUtil {
marker.setCustomEdgeTokenBinders(left, right);
}
@Nullable
public static IElementType exprType(@Nullable final PsiBuilder.Marker marker) {
public static @Nullable IElementType exprType(final @Nullable PsiBuilder.Marker marker) {
return marker != null ? marker.getTokenType() : null;
}
@@ -84,7 +82,7 @@ public final class BasicJavaParserUtil {
public static void error(final PsiBuilder builder,
@NotNull @NlsContexts.ParsingError String message,
@Nullable final PsiBuilder.Marker before) {
final @Nullable PsiBuilder.Marker before) {
if (before == null) {
error(builder, message);
}
@@ -180,20 +178,18 @@ public final class BasicJavaParserUtil {
};
}
@Nullable
public static ASTNode parseFragment(final ASTNode chameleon, final BasicJavaParserUtil.ParserWrapper wrapper,
Function<LanguageLevel, JavaDocLexer> javaDocLexer,
Function<LanguageLevel, BasicJavaLexer> javaLexer) {
public static @Nullable ASTNode parseFragment(final ASTNode chameleon, final BasicJavaParserUtil.ParserWrapper wrapper,
Function<LanguageLevel, JavaDocLexer> javaDocLexer,
Function<LanguageLevel, BasicJavaLexer> javaLexer) {
return parseFragment(chameleon, wrapper, true, LanguageLevel.HIGHEST, javaDocLexer, javaLexer);
}
@Nullable
public static ASTNode parseFragment(final ASTNode chameleon,
final BasicJavaParserUtil.ParserWrapper wrapper,
final boolean eatAll,
final LanguageLevel level,
Function<LanguageLevel, JavaDocLexer> javaDocLexer,
Function<LanguageLevel, ? extends Lexer> javaLexer) {
public static @Nullable ASTNode parseFragment(final ASTNode chameleon,
final BasicJavaParserUtil.ParserWrapper wrapper,
final boolean eatAll,
final LanguageLevel level,
Function<LanguageLevel, JavaDocLexer> javaDocLexer,
Function<LanguageLevel, ? extends Lexer> javaLexer) {
final PsiElement psi = chameleon.getTreeParent() != null ? chameleon.getTreeParent().getPsi() : chameleon.getPsi();
assert psi != null : chameleon;
final Project project = psi.getProject();
@@ -220,11 +216,10 @@ public final class BasicJavaParserUtil {
}
@NotNull
public static PsiBuilder createBuilder(@NotNull final ASTNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction,
@NotNull Function<LanguageLevel, BasicJavaLexer> lexerFunction,
@NotNull Function<PsiFile, TokenList> psiAsLexer) {
public static @NotNull PsiBuilder createBuilder(final @NotNull ASTNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction,
@NotNull Function<LanguageLevel, BasicJavaLexer> lexerFunction,
@NotNull Function<PsiFile, TokenList> psiAsLexer) {
final PsiElement psi = chameleon.getPsi();
assert psi != null : chameleon;
final Project project = psi.getProject();
@@ -251,10 +246,9 @@ public final class BasicJavaParserUtil {
return builder;
}
@NotNull
public static PsiBuilder createBuilder(@NotNull LighterLazyParseableNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction,
@NotNull Function<LanguageLevel, BasicJavaLexer> lexerFunction) {
public static @NotNull PsiBuilder createBuilder(@NotNull LighterLazyParseableNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction,
@NotNull Function<LanguageLevel, BasicJavaLexer> lexerFunction) {
final PsiElement psi = chameleon.getContainingFile();
assert psi != null : chameleon;
final Project project = psi.getProject();
@@ -33,8 +33,7 @@ public class BasicModuleParser {
myJavaElementTypeContainer = parser.getJavaElementTypeFactory().getContainer();
}
@Nullable
public PsiBuilder.Marker parse(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parse(@NotNull PsiBuilder builder) {
PsiBuilder.Marker module = builder.mark();
PsiBuilder.Marker firstAnnotation = myParser.getDeclarationParser().parseAnnotations(builder);
@@ -211,8 +210,7 @@ public class BasicModuleParser {
return parsePackageStatement(builder, statement, myJavaElementTypeContainer.OPENS_STATEMENT);
}
@NotNull
private PsiBuilder.Marker parsePackageStatement(PsiBuilder builder, PsiBuilder.Marker statement, IElementType type) {
private @NotNull PsiBuilder.Marker parsePackageStatement(PsiBuilder builder, PsiBuilder.Marker statement, IElementType type) {
boolean hasError = false;
if (parseClassOrPackageRef(builder) != null) {
@@ -54,8 +54,7 @@ public class BasicOldExpressionParser {
BASIC_PRIMITIVE_TYPE_BIT_SET, TokenSet.create(JavaTokenType.IDENTIFIER, JavaTokenType.AT));
}
@Nullable
public PsiBuilder.Marker parse(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parse(@NotNull PsiBuilder builder) {
return parseAssignment(builder);
}
@@ -68,8 +67,7 @@ public class BasicOldExpressionParser {
//for compatibility
@SuppressWarnings("unused")
@Nullable
public PsiBuilder.Marker parseCaseLabel(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseCaseLabel(@NotNull PsiBuilder builder) {
return myParser.getStatementParser().parseCaseLabel(builder).first;
}
@@ -103,8 +101,7 @@ public class BasicOldExpressionParser {
return parseExpression(builder, ExprType.CONDITIONAL_AND, mode);
}
@Nullable
public PsiBuilder.Marker parseConditional(final PsiBuilder builder, final int mode) {
public @Nullable PsiBuilder.Marker parseConditional(final PsiBuilder builder, final int mode) {
final PsiBuilder.Marker condition = parseExpression(builder, ExprType.CONDITIONAL_OR, mode);
if (condition == null) return null;
@@ -137,8 +134,7 @@ public class BasicOldExpressionParser {
return ternary;
}
@Nullable
private PsiBuilder.Marker parseExpression(final PsiBuilder builder, final ExprType type, final int mode) {
private @Nullable PsiBuilder.Marker parseExpression(final PsiBuilder builder, final ExprType type, final int mode) {
switch (type) {
case CONDITIONAL_OR:
return parseBinary(builder, ExprType.CONDITIONAL_AND, CONDITIONAL_OR_OPS, mode);
@@ -182,8 +178,7 @@ public class BasicOldExpressionParser {
}
}
@Nullable
private PsiBuilder.Marker parseBinary(final PsiBuilder builder, final ExprType type, final TokenSet ops, final int mode) {
private @Nullable PsiBuilder.Marker parseBinary(final PsiBuilder builder, final ExprType type, final TokenSet ops, final int mode) {
PsiBuilder.Marker result = parseExpression(builder, type, mode);
if (result == null) return null;
int operandCount = 1;
@@ -214,8 +209,7 @@ public class BasicOldExpressionParser {
return result;
}
@Nullable
private PsiBuilder.Marker parseRelational(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parseRelational(final PsiBuilder builder, final int mode) {
PsiBuilder.Marker left = parseExpression(builder, ExprType.SHIFT, mode);
if (left == null) return null;
@@ -264,8 +258,7 @@ public class BasicOldExpressionParser {
return left;
}
@Nullable
private PsiBuilder.Marker parseUnary(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parseUnary(final PsiBuilder builder, final int mode) {
final IElementType tokenType = builder.getTokenType();
if (PREFIX_OPS.contains(tokenType)) {
@@ -321,8 +314,7 @@ public class BasicOldExpressionParser {
}
}
@Nullable
private PsiBuilder.Marker parsePostfix(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parsePostfix(final PsiBuilder builder, final int mode) {
PsiBuilder.Marker operand = parsePrimary(builder, null, -1, mode);
if (operand == null) return null;
@@ -338,8 +330,7 @@ public class BasicOldExpressionParser {
private enum BreakPoint {P1, P2, P4}
@Nullable
private PsiBuilder.Marker parsePrimary(PsiBuilder builder, @Nullable BreakPoint breakPoint, int breakOffset, final int mode) {
private @Nullable PsiBuilder.Marker parsePrimary(PsiBuilder builder, @Nullable BreakPoint breakPoint, int breakOffset, final int mode) {
PsiBuilder.Marker startMarker = builder.mark();
PsiBuilder.Marker expr = parsePrimaryExpressionStart(builder, mode);
@@ -522,8 +513,7 @@ public class BasicOldExpressionParser {
}
}
@Nullable
private PsiBuilder.Marker parsePrimaryExpressionStart(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parsePrimaryExpressionStart(final PsiBuilder builder, final int mode) {
IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.TEXT_BLOCK_TEMPLATE_BEGIN || tokenType == JavaTokenType.STRING_TEMPLATE_BEGIN) {
@@ -656,16 +646,14 @@ public class BasicOldExpressionParser {
return null;
}
@NotNull
private PsiBuilder.Marker parseArrayInitializer(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseArrayInitializer(PsiBuilder builder) {
return parseArrayInitializer(builder, myJavaElementTypeContainer.ARRAY_INITIALIZER_EXPRESSION, this::parse, "expected.expression");
}
@NotNull
public PsiBuilder.Marker parseArrayInitializer(@NotNull PsiBuilder builder,
@NotNull IElementType type,
@NotNull Function<? super PsiBuilder, PsiBuilder.Marker> elementParser,
@NotNull @PropertyKey(resourceBundle = JavaPsiBundle.BUNDLE) String missingElementKey) {
public @NotNull PsiBuilder.Marker parseArrayInitializer(@NotNull PsiBuilder builder,
@NotNull IElementType type,
@NotNull Function<? super PsiBuilder, PsiBuilder.Marker> elementParser,
@NotNull @PropertyKey(resourceBundle = JavaPsiBundle.BUNDLE) String missingElementKey) {
PsiBuilder.Marker arrayInit = builder.mark();
builder.advanceLexer();
@@ -736,8 +724,7 @@ public class BasicOldExpressionParser {
return templateExpression;
}
@NotNull
private PsiBuilder.Marker parseNew(PsiBuilder builder, @Nullable PsiBuilder.Marker start) {
private @NotNull PsiBuilder.Marker parseNew(PsiBuilder builder, @Nullable PsiBuilder.Marker start) {
PsiBuilder.Marker newExpr = (start != null ? start.precede() : builder.mark());
builder.advanceLexer();
@@ -823,8 +810,7 @@ public class BasicOldExpressionParser {
return newExpr;
}
@Nullable
private PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder) {
private @Nullable PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder) {
PsiBuilder.Marker expr = builder.mark();
boolean primitive = BASIC_PRIMITIVE_TYPE_BIT_SET.contains(builder.getTokenType());
@@ -838,8 +824,7 @@ public class BasicOldExpressionParser {
return result;
}
@Nullable
private PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
private @Nullable PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.DOT) {
return parseClassObjectAccess(builder, expr, optionalClassKeyword);
@@ -851,8 +836,7 @@ public class BasicOldExpressionParser {
return null;
}
@Nullable
private PsiBuilder.Marker parseClassObjectAccess(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
private @Nullable PsiBuilder.Marker parseClassObjectAccess(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
final PsiBuilder.Marker mark = builder.mark();
builder.advanceLexer();
@@ -870,8 +854,7 @@ public class BasicOldExpressionParser {
return expr;
}
@NotNull
private PsiBuilder.Marker parseMethodReference(final PsiBuilder builder, final PsiBuilder.Marker start) {
private @NotNull PsiBuilder.Marker parseMethodReference(final PsiBuilder builder, final PsiBuilder.Marker start) {
builder.advanceLexer();
myParser.getReferenceParser().parseReferenceParameterList(builder, false, false);
@@ -884,8 +867,7 @@ public class BasicOldExpressionParser {
return start;
}
@Nullable
private PsiBuilder.Marker parseLambdaAfterParenth(final PsiBuilder builder) {
private @Nullable PsiBuilder.Marker parseLambdaAfterParenth(final PsiBuilder builder) {
final boolean isLambda;
final boolean isTyped;
@@ -937,8 +919,7 @@ public class BasicOldExpressionParser {
return isLambda ? parseLambdaExpression(builder, isTyped) : null;
}
@Nullable
private PsiBuilder.Marker parseLambdaExpression(final PsiBuilder builder, final boolean typed) {
private @Nullable PsiBuilder.Marker parseLambdaExpression(final PsiBuilder builder, final boolean typed) {
final PsiBuilder.Marker start = builder.mark();
myParser.getDeclarationParser().parseLambdaParameterList(builder, typed);
@@ -964,8 +945,7 @@ public class BasicOldExpressionParser {
return start;
}
@NotNull
public PsiBuilder.Marker parseArgumentList(final PsiBuilder builder) {
public @NotNull PsiBuilder.Marker parseArgumentList(final PsiBuilder builder) {
final PsiBuilder.Marker list = builder.mark();
builder.advanceLexer();
@@ -1023,8 +1003,7 @@ public class BasicOldExpressionParser {
emptyElement(builder, myJavaElementTypeContainer.EMPTY_EXPRESSION);
}
@Nullable
private static IElementType getGtTokenType(final PsiBuilder builder) {
private static @Nullable IElementType getGtTokenType(final PsiBuilder builder) {
IElementType tokenType = builder.getTokenType();
if (tokenType != JavaTokenType.GT) return tokenType;
@@ -134,8 +134,7 @@ public class BasicPrattExpressionParser {
return lhs;
}
@Nullable
private PsiBuilder.Marker parseUnary(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parseUnary(final PsiBuilder builder, final int mode) {
final IElementType tokenType = builder.getTokenType();
if (PREFIX_OPS.contains(tokenType)) {
@@ -192,8 +191,7 @@ public class BasicPrattExpressionParser {
}
}
@Nullable
private PsiBuilder.Marker parsePostfix(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parsePostfix(final PsiBuilder builder, final int mode) {
PsiBuilder.Marker operand = parsePrimary(builder, null, -1, mode);
if (operand == null) return null;
@@ -207,8 +205,7 @@ public class BasicPrattExpressionParser {
return operand;
}
@Nullable
private PsiBuilder.Marker parsePrimary(PsiBuilder builder, @Nullable BreakPoint breakPoint, int breakOffset, final int mode) {
private @Nullable PsiBuilder.Marker parsePrimary(PsiBuilder builder, @Nullable BreakPoint breakPoint, int breakOffset, final int mode) {
PsiBuilder.Marker startMarker = builder.mark();
PsiBuilder.Marker expr = parsePrimaryExpressionStart(builder, mode);
@@ -392,8 +389,7 @@ public class BasicPrattExpressionParser {
}
}
@Nullable
private PsiBuilder.Marker parsePrimaryExpressionStart(final PsiBuilder builder, final int mode) {
private @Nullable PsiBuilder.Marker parsePrimaryExpressionStart(final PsiBuilder builder, final int mode) {
IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.TEXT_BLOCK_TEMPLATE_BEGIN || tokenType == JavaTokenType.STRING_TEMPLATE_BEGIN) {
@@ -524,8 +520,7 @@ public class BasicPrattExpressionParser {
return null;
}
@Nullable
private PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder) {
private @Nullable PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder) {
PsiBuilder.Marker expr = builder.mark();
boolean primitive = BASIC_PRIMITIVE_TYPE_BIT_SET.contains(builder.getTokenType());
@@ -539,8 +534,7 @@ public class BasicPrattExpressionParser {
return result;
}
@Nullable
private PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
private @Nullable PsiBuilder.Marker parseClassAccessOrMethodReference(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.DOT) {
return parseClassObjectAccess(builder, expr, optionalClassKeyword);
@@ -552,8 +546,7 @@ public class BasicPrattExpressionParser {
return null;
}
@NotNull
private PsiBuilder.Marker parseMethodReference(final PsiBuilder builder, final PsiBuilder.Marker start) {
private @NotNull PsiBuilder.Marker parseMethodReference(final PsiBuilder builder, final PsiBuilder.Marker start) {
builder.advanceLexer();
myParser.getReferenceParser().parseReferenceParameterList(builder, false, false);
@@ -595,8 +588,7 @@ public class BasicPrattExpressionParser {
return templateExpression;
}
@NotNull
private PsiBuilder.Marker parseNew(PsiBuilder builder, @Nullable PsiBuilder.Marker start) {
private @NotNull PsiBuilder.Marker parseNew(PsiBuilder builder, @Nullable PsiBuilder.Marker start) {
PsiBuilder.Marker newExpr = (start != null ? start.precede() : builder.mark());
builder.advanceLexer();
@@ -682,17 +674,15 @@ public class BasicPrattExpressionParser {
return newExpr;
}
@NotNull
private PsiBuilder.Marker parseArrayInitializer(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseArrayInitializer(PsiBuilder builder) {
return parseArrayInitializer(builder, myJavaElementTypeContainer.ARRAY_INITIALIZER_EXPRESSION, this::parse,
"expected.expression");
}
@NotNull
public PsiBuilder.Marker parseArrayInitializer(@NotNull PsiBuilder builder,
@NotNull IElementType type,
@NotNull Function<? super PsiBuilder, PsiBuilder.Marker> elementParser,
@NotNull @PropertyKey(resourceBundle = JavaPsiBundle.BUNDLE) String missingElementKey) {
public @NotNull PsiBuilder.Marker parseArrayInitializer(@NotNull PsiBuilder builder,
@NotNull IElementType type,
@NotNull Function<? super PsiBuilder, PsiBuilder.Marker> elementParser,
@NotNull @PropertyKey(resourceBundle = JavaPsiBundle.BUNDLE) String missingElementKey) {
PsiBuilder.Marker arrayInit = builder.mark();
builder.advanceLexer();
@@ -734,8 +724,7 @@ public class BasicPrattExpressionParser {
return arrayInit;
}
@NotNull
public PsiBuilder.Marker parseArgumentList(final PsiBuilder builder) {
public @NotNull PsiBuilder.Marker parseArgumentList(final PsiBuilder builder) {
final PsiBuilder.Marker list = builder.mark();
builder.advanceLexer();
@@ -789,8 +778,7 @@ public class BasicPrattExpressionParser {
return list;
}
@Nullable
private PsiBuilder.Marker parseLambdaAfterParenth(final PsiBuilder builder) {
private @Nullable PsiBuilder.Marker parseLambdaAfterParenth(final PsiBuilder builder) {
final boolean isLambda;
final boolean isTyped;
@@ -842,8 +830,7 @@ public class BasicPrattExpressionParser {
return isLambda ? parseLambdaExpression(builder, isTyped) : null;
}
@Nullable
private PsiBuilder.Marker parseLambdaExpression(final PsiBuilder builder, final boolean typed) {
private @Nullable PsiBuilder.Marker parseLambdaExpression(final PsiBuilder builder, final boolean typed) {
final PsiBuilder.Marker start = builder.mark();
myParser.getDeclarationParser().parseLambdaParameterList(builder, typed);
@@ -913,8 +900,7 @@ public class BasicPrattExpressionParser {
gtToken.collapse(type);
}
@Nullable
private PsiBuilder.Marker parseClassObjectAccess(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
private @Nullable PsiBuilder.Marker parseClassObjectAccess(PsiBuilder builder, PsiBuilder.Marker expr, boolean optionalClassKeyword) {
final PsiBuilder.Marker mark = builder.mark();
builder.advanceLexer();
@@ -950,7 +936,7 @@ public class BasicPrattExpressionParser {
int mode);
}
private final static class ParserData {
private static final class ParserData {
private final int myPrecedence;
private final InfixParser myParser;
@@ -47,14 +47,12 @@ public class BasicReferenceParser {
myJavaElementTypeContainer = javaParser.getJavaElementTypeFactory().getContainer();
}
@Nullable
public PsiBuilder.Marker parseType(PsiBuilder builder, int flags) {
public @Nullable PsiBuilder.Marker parseType(PsiBuilder builder, int flags) {
TypeInfo typeInfo = parseTypeInfo(builder, flags);
return typeInfo != null ? typeInfo.marker : null;
}
@Nullable
public TypeInfo parseTypeInfo(PsiBuilder builder, int flags) {
public @Nullable TypeInfo parseTypeInfo(PsiBuilder builder, int flags) {
TypeInfo typeInfo = parseTypeInfo(builder, flags, false);
if (typeInfo != null) {
@@ -80,8 +78,7 @@ public class BasicReferenceParser {
return typeInfo;
}
@Nullable
private TypeInfo parseTypeInfo(PsiBuilder builder, int flags, boolean badWildcard) {
private @Nullable TypeInfo parseTypeInfo(PsiBuilder builder, int flags, boolean badWildcard) {
if (builder.getTokenType() == null) return null;
TypeInfo typeInfo = new TypeInfo();
@@ -189,12 +186,11 @@ public class BasicReferenceParser {
}
}
@Nullable
public PsiBuilder.Marker parseJavaCodeReference(PsiBuilder builder,
boolean eatLastDot,
boolean parameterList,
boolean isNew,
boolean diamonds) {
public @Nullable PsiBuilder.Marker parseJavaCodeReference(PsiBuilder builder,
boolean eatLastDot,
boolean parameterList,
boolean isNew,
boolean diamonds) {
return parseJavaCodeReference(builder, eatLastDot, parameterList, false, false, isNew, diamonds, new TypeInfo());
}
@@ -204,10 +200,9 @@ public class BasicReferenceParser {
return !typeInfo.hasErrors;
}
@Nullable
private PsiBuilder.Marker parseJavaCodeReference(PsiBuilder builder, boolean eatLastDot, boolean parameterList, boolean isImport,
boolean isStaticImport, boolean isNew, boolean diamonds,
TypeInfo typeInfo) {
private @Nullable PsiBuilder.Marker parseJavaCodeReference(PsiBuilder builder, boolean eatLastDot, boolean parameterList, boolean isImport,
boolean isStaticImport, boolean isNew, boolean diamonds,
TypeInfo typeInfo) {
PsiBuilder.Marker refElement = builder.mark();
myParser.getDeclarationParser().parseAnnotations(builder);
@@ -315,8 +310,7 @@ public class BasicReferenceParser {
return isOk;
}
@NotNull
public PsiBuilder.Marker parseTypeParameters(PsiBuilder builder) {
public @NotNull PsiBuilder.Marker parseTypeParameters(PsiBuilder builder) {
PsiBuilder.Marker list = builder.mark();
if (!expect(builder, JavaTokenType.LT)) {
list.done(myJavaElementTypeContainer.TYPE_PARAMETER_LIST);
@@ -353,8 +347,7 @@ public class BasicReferenceParser {
return list;
}
@Nullable
public PsiBuilder.Marker parseTypeParameter(PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseTypeParameter(PsiBuilder builder) {
PsiBuilder.Marker param = builder.mark();
myParser.getDeclarationParser().parseAnnotations(builder);
@@ -58,20 +58,17 @@ public class BasicStatementParser {
myJavaElementTypeContainer = javaParser.getJavaElementTypeFactory().getContainer();
}
@Nullable
public PsiBuilder.Marker parseCodeBlock(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseCodeBlock(@NotNull PsiBuilder builder) {
return parseCodeBlock(builder, false);
}
@Nullable
public PsiBuilder.Marker parseCodeBlock(@NotNull PsiBuilder builder, boolean isStatement) {
public @Nullable PsiBuilder.Marker parseCodeBlock(@NotNull PsiBuilder builder, boolean isStatement) {
if (builder.getTokenType() != JavaTokenType.LBRACE) return null;
if (isStatement && isParseStatementCodeBlocksDeep(builder)) return parseCodeBlockDeep(builder, false);
return parseBlockLazy(builder, JavaTokenType.LBRACE, JavaTokenType.RBRACE, myJavaElementTypeContainer.CODE_BLOCK);
}
@Nullable
public PsiBuilder.Marker parseCodeBlockDeep(@NotNull PsiBuilder builder, boolean parseUntilEof) {
public @Nullable PsiBuilder.Marker parseCodeBlockDeep(@NotNull PsiBuilder builder, boolean parseUntilEof) {
if (builder.getTokenType() != JavaTokenType.LBRACE) return null;
PsiBuilder.Marker codeBlock = builder.mark();
@@ -121,8 +118,7 @@ public class BasicStatementParser {
}
}
@Nullable
public PsiBuilder.Marker parseStatement(@NotNull PsiBuilder builder) {
public @Nullable PsiBuilder.Marker parseStatement(@NotNull PsiBuilder builder) {
IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.IF_KEYWORD) {
return parseIfStatement(builder);
@@ -325,8 +321,7 @@ public class BasicStatementParser {
}
}
@NotNull
private PsiBuilder.Marker parseIfStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseIfStatement(PsiBuilder builder) {
ArrayList<PsiBuilder.Marker> stack = null;
PsiBuilder.Marker statement;
while (true) {
@@ -361,8 +356,7 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseWhileStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseWhileStatement(PsiBuilder builder) {
return parseExprInParenthWithBlock(builder, myJavaElementTypeContainer.WHILE_STATEMENT, false);
}
@@ -404,8 +398,7 @@ public class BasicStatementParser {
return isRecordPattern;
}
@NotNull
private PsiBuilder.Marker parseForStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseForStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
@@ -447,8 +440,7 @@ public class BasicStatementParser {
}
}
@NotNull
private PsiBuilder.Marker parseForLoopFromInitializer(PsiBuilder builder, PsiBuilder.Marker statement) {
private @NotNull PsiBuilder.Marker parseForLoopFromInitializer(PsiBuilder builder, PsiBuilder.Marker statement) {
if (parseStatement(builder) == null) {
error(builder, JavaPsiBundle.message("expected.statement"));
if (!expect(builder, JavaTokenType.RPARENTH)) {
@@ -529,8 +521,7 @@ public class BasicStatementParser {
expressionStatement.setCustomEdgeTokenBinders(null, WhitespacesBinders.DEFAULT_RIGHT_BINDER);
}
@NotNull
private PsiBuilder.Marker parseForEachFromColon(PsiBuilder builder, PsiBuilder.Marker statement, IElementType foreachStatement) {
private @NotNull PsiBuilder.Marker parseForEachFromColon(PsiBuilder builder, PsiBuilder.Marker statement, IElementType foreachStatement) {
builder.advanceLexer();
if (myParser.getExpressionParser().parse(builder) == null) {
@@ -549,8 +540,7 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseDoWhileStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseDoWhileStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
@@ -569,17 +559,15 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseSwitchStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseSwitchStatement(PsiBuilder builder) {
return parseExprInParenthWithBlock(builder, myJavaElementTypeContainer.SWITCH_STATEMENT, true);
}
/**
* @return marker and whether it contains expression inside
*/
@NotNull
@ApiStatus.Internal
public Pair<PsiBuilder.@Nullable Marker, Boolean> parseCaseLabel(PsiBuilder builder) {
public @NotNull Pair<PsiBuilder.@Nullable Marker, Boolean> parseCaseLabel(PsiBuilder builder) {
if (builder.getTokenType() == JavaTokenType.DEFAULT_KEYWORD) {
PsiBuilder.Marker defaultElement = builder.mark();
builder.advanceLexer();
@@ -658,8 +646,7 @@ public class BasicStatementParser {
}
}
@NotNull
private PsiBuilder.Marker parseBreakStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseBreakStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
expect(builder, JavaTokenType.IDENTIFIER);
@@ -668,8 +655,7 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseYieldStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseYieldStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.remapCurrentToken(JavaTokenType.YIELD_KEYWORD);
builder.advanceLexer();
@@ -685,8 +671,7 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseContinueStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseContinueStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
expect(builder, JavaTokenType.IDENTIFIER);
@@ -695,8 +680,7 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseReturnStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseReturnStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
myParser.getExpressionParser().parse(builder);
@@ -705,8 +689,7 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseThrowStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseThrowStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
@@ -721,13 +704,11 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseSynchronizedStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseSynchronizedStatement(PsiBuilder builder) {
return parseExprInParenthWithBlock(builder, myJavaElementTypeContainer.SYNCHRONIZED_STATEMENT, true);
}
@NotNull
private PsiBuilder.Marker parseTryStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseTryStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
@@ -793,8 +774,7 @@ public class BasicStatementParser {
return true;
}
@NotNull
private PsiBuilder.Marker parseAssertStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseAssertStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
@@ -812,16 +792,14 @@ public class BasicStatementParser {
return statement;
}
@NotNull
private PsiBuilder.Marker parseBlockStatement(PsiBuilder builder) {
private @NotNull PsiBuilder.Marker parseBlockStatement(PsiBuilder builder) {
PsiBuilder.Marker statement = builder.mark();
parseCodeBlock(builder, true);
done(statement, myJavaElementTypeContainer.BLOCK_STATEMENT, myWhiteSpaceAndCommentSetHolder);
return statement;
}
@NotNull
public PsiBuilder.Marker parseExprInParenthWithBlock(@NotNull PsiBuilder builder, @NotNull IElementType type, boolean block) {
public @NotNull PsiBuilder.Marker parseExprInParenthWithBlock(@NotNull PsiBuilder builder, @NotNull IElementType type, boolean block) {
PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.psi.impl.source;
import com.intellij.lang.ASTNode;
@@ -113,8 +113,7 @@ public final class BasicJavaAstTreeUtil {
return results;
}
@Nullable
public static ASTNode getReferenceNameElement(@Nullable ASTNode element) {
public static @Nullable ASTNode getReferenceNameElement(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -155,16 +154,14 @@ public final class BasicJavaAstTreeUtil {
return null;
}
@Nullable
public static ASTNode getElseElement(@NotNull ASTNode element) {
public static @Nullable ASTNode getElseElement(@NotNull ASTNode element) {
if (!is(element, BASIC_IF_STATEMENT)) {
return null;
}
return findChildByType(element, JavaTokenType.ELSE_KEYWORD);
}
@Nullable
public static ASTNode getThenBranch(@NotNull ASTNode element) {
public static @Nullable ASTNode getThenBranch(@NotNull ASTNode element) {
if (!is(element, BASIC_IF_STATEMENT)) {
return null;
}
@@ -188,18 +185,15 @@ public final class BasicJavaAstTreeUtil {
return null;
}
@Nullable
public static ASTNode getLParenth(@Nullable ASTNode element) {
public static @Nullable ASTNode getLParenth(@Nullable ASTNode element) {
return findChildByType(element, JavaTokenType.LPARENTH);
}
@Nullable
public static ASTNode getRParenth(@Nullable ASTNode element) {
public static @Nullable ASTNode getRParenth(@Nullable ASTNode element) {
return findChildByType(element, RPARENTH);
}
@Nullable
public static ASTNode getFinallyBlock(@Nullable ASTNode element) {
public static @Nullable ASTNode getFinallyBlock(@Nullable ASTNode element) {
if (!is(element, BASIC_TRY_STATEMENT)) {
return null;
}
@@ -213,39 +207,32 @@ public final class BasicJavaAstTreeUtil {
return null;
}
@Nullable
public static ASTNode getNameIdentifier(@Nullable ASTNode element) {
public static @Nullable ASTNode getNameIdentifier(@Nullable ASTNode element) {
return findChildByType(element, JavaTokenType.IDENTIFIER);
}
@Nullable
public static ASTNode getInitializer(@Nullable ASTNode element) {
public static @Nullable ASTNode getInitializer(@Nullable ASTNode element) {
return findChildByType(element, EXPRESSION_SET);
}
@Nullable
public static ASTNode getDocComment(@Nullable ASTNode element) {
public static @Nullable ASTNode getDocComment(@Nullable ASTNode element) {
return findChildByType(element, BASIC_DOC_COMMENT);
}
@Nullable
public static ASTNode getTypeElement(@Nullable ASTNode element) {
public static @Nullable ASTNode getTypeElement(@Nullable ASTNode element) {
return findChildByType(element, BASIC_TYPE);
}
@Nullable
public static ASTNode getModifierList(@Nullable ASTNode element) {
public static @Nullable ASTNode getModifierList(@Nullable ASTNode element) {
return findChildByType(element, BASIC_MODIFIER_LIST);
}
@Nullable
public static ASTNode getLBrace(@Nullable ASTNode element) {
public static @Nullable ASTNode getLBrace(@Nullable ASTNode element) {
return findChildByType(element, JavaTokenType.LBRACE);
}
@Nullable
public static ASTNode getRBrace(@Nullable ASTNode element) {
public static @Nullable ASTNode getRBrace(@Nullable ASTNode element) {
return findChildByType(element, JavaTokenType.RBRACE);
}
@@ -291,21 +278,18 @@ public final class BasicJavaAstTreeUtil {
return null;
}
@Nullable
public static PsiElement toPsi(@Nullable ASTNode astNode) {
public static @Nullable PsiElement toPsi(@Nullable ASTNode astNode) {
return SourceTreeToPsiMap.treeElementToPsi(astNode);
}
@Nullable
public static ASTNode toNode(@Nullable PsiElement psiElement) {
public static @Nullable ASTNode toNode(@Nullable PsiElement psiElement) {
if (psiElement == null) {
return null;
}
return psiElement.getNode();
}
@Nullable
public static ASTNode getParentOfType(@Nullable ASTNode e, @NotNull ParentAwareTokenSet set) {
public static @Nullable ASTNode getParentOfType(@Nullable ASTNode e, @NotNull ParentAwareTokenSet set) {
if (e == null) {
return null;
}
@@ -327,29 +311,25 @@ public final class BasicJavaAstTreeUtil {
}
@Nullable
public static ASTNode getParentOfType(@Nullable ASTNode e, @NotNull IElementType elementType) {
public static @Nullable ASTNode getParentOfType(@Nullable ASTNode e, @NotNull IElementType elementType) {
if (e == null) {
return null;
}
return findParent(e, elementType);
}
@Nullable
public static ASTNode getMethodExpression(@Nullable ASTNode element) {
public static @Nullable ASTNode getMethodExpression(@Nullable ASTNode element) {
if (!is(element, BASIC_METHOD_CALL_EXPRESSION)) {
return null;
}
return element.getFirstChildNode();
}
@Nullable
public static ASTNode getExpressionList(@Nullable ASTNode element) {
public static @Nullable ASTNode getExpressionList(@Nullable ASTNode element) {
return findChildByType(element, BASIC_EXPRESSION_LIST);
}
@Nullable
public static ASTNode getTypeParameterList(@Nullable ASTNode element) {
public static @Nullable ASTNode getTypeParameterList(@Nullable ASTNode element) {
return findChildByType(element, BASIC_TYPE_PARAMETER_LIST);
}
@@ -364,8 +344,7 @@ public final class BasicJavaAstTreeUtil {
!is(element, BASIC_DOC_SNIPPET_ATTRIBUTE_VALUE);
}
@Nullable
public static String getTagName(@Nullable ASTNode element) {
public static @Nullable String getTagName(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -380,8 +359,7 @@ public final class BasicJavaAstTreeUtil {
return text.substring(1);
}
@Nullable
public static ASTNode getROperand(@Nullable ASTNode element) {
public static @Nullable ASTNode getROperand(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -391,14 +369,12 @@ public final class BasicJavaAstTreeUtil {
return findChildByType(element, EXPRESSION_SET);
}
@Nullable
public static ASTNode getBlock(@Nullable ASTNode statement) {
public static @Nullable ASTNode getBlock(@Nullable ASTNode statement) {
if (statement == null) return null;
return findChildByType(statement, STATEMENT_SET);
}
@Nullable
public static ASTNode getAnonymousClass(@Nullable ASTNode expression) {
public static @Nullable ASTNode getAnonymousClass(@Nullable ASTNode expression) {
if (expression == null) return null;
return findChildByType(expression, BASIC_ANONYMOUS_CLASS);
}
@@ -424,8 +400,7 @@ public final class BasicJavaAstTreeUtil {
return element;
}
@Nullable
public static ASTNode findElementInRange(@NotNull PsiFile file, int startOffset, int endOffset, @NotNull IElementType elementType) {
public static @Nullable ASTNode findElementInRange(@NotNull PsiFile file, int startOffset, int endOffset, @NotNull IElementType elementType) {
PsiElement element1 = file.getViewProvider().findElementAt(startOffset, JavaLanguage.INSTANCE);
PsiElement element2 = file.getViewProvider().findElementAt(endOffset - 1, JavaLanguage.INSTANCE);
if (element1 instanceof PsiWhiteSpace) {
@@ -449,8 +424,7 @@ public final class BasicJavaAstTreeUtil {
return element;
}
@Nullable
public static ASTNode getForInitialization(@Nullable ASTNode forStatement) {
public static @Nullable ASTNode getForInitialization(@Nullable ASTNode forStatement) {
if (!is(forStatement, BASIC_FOR_STATEMENT)) {
return null;
@@ -494,16 +468,14 @@ public final class BasicJavaAstTreeUtil {
return result == null ? null : result.getNode();
}
@Nullable
public static ASTNode getParentOfType(@Nullable ASTNode e, @NotNull ParentAwareTokenSet types, boolean strict) {
public static @Nullable ASTNode getParentOfType(@Nullable ASTNode e, @NotNull ParentAwareTokenSet types, boolean strict) {
if (!strict && is(e, types)) {
return e;
}
return getParentOfType(e, types);
}
@Nullable
public static PsiElement getParentOfType(@Nullable PsiElement e, @NotNull Set<IElementType> types, boolean strict) {
public static @Nullable PsiElement getParentOfType(@Nullable PsiElement e, @NotNull Set<IElementType> types, boolean strict) {
if (!strict && e != null && is(e.getNode(), types)) {
return e;
}
@@ -513,29 +485,25 @@ public final class BasicJavaAstTreeUtil {
return toPsi(getParentOfType(e.getNode(), ParentAwareTokenSet.create(types)));
}
@Nullable
public static ASTNode getCatchBlock(@Nullable ASTNode element) {
public static @Nullable ASTNode getCatchBlock(@Nullable ASTNode element) {
if (!is(element, BASIC_CATCH_SECTION)) {
return null;
}
return findChildByType(element, BASIC_CODE_BLOCK);
}
@Nullable
public static ASTNode getParameter(@Nullable ASTNode element) {
public static @Nullable ASTNode getParameter(@Nullable ASTNode element) {
return findChildByType(element, BASIC_PARAMETER);
}
@Nullable
public static ASTNode getWhileKeyword(@Nullable ASTNode element) {
public static @Nullable ASTNode getWhileKeyword(@Nullable ASTNode element) {
if (element == null) {
return null;
}
return findChildByType(element, JavaTokenType.WHILE_KEYWORD);
}
@Nullable
public static ASTNode getWhileCondition(@Nullable ASTNode element) {
public static @Nullable ASTNode getWhileCondition(@Nullable ASTNode element) {
if (!is(element, BASIC_DO_WHILE_STATEMENT) &&
!is(element, BASIC_WHILE_STATEMENT)) {
return null;
@@ -543,16 +511,14 @@ public final class BasicJavaAstTreeUtil {
return findChildByType(element, EXPRESSION_SET);
}
@Nullable
public static ASTNode getDoWhileBody(@Nullable ASTNode element) {
public static @Nullable ASTNode getDoWhileBody(@Nullable ASTNode element) {
if (!is(element, BASIC_DO_WHILE_STATEMENT)) {
return null;
}
return findChildByType(element, STATEMENT_SET);
}
@Nullable
public static ASTNode getForUpdate(@Nullable ASTNode statement) {
public static @Nullable ASTNode getForUpdate(@Nullable ASTNode statement) {
if (!is(statement, BASIC_FOR_STATEMENT)) {
return null;
}
@@ -569,16 +535,14 @@ public final class BasicJavaAstTreeUtil {
return null;
}
@Nullable
public static ASTNode getForCondition(@Nullable ASTNode element) {
public static @Nullable ASTNode getForCondition(@Nullable ASTNode element) {
if (!is(element, BASIC_FOR_STATEMENT)) {
return null;
}
return findChildByType(element, EXPRESSION_SET);
}
@Nullable
public static ASTNode getIfCondition(@Nullable ASTNode statement) {
public static @Nullable ASTNode getIfCondition(@Nullable ASTNode statement) {
if (!is(statement, BASIC_IF_STATEMENT)) {
return null;
}
@@ -639,8 +603,7 @@ public final class BasicJavaAstTreeUtil {
return getChildren(element).stream().filter(ch -> is(ch, BASIC_NAME_VALUE_PAIR)).toArray(ASTNode[]::new);
}
@Nullable
public static ASTNode getFirstBodyElement(@Nullable ASTNode block) {
public static @Nullable ASTNode getFirstBodyElement(@Nullable ASTNode block) {
if (block == null) {
return null;
}
@@ -650,14 +613,12 @@ public final class BasicJavaAstTreeUtil {
return nextSibling == getRBrace(block) ? null : nextSibling;
}
@Nullable
public static ASTNode getCodeBlock(@Nullable ASTNode element) {
public static @Nullable ASTNode getCodeBlock(@Nullable ASTNode element) {
if (element == null) return null;
return findChildByType(element, BASIC_CODE_BLOCK);
}
@Nullable
public static ASTNode getForBody(@Nullable ASTNode element) {
public static @Nullable ASTNode getForBody(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -686,8 +647,7 @@ public final class BasicJavaAstTreeUtil {
return ASTNode.EMPTY_ARRAY;
}
@Nullable
public static ASTNode getConditionalExpressionThenExpression(@Nullable ASTNode element) {
public static @Nullable ASTNode getConditionalExpressionThenExpression(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -704,8 +664,7 @@ public final class BasicJavaAstTreeUtil {
return child;
}
@Nullable
public static IElementType getAssignmentOperationTokenType(@Nullable ASTNode expr) {
public static @Nullable IElementType getAssignmentOperationTokenType(@Nullable ASTNode expr) {
if (expr == null) {
return null;
}
@@ -716,24 +675,21 @@ public final class BasicJavaAstTreeUtil {
return ASTNode.getElementType();
}
@Nullable
public static ASTNode getPatternVariable(@Nullable ASTNode ASTNode) {
public static @Nullable ASTNode getPatternVariable(@Nullable ASTNode ASTNode) {
if (ASTNode == null) {
return null;
}
return findChildByType(ASTNode, BASIC_DECONSTRUCTION_PATTERN_VARIABLE, BASIC_PATTERN_VARIABLE);
}
@Nullable
public static ASTNode getExpression(@Nullable ASTNode ASTNode) {
public static @Nullable ASTNode getExpression(@Nullable ASTNode ASTNode) {
if (ASTNode == null) {
return null;
}
return findChildByType(ASTNode, EXPRESSION_SET);
}
@Nullable
public static ASTNode getRecordComponentContainingClass(@Nullable ASTNode element) {
public static @Nullable ASTNode getRecordComponentContainingClass(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -748,16 +704,14 @@ public final class BasicJavaAstTreeUtil {
return null;
}
@Nullable
public static ASTNode getRecordHeader(@Nullable ASTNode element) {
public static @Nullable ASTNode getRecordHeader(@Nullable ASTNode element) {
if (element == null) {
return null;
}
return findChildByType(element, BASIC_RECORD_HEADER);
}
@Nullable
public static ASTNode getRuleBody(@Nullable ASTNode element) {
public static @Nullable ASTNode getRuleBody(@Nullable ASTNode element) {
if (element == null) {
return null;
}
@@ -766,32 +720,28 @@ public final class BasicJavaAstTreeUtil {
ParentAwareTokenSet.create(BASIC_BLOCK_STATEMENT, BASIC_THROW_STATEMENT), EXPRESSION_SET));
}
@Nullable
public static ASTNode getCaseLabelElementList(@Nullable ASTNode element) {
public static @Nullable ASTNode getCaseLabelElementList(@Nullable ASTNode element) {
if (element == null) {
return null;
}
return findChildByType(element, BASIC_CASE_LABEL_ELEMENT_LIST);
}
@Nullable
public static ASTNode getReturnValue(@Nullable ASTNode element) {
public static @Nullable ASTNode getReturnValue(@Nullable ASTNode element) {
if (element == null) {
return null;
}
return findChildByType(element, EXPRESSION_SET);
}
@Nullable
public static ASTNode getForEachIteratedValue(@Nullable ASTNode statement) {
public static @Nullable ASTNode getForEachIteratedValue(@Nullable ASTNode statement) {
if (!is(statement, BASIC_FOREACH_STATEMENT)) {
return null;
}
return findChildByType(statement, EXPRESSION_SET);
}
@Nullable
public static ASTNode getForEachIterationParameter(@Nullable ASTNode statement) {
public static @Nullable ASTNode getForEachIterationParameter(@Nullable ASTNode statement) {
if (statement == null) {
return null;
}
@@ -801,8 +751,7 @@ public final class BasicJavaAstTreeUtil {
return findChildByType(statement, BASIC_PARAMETER);
}
@Nullable
public static ASTNode getForeachBody(@Nullable ASTNode statement) {
public static @Nullable ASTNode getForeachBody(@Nullable ASTNode statement) {
if (statement == null) {
return null;
}
@@ -812,8 +761,7 @@ public final class BasicJavaAstTreeUtil {
return findChildByType(statement, STATEMENT_SET);
}
@Nullable
public static ASTNode getWhileBody(@Nullable ASTNode statement) {
public static @Nullable ASTNode getWhileBody(@Nullable ASTNode statement) {
if (statement == null) {
return null;
}
@@ -1,3 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.psi.impl.source;
import com.intellij.lang.ASTNode;
@@ -64,9 +65,8 @@ public interface BasicJavaDocElementType {
myParentElementTypes = Collections.singleton(parentElementType);
}
@NotNull
@Override
public ASTNode createCompositeNode() {
public @NotNull ASTNode createCompositeNode() {
return myConstructor.get();
}
@@ -79,7 +79,7 @@ public interface BasicJavaDocElementType {
class JavaDocLazyElementType extends ILazyParseableElementType implements ParentProviderElementType {
private final Set<IElementType> myParentElementTypes;
private JavaDocLazyElementType(@NonNls final String debugName, @NotNull IElementType parentElementType) {
private JavaDocLazyElementType(final @NonNls String debugName, @NotNull IElementType parentElementType) {
super(debugName, JavaLanguage.INSTANCE);
myParentElementTypes = Collections.singleton(parentElementType);
}
@@ -112,9 +112,8 @@ public interface BasicJavaDocElementType {
this.javaLexer = javaLexer;
}
@Nullable
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
BasicJavaParserUtil.ParserWrapper wrapper = builder -> BasicJavaDocParser.parseJavadocReference(builder,
myJavaThinParser.get());
return BasicJavaParserUtil.parseFragment(chameleon, wrapper, false, LanguageLevel.JDK_1_3, javaDocLexer, javaLexer
@@ -137,9 +136,8 @@ public interface BasicJavaDocElementType {
this.javaLexer = javaLexer;
}
@Nullable
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
BasicJavaParserUtil.ParserWrapper wrapper = builder -> BasicJavaDocParser.parseJavadocType(builder, myJavaThinParser.get());
return BasicJavaParserUtil.parseFragment(chameleon, wrapper, false, LanguageLevel.JDK_1_3, javaDocLexer, javaLexer
);
@@ -169,14 +167,13 @@ public interface BasicJavaDocElementType {
lexerByProject = project;
}
@Nullable
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
return BasicJavaParserUtil.parseFragment(chameleon, myParser, myDocLexerFunction, myLexerFunction);
}
@Override
public boolean isParsable(@NotNull final CharSequence buffer, @NotNull Language fileLanguage, @NotNull final Project project) {
public boolean isParsable(final @NotNull CharSequence buffer, @NotNull Language fileLanguage, final @NotNull Project project) {
if (!StringUtil.startsWith(buffer, "/**") || !StringUtil.endsWith(buffer, "*/")) return false;
Lexer lexer = lexerByProject.apply(project);
@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.psi.impl.source;
import com.intellij.lang.java.parser.BasicJavaParserUtil;
@@ -36,8 +36,7 @@ public class BasicJavaDummyElement extends FileElement {
myConsumeAll = consumeAll;
}
@NotNull
public BasicJavaParserUtil.ParserWrapper getParser() {
public @NotNull BasicJavaParserUtil.ParserWrapper getParser() {
return myParser;
}
@@ -45,8 +44,7 @@ public class BasicJavaDummyElement extends FileElement {
return myConsumeAll;
}
@NotNull
public LanguageLevel getLanguageLevel() {
public @NotNull LanguageLevel getLanguageLevel() {
return myLanguageLevel;
}
@@ -72,8 +70,7 @@ public class BasicJavaDummyElement extends FileElement {
}
}
@Nullable
public Throwable getParserError() {
public @Nullable Throwable getParserError() {
return myParserError;
}
}
@@ -236,9 +236,8 @@ public interface BasicJavaElementType {
myParentElementTypes = Collections.singleton(parentElementType);
}
@NotNull
@Override
public ASTNode createCompositeNode() {
public @NotNull ASTNode createCompositeNode() {
return myConstructor.get();
}
@@ -260,16 +259,14 @@ public interface BasicJavaElementType {
this.javaLexer = javaLexer;
}
@NotNull
@Override
public ASTNode createCompositeNode() {
public @NotNull ASTNode createCompositeNode() {
return new CompositePsiElement(this) {
};
}
@Nullable
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
assert chameleon instanceof BasicJavaDummyElement : chameleon;
final BasicJavaDummyElement dummyElement = (BasicJavaDummyElement)chameleon;
return BasicJavaParserUtil.parseFragment(chameleon, dummyElement.getParser(), dummyElement.consumeAll(),
@@ -304,7 +301,7 @@ public interface BasicJavaElementType {
}
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public ASTNode parseContents(final @NotNull ASTNode chameleon) {
final PsiBuilder builder = BasicJavaParserUtil.createBuilder(chameleon, languageLevelFunction, myLexerFunction, psiAsLexer);
myJavaThinParser.get().getStatementParser().parseCodeBlockDeep(builder, true);
return builder.getTreeBuilt().getFirstChildNode();
@@ -364,9 +361,8 @@ public interface BasicJavaElementType {
}
};
@Nullable
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
return BasicJavaParserUtil.parseFragment(chameleon, myParser, myDocLexerFunction, myLexerFunction);
}
@@ -437,9 +433,8 @@ public interface BasicJavaElementType {
this.parentElementTypes = Collections.singleton(parentElementType);
}
@Nullable
@Override
public ASTNode parseContents(@NotNull final ASTNode chameleon) {
public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
return BasicJavaParserUtil.parseFragment(chameleon, myParser, javaDocLexer, javaLexer);
}