IDEA-359853 replace Pair with PsiSyntaxBuilderWithLanguageLevel

GitOrigin-RevId: ae58a7bf0e01918f820da4c72b121b184a1f8b9e
This commit is contained in:
Max Medvedev
2025-04-01 00:38:44 +00:00
committed by intellij-monorepo-bot
parent 755a1e416f
commit f2d7799ac9
6 changed files with 25 additions and 28 deletions
@@ -326,9 +326,9 @@ public final class BasicJavaParserUtil {
}
public static @NotNull Pair<PsiSyntaxBuilder, LanguageLevel> createSyntaxBuilder(@NotNull ASTNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction,
@NotNull Function<PsiFile, TokenList> psiAsLexer) {
public static @NotNull PsiSyntaxBuilderWithLanguageLevel createSyntaxBuilder(@NotNull ASTNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction,
@NotNull Function<PsiFile, TokenList> psiAsLexer) {
PsiElement psi = chameleon.getPsi();
assert psi != null : chameleon;
@@ -351,11 +351,11 @@ public final class BasicJavaParserUtil {
PsiSyntaxBuilderFactory factory = PsiSyntaxBuilderFactory.getInstance();
PsiSyntaxBuilder builder = factory.createBuilder(chameleon, lexer, language, text);
return Pair.create(builder, level);
return new PsiSyntaxBuilderWithLanguageLevel(builder, level);
}
public static @NotNull Pair<PsiSyntaxBuilder, LanguageLevel> createSyntaxBuilder(@NotNull LighterLazyParseableNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction) {
public static @NotNull PsiSyntaxBuilderWithLanguageLevel createSyntaxBuilder(@NotNull LighterLazyParseableNode chameleon,
@NotNull Function<PsiElement, LanguageLevel> languageLevelFunction) {
PsiElement psi = chameleon.getContainingFile();
assert psi != null : chameleon;
@@ -364,7 +364,7 @@ public final class BasicJavaParserUtil {
Lexer lexer = new JavaLexer(level);
PsiSyntaxBuilder builder = factory.createBuilder(chameleon, lexer, chameleon.getTokenType().getLanguage(), chameleon.getText());
return Pair.create(builder, level);
return new PsiSyntaxBuilderWithLanguageLevel(builder, level);
}
/**
@@ -8,9 +8,9 @@ import com.intellij.java.syntax.parser.ReferenceParser;
import com.intellij.lang.*;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.lang.java.parser.BasicJavaParserUtil;
import com.intellij.lang.java.parser.PsiSyntaxBuilderWithLanguageLevel;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.platform.syntax.lexer.Lexer;
import com.intellij.platform.syntax.lexer.TokenList;
import com.intellij.platform.syntax.parser.SyntaxTreeBuilder;
@@ -298,9 +298,10 @@ public interface BasicJavaElementType {
@Override
public ASTNode parseContents(final @NotNull ASTNode chameleon) {
Pair<PsiSyntaxBuilder, LanguageLevel> builderAndLevel = BasicJavaParserUtil.createSyntaxBuilder(chameleon, languageLevelFunction, psiAsLexer);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getFirst();
LanguageLevel level = builderAndLevel.getSecond();
PsiSyntaxBuilderWithLanguageLevel
builderAndLevel = BasicJavaParserUtil.createSyntaxBuilder(chameleon, languageLevelFunction, psiAsLexer);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getBuilder();
LanguageLevel level = builderAndLevel.getLanguageLevel();
long startTime = System.nanoTime();
SyntaxTreeBuilder builder = psiSyntaxBuilder.getSyntaxTreeBuilder();
new JavaParser(level).getStatementParser().parseCodeBlockDeep(builder, true);
@@ -311,9 +312,9 @@ public interface BasicJavaElementType {
@Override
public @NotNull FlyweightCapableTreeStructure<LighterASTNode> parseContents(final @NotNull LighterLazyParseableNode chameleon) {
Pair<PsiSyntaxBuilder, LanguageLevel> builderAndLevel = BasicJavaParserUtil.createSyntaxBuilder(chameleon, languageLevelFunction);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getFirst();
LanguageLevel level = builderAndLevel.getSecond();
PsiSyntaxBuilderWithLanguageLevel builderAndLevel = BasicJavaParserUtil.createSyntaxBuilder(chameleon, languageLevelFunction);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getBuilder();
LanguageLevel level = builderAndLevel.getLanguageLevel();
long startTime = System.nanoTime();
SyntaxTreeBuilder builder = psiSyntaxBuilder.getSyntaxTreeBuilder();
new JavaParser(level).getStatementParser().parseCodeBlockDeep(builder, true);
@@ -3,16 +3,14 @@ package com.intellij.psi.impl.java.stubs;
import com.intellij.lang.ASTNode;
import com.intellij.lang.LighterASTNode;
import com.intellij.lang.PsiBuilder;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.lang.java.parser.JavaParserUtil;
import com.intellij.lang.java.parser.PsiSyntaxBuilderWithLanguageLevel;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.syntax.parser.SyntaxTreeBuilder;
import com.intellij.platform.syntax.psi.ParsingDiagnostics;
import com.intellij.platform.syntax.psi.PsiSyntaxBuilder;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.impl.source.JavaFileElementType;
import com.intellij.psi.impl.source.JavaLightStubBuilder;
import com.intellij.psi.stubs.LanguageStubDefinition;
@@ -48,11 +46,11 @@ public class JavaStubDefinition implements LightLanguageStubDefinition, Language
@Override
public @NotNull FlyweightCapableTreeStructure<LighterASTNode> parseContentsLight(@NotNull ASTNode chameleon) {
Pair<PsiSyntaxBuilder, LanguageLevel> builderAndLevel = JavaParserUtil.createSyntaxBuilder(chameleon);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getFirst();
PsiSyntaxBuilderWithLanguageLevel builderAndLevel = JavaParserUtil.createSyntaxBuilder(chameleon);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getBuilder();
SyntaxTreeBuilder builder = psiSyntaxBuilder.getSyntaxTreeBuilder();
long startTime = System.nanoTime();
JavaFileElementType.doParse(builder, builderAndLevel.getSecond());
JavaFileElementType.doParse(builder, builderAndLevel.getLanguageLevel());
FlyweightCapableTreeStructure<LighterASTNode> tree = psiSyntaxBuilder.getLightTree();
ParsingDiagnostics.registerParse(builder, JavaLanguage.INSTANCE, System.nanoTime() - startTime);
return tree;
@@ -10,7 +10,6 @@ import com.intellij.lang.PsiBuilder;
import com.intellij.lang.WhitespacesAndCommentsBinder;
import com.intellij.lang.impl.TokenSequence;
import com.intellij.lang.java.JavaParserDefinition;
import com.intellij.lang.java.lexer.BasicJavaLexer;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.util.Pair;
@@ -18,7 +17,6 @@ import com.intellij.platform.syntax.SyntaxElementTypeSet;
import com.intellij.platform.syntax.element.SyntaxTokenTypes;
import com.intellij.platform.syntax.lexer.TokenList;
import com.intellij.platform.syntax.lexer.TokenListKt;
import com.intellij.platform.syntax.psi.PsiSyntaxBuilder;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.source.WhiteSpaceAndCommentSetHolder;
@@ -120,7 +118,7 @@ public final class JavaParserUtil {
return BasicJavaParserUtil.isParseStatementCodeBlocksDeep(builder);
}
public static @NotNull Pair<PsiSyntaxBuilder, LanguageLevel> createSyntaxBuilder(final ASTNode chameleon) {
public static @NotNull PsiSyntaxBuilderWithLanguageLevel createSyntaxBuilder(final ASTNode chameleon) {
return BasicJavaParserUtil.createSyntaxBuilder(chameleon,
(psi) -> PsiUtil.getLanguageLevel(psi),
(psi) -> obtainTokens(psi));
@@ -6,8 +6,8 @@ import com.intellij.java.syntax.parser.JavaParser;
import com.intellij.lang.ASTNode;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.lang.java.parser.JavaParserUtil;
import com.intellij.lang.java.parser.PsiSyntaxBuilderWithLanguageLevel;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.syntax.parser.SyntaxTreeBuilder;
import com.intellij.platform.syntax.psi.ParsingDiagnostics;
@@ -38,11 +38,11 @@ public class JavaFileElementType extends IFileElementType {
@Override
public ASTNode parseContents(@NotNull ASTNode chameleon) {
Pair<PsiSyntaxBuilder, LanguageLevel> builderAndLevel = JavaParserUtil.createSyntaxBuilder(chameleon);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getFirst();
PsiSyntaxBuilderWithLanguageLevel builderAndLevel = JavaParserUtil.createSyntaxBuilder(chameleon);
PsiSyntaxBuilder psiSyntaxBuilder = builderAndLevel.getBuilder();
SyntaxTreeBuilder builder = psiSyntaxBuilder.getSyntaxTreeBuilder();
long startTime = System.nanoTime();
doParse(builder, builderAndLevel.getSecond());
doParse(builder, builderAndLevel.getLanguageLevel());
ASTNode result = psiSyntaxBuilder.getTreeBuilt().getFirstChildNode();
ParsingDiagnostics.registerParse(builder, getLanguage(), System.nanoTime() - startTime);
return result;
@@ -100,7 +100,7 @@ public class JavaParsingTestConfigurator implements AbstractBasicJavaParsingTest
}
private static PsiSyntaxBuilder createBuilder(ASTNode chameleon) {
PsiSyntaxBuilder builder = JavaParserUtil.createSyntaxBuilder(chameleon).getFirst();
PsiSyntaxBuilder builder = JavaParserUtil.createSyntaxBuilder(chameleon).getBuilder();
builder.setDebugMode(true);
return builder;
}