From f2d7799ac9885f8110b6f8ce6183c7bc248d74ee Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Tue, 25 Mar 2025 14:41:19 +0100 Subject: [PATCH] IDEA-359853 replace Pair with PsiSyntaxBuilderWithLanguageLevel GitOrigin-RevId: ae58a7bf0e01918f820da4c72b121b184a1f8b9e --- .../lang/java/parser/BasicJavaParserUtil.java | 14 +++++++------- .../psi/impl/source/BasicJavaElementType.java | 15 ++++++++------- .../psi/impl/java/stubs/JavaStubDefinition.java | 10 ++++------ .../intellij/lang/java/parser/JavaParserUtil.java | 4 +--- .../psi/impl/source/JavaFileElementType.java | 8 ++++---- .../java/parser/JavaParsingTestConfigurator.java | 2 +- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaParserUtil.java b/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaParserUtil.java index 73f47412c9b6..7ec0a577c632 100644 --- a/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaParserUtil.java +++ b/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaParserUtil.java @@ -326,9 +326,9 @@ public final class BasicJavaParserUtil { } - public static @NotNull Pair createSyntaxBuilder(@NotNull ASTNode chameleon, - @NotNull Function languageLevelFunction, - @NotNull Function psiAsLexer) { + public static @NotNull PsiSyntaxBuilderWithLanguageLevel createSyntaxBuilder(@NotNull ASTNode chameleon, + @NotNull Function languageLevelFunction, + @NotNull Function 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 createSyntaxBuilder(@NotNull LighterLazyParseableNode chameleon, - @NotNull Function languageLevelFunction) { + public static @NotNull PsiSyntaxBuilderWithLanguageLevel createSyntaxBuilder(@NotNull LighterLazyParseableNode chameleon, + @NotNull Function 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); } /** diff --git a/java/java-frontback-psi-impl/src/com/intellij/psi/impl/source/BasicJavaElementType.java b/java/java-frontback-psi-impl/src/com/intellij/psi/impl/source/BasicJavaElementType.java index b19610ca7023..ed852be77605 100644 --- a/java/java-frontback-psi-impl/src/com/intellij/psi/impl/source/BasicJavaElementType.java +++ b/java/java-frontback-psi-impl/src/com/intellij/psi/impl/source/BasicJavaElementType.java @@ -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 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 parseContents(final @NotNull LighterLazyParseableNode chameleon) { - Pair 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); diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/java/stubs/JavaStubDefinition.java b/java/java-indexing-impl/src/com/intellij/psi/impl/java/stubs/JavaStubDefinition.java index 7ec2ff2ef508..5a493f61df8d 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/java/stubs/JavaStubDefinition.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/java/stubs/JavaStubDefinition.java @@ -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 parseContentsLight(@NotNull ASTNode chameleon) { - Pair 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 tree = psiSyntaxBuilder.getLightTree(); ParsingDiagnostics.registerParse(builder, JavaLanguage.INSTANCE, System.nanoTime() - startTime); return tree; diff --git a/java/java-psi-impl/src/com/intellij/lang/java/parser/JavaParserUtil.java b/java/java-psi-impl/src/com/intellij/lang/java/parser/JavaParserUtil.java index d43b7000b308..33b34fb62ed4 100644 --- a/java/java-psi-impl/src/com/intellij/lang/java/parser/JavaParserUtil.java +++ b/java/java-psi-impl/src/com/intellij/lang/java/parser/JavaParserUtil.java @@ -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 createSyntaxBuilder(final ASTNode chameleon) { + public static @NotNull PsiSyntaxBuilderWithLanguageLevel createSyntaxBuilder(final ASTNode chameleon) { return BasicJavaParserUtil.createSyntaxBuilder(chameleon, (psi) -> PsiUtil.getLanguageLevel(psi), (psi) -> obtainTokens(psi)); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java index 2f9d1730f697..46fbd63ded15 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/JavaFileElementType.java @@ -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 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; diff --git a/java/java-tests/testSrc/com/intellij/java/parser/JavaParsingTestConfigurator.java b/java/java-tests/testSrc/com/intellij/java/parser/JavaParsingTestConfigurator.java index e1f13166f4c8..735c80d54148 100644 --- a/java/java-tests/testSrc/com/intellij/java/parser/JavaParsingTestConfigurator.java +++ b/java/java-tests/testSrc/com/intellij/java/parser/JavaParsingTestConfigurator.java @@ -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; }