mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-359853 update java parser tests
GitOrigin-RevId: 193dcd64366ee4cf583967ce77852830a21342de
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3884c82ddb
commit
f89994558f
+6
-4
@@ -4,8 +4,10 @@ package com.intellij.java.parser;
|
||||
import com.intellij.PathJavaTestUtil;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageExtension;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.lang.java.parser.BasicJavaParserUtil;
|
||||
import com.intellij.platform.backend.workspace.WorkspaceModelTopics;
|
||||
import com.intellij.platform.syntax.psi.LanguageSyntaxDefinitions;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
@@ -14,7 +16,6 @@ import com.intellij.testFramework.TestDataFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public abstract class AbstractBasicJavaParsingTestCase extends ParsingTestCase {
|
||||
|
||||
@@ -34,6 +35,7 @@ public abstract class AbstractBasicJavaParsingTestCase extends ParsingTestCase {
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
getProject().registerService(WorkspaceModelTopics.class, new WorkspaceModelTopics());
|
||||
addExplicit(LanguageSyntaxDefinitions.getINSTANCE(), JavaLanguage.INSTANCE, myConfigurator.getJavaSyntaxDefinition());
|
||||
myConfigurator.setUp(this);
|
||||
}
|
||||
|
||||
@@ -54,7 +56,7 @@ public abstract class AbstractBasicJavaParsingTestCase extends ParsingTestCase {
|
||||
}
|
||||
|
||||
|
||||
protected void doParserTest(Consumer<PsiBuilder> parser) {
|
||||
protected void doParserTest(BasicJavaParserUtil.@NotNull ParserWrapper parser) {
|
||||
String name = getTestName(false);
|
||||
try {
|
||||
doParserTest(loadFile(name + "." + myFileExt), parser);
|
||||
@@ -78,7 +80,7 @@ public abstract class AbstractBasicJavaParsingTestCase extends ParsingTestCase {
|
||||
DebugUtil.nodeTreeAsElementTypeToString(file.getNode(), !skipSpaces()).trim());
|
||||
}
|
||||
|
||||
protected void doParserTest(String text, Consumer<PsiBuilder> parser) {
|
||||
protected void doParserTest(String text, BasicJavaParserUtil.@NotNull ParserWrapper parser) {
|
||||
String name = getTestName(false);
|
||||
myFile = myConfigurator.createPsiFile(this, name, text, parser);
|
||||
try {
|
||||
|
||||
+5
-4
@@ -2,16 +2,17 @@
|
||||
package com.intellij.java.parser;
|
||||
|
||||
import com.intellij.lang.ParserDefinition;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.java.parser.BasicJavaParserUtil;
|
||||
import com.intellij.platform.syntax.psi.LanguageSyntaxDefinition;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public interface AbstractBasicJavaParsingTestConfigurator {
|
||||
ParserDefinition getJavaParserDefinition();
|
||||
|
||||
LanguageSyntaxDefinition getJavaSyntaxDefinition();
|
||||
|
||||
void setUp(@NotNull AbstractBasicJavaParsingTestCase thinJavaParsingTestCase);
|
||||
|
||||
void configure(@NotNull PsiFile file);
|
||||
@@ -20,7 +21,7 @@ public interface AbstractBasicJavaParsingTestConfigurator {
|
||||
PsiFile createPsiFile(@NotNull AbstractBasicJavaParsingTestCase thinJavaParsingTestCase,
|
||||
@NotNull String name,
|
||||
@NotNull String text,
|
||||
@NotNull Consumer<PsiBuilder> parser);
|
||||
@NotNull BasicJavaParserUtil.ParserWrapper parser);
|
||||
|
||||
boolean checkPsi();
|
||||
|
||||
|
||||
@@ -2,42 +2,22 @@
|
||||
package com.intellij.java.parser;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.LanguageASTFactory;
|
||||
import com.intellij.lang.ParserDefinition;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.lang.java.JavaParserDefinition;
|
||||
import com.intellij.lang.java.parser.JavaParserUtil;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.roots.impl.LanguageLevelProjectExtensionImpl;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.SingleRootFileViewProvider;
|
||||
import com.intellij.psi.impl.source.PsiJavaFileImpl;
|
||||
import com.intellij.psi.impl.source.tree.FileElement;
|
||||
import com.intellij.psi.impl.source.tree.JavaASTFactory;
|
||||
import com.intellij.psi.tree.IFileElementType;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import com.intellij.testFramework.ParsingTestCase;
|
||||
import com.intellij.platform.backend.workspace.WorkspaceModelTopics;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public abstract class JavaParsingTestCase extends ParsingTestCase {
|
||||
private LanguageLevel myLanguageLevel;
|
||||
|
||||
@SuppressWarnings("JUnitTestCaseWithNonTrivialConstructors")
|
||||
public JavaParsingTestCase(String dataPath) {
|
||||
this(dataPath, "java", new JavaParserDefinition());
|
||||
}
|
||||
|
||||
public JavaParsingTestCase(String dataPath, String fileExt, ParserDefinition... parserDefinitions) {
|
||||
super("psi/" + dataPath, fileExt, parserDefinitions);
|
||||
}
|
||||
@@ -61,76 +41,4 @@ public abstract class JavaParsingTestCase extends ParsingTestCase {
|
||||
protected void setLanguageLevel(@NotNull LanguageLevel languageLevel) {
|
||||
myLanguageLevel = languageLevel;
|
||||
}
|
||||
|
||||
protected void doParserTest(Consumer<PsiBuilder> parser) {
|
||||
String name = getTestName(false);
|
||||
try {
|
||||
doParserTest(loadFile(name + "." + myFileExt), parser);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void doParserTest(String text, Consumer<PsiBuilder> parser) {
|
||||
String name = getTestName(false);
|
||||
myFile = createPsiFile(name, text, parser);
|
||||
myFile.putUserData(PsiUtil.FILE_LANGUAGE_LEVEL_KEY, myLanguageLevel);
|
||||
try {
|
||||
checkResult(name, myFile);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static IFileElementType TEST_FILE_ELEMENT_TYPE = null;
|
||||
private static Consumer<PsiBuilder> TEST_PARSER;
|
||||
|
||||
private PsiFile createPsiFile(String name, String text, Consumer<PsiBuilder> parser) {
|
||||
if (TEST_FILE_ELEMENT_TYPE == null) {
|
||||
TEST_FILE_ELEMENT_TYPE = new MyIFileElementType();
|
||||
}
|
||||
|
||||
TEST_PARSER = parser;
|
||||
|
||||
LightVirtualFile virtualFile = new LightVirtualFile(name + '.' + myFileExt, JavaFileType.INSTANCE, text, -1);
|
||||
FileViewProvider viewProvider = new SingleRootFileViewProvider(PsiManager.getInstance(getProject()), virtualFile, true);
|
||||
return new PsiJavaFileImpl(viewProvider) {
|
||||
@NotNull
|
||||
@Override
|
||||
protected FileElement createFileElement(@NotNull CharSequence text) {
|
||||
return new FileElement(TEST_FILE_ELEMENT_TYPE, text);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static PsiBuilder createBuilder(ASTNode chameleon) {
|
||||
PsiBuilder builder = JavaParserUtil.createBuilder(chameleon);
|
||||
builder.setDebugMode(true);
|
||||
return builder;
|
||||
}
|
||||
|
||||
private static class MyIFileElementType extends IFileElementType {
|
||||
MyIFileElementType() {
|
||||
super("test.java.file", JavaLanguage.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ASTNode parseContents(@NotNull ASTNode chameleon) {
|
||||
PsiBuilder builder = createBuilder(chameleon);
|
||||
|
||||
PsiBuilder.Marker root = builder.mark();
|
||||
TEST_PARSER.accept(builder);
|
||||
if (!builder.eof()) {
|
||||
PsiBuilder.Marker unparsed = builder.mark();
|
||||
while (!builder.eof()) builder.advanceLexer();
|
||||
unparsed.error("Unparsed tokens");
|
||||
}
|
||||
root.done(this);
|
||||
|
||||
ASTNode rootNode = builder.getTreeBuilt();
|
||||
return rootNode.getFirstChildNode();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,15 +3,18 @@ package com.intellij.java.parser;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.lang.LanguageASTFactory;
|
||||
import com.intellij.lang.ParserDefinition;
|
||||
import com.intellij.lang.PsiBuilder;
|
||||
import com.intellij.java.frontback.psi.impl.syntax.JavaSyntaxDefinitionExtension;
|
||||
import com.intellij.lang.*;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.lang.java.JavaParserDefinition;
|
||||
import com.intellij.lang.java.parser.BasicJavaParserUtil;
|
||||
import com.intellij.lang.java.parser.JavaParserUtil;
|
||||
import com.intellij.lang.java.syntax.JavaElementTypeConverterExtension;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.roots.impl.LanguageLevelProjectExtensionImpl;
|
||||
import com.intellij.platform.syntax.SyntaxElementType;
|
||||
import com.intellij.platform.syntax.parser.SyntaxTreeBuilder;
|
||||
import com.intellij.platform.syntax.psi.*;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.psi.PsiFile;
|
||||
@@ -23,10 +26,9 @@ import com.intellij.psi.impl.source.tree.JavaASTFactory;
|
||||
import com.intellij.psi.tree.IFileElementType;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import kotlin.Pair;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class JavaParsingTestConfigurator implements AbstractBasicJavaParsingTestConfigurator {
|
||||
private LanguageLevel myLanguageLevel = JavaTestUtil.getMaxRegisteredLanguageLevel();
|
||||
|
||||
@@ -35,28 +37,42 @@ public class JavaParsingTestConfigurator implements AbstractBasicJavaParsingTest
|
||||
return new JavaParserDefinition();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LanguageSyntaxDefinition getJavaSyntaxDefinition() {
|
||||
return new JavaSyntaxDefinitionExtension();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUp(@NotNull AbstractBasicJavaParsingTestCase thinJavaParsingTestCase) {
|
||||
thinJavaParsingTestCase.getProject()
|
||||
.registerService(LanguageLevelProjectExtension.class, new LanguageLevelProjectExtensionImpl(thinJavaParsingTestCase.getProject()));
|
||||
thinJavaParsingTestCase.addExplicit(LanguageASTFactory.INSTANCE, JavaLanguage.INSTANCE, new JavaASTFactory());
|
||||
|
||||
JavaLanguage language = JavaLanguage.INSTANCE;
|
||||
LanguageASTFactory languageASTFactory = LanguageASTFactory.INSTANCE;
|
||||
thinJavaParsingTestCase.addExplicit(languageASTFactory, language, new JavaASTFactory());
|
||||
LanguageExtension<ElementTypeConverterFactory> elementTypeConverters = ElementTypeConverters.getInstance();
|
||||
|
||||
thinJavaParsingTestCase.addExplicit(elementTypeConverters, language, new JavaElementTypeConverterExtension());
|
||||
thinJavaParsingTestCase.addExplicit(elementTypeConverters, language, new JavaTestElementTypeConverterExtension());
|
||||
|
||||
thinJavaParsingTestCase.clearCachesOfLanguageExtension(language, languageASTFactory);
|
||||
thinJavaParsingTestCase.clearCachesOfLanguageExtension(language, elementTypeConverters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(@NotNull PsiFile file) {
|
||||
file.putUserData(PsiUtil.FILE_LANGUAGE_LEVEL_KEY, myLanguageLevel);
|
||||
LANGUAGE_LEVEL = myLanguageLevel;
|
||||
}
|
||||
|
||||
private static IFileElementType TEST_FILE_ELEMENT_TYPE = null;
|
||||
private static Consumer<PsiBuilder> TEST_PARSER;
|
||||
private static final MyIFileElementType myTestFileElementType = new MyIFileElementType();
|
||||
private static final SyntaxElementType mySyntaxElementType = new SyntaxElementType("test.java.file");
|
||||
|
||||
private static BasicJavaParserUtil.ParserWrapper TEST_PARSER;
|
||||
private static LanguageLevel LANGUAGE_LEVEL;
|
||||
|
||||
@Override
|
||||
public @NotNull PsiFile createPsiFile(@NotNull AbstractBasicJavaParsingTestCase thinJavaParsingTestCase, @NotNull String name, @NotNull String text, @NotNull Consumer<PsiBuilder> parser) {
|
||||
if (TEST_FILE_ELEMENT_TYPE == null) {
|
||||
TEST_FILE_ELEMENT_TYPE = new MyIFileElementType();
|
||||
}
|
||||
|
||||
public @NotNull PsiFile createPsiFile(@NotNull AbstractBasicJavaParsingTestCase thinJavaParsingTestCase, @NotNull String name, @NotNull String text, BasicJavaParserUtil.@NotNull ParserWrapper parser) {
|
||||
TEST_PARSER = parser;
|
||||
|
||||
LightVirtualFile virtualFile = new LightVirtualFile(name + '.' + "java", JavaFileType.INSTANCE, text, -1);
|
||||
@@ -66,7 +82,7 @@ public class JavaParsingTestConfigurator implements AbstractBasicJavaParsingTest
|
||||
@NotNull
|
||||
@Override
|
||||
protected FileElement createFileElement(@NotNull CharSequence text) {
|
||||
return new FileElement(TEST_FILE_ELEMENT_TYPE, text);
|
||||
return new FileElement(myTestFileElementType, text);
|
||||
}
|
||||
};
|
||||
configure(file);
|
||||
@@ -79,12 +95,12 @@ public class JavaParsingTestConfigurator implements AbstractBasicJavaParsingTest
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLanguageLevel(@NotNull LanguageLevel level) {
|
||||
public void setLanguageLevel(@NotNull com.intellij.pom.java.LanguageLevel level) {
|
||||
myLanguageLevel = level;
|
||||
}
|
||||
|
||||
private static PsiBuilder createBuilder(ASTNode chameleon) {
|
||||
PsiBuilder builder = JavaParserUtil.createBuilder(chameleon);
|
||||
private static PsiSyntaxBuilder createBuilder(ASTNode chameleon) {
|
||||
PsiSyntaxBuilder builder = JavaParserUtil.createSyntaxBuilder(chameleon).getFirst();
|
||||
builder.setDebugMode(true);
|
||||
return builder;
|
||||
}
|
||||
@@ -96,19 +112,29 @@ public class JavaParsingTestConfigurator implements AbstractBasicJavaParsingTest
|
||||
|
||||
@Override
|
||||
public ASTNode parseContents(@NotNull ASTNode chameleon) {
|
||||
PsiBuilder builder = createBuilder(chameleon);
|
||||
|
||||
PsiBuilder.Marker root = builder.mark();
|
||||
TEST_PARSER.accept(builder);
|
||||
PsiSyntaxBuilder psiBuilder = createBuilder(chameleon);
|
||||
SyntaxTreeBuilder builder = psiBuilder.getSyntaxTreeBuilder();
|
||||
SyntaxTreeBuilder.Marker root = builder.mark();
|
||||
TEST_PARSER.parse(builder, LANGUAGE_LEVEL);
|
||||
if (!builder.eof()) {
|
||||
PsiBuilder.Marker unparsed = builder.mark();
|
||||
SyntaxTreeBuilder.@NotNull Marker unparsed = builder.mark();
|
||||
while (!builder.eof()) builder.advanceLexer();
|
||||
unparsed.error("Unparsed tokens");
|
||||
}
|
||||
root.done(this);
|
||||
root.done(mySyntaxElementType);
|
||||
|
||||
ASTNode rootNode = builder.getTreeBuilt();
|
||||
ASTNode rootNode = psiBuilder.getTreeBuilt();
|
||||
return rootNode.getFirstChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
private static class JavaTestElementTypeConverterExtension implements ElementTypeConverterFactory {
|
||||
public static final @NotNull ElementTypeConverter CONVERTER =
|
||||
ElementTypeConverterKt.elementTypeConverterOf(new Pair<>(mySyntaxElementType, myTestFileElementType));
|
||||
|
||||
@Override
|
||||
public @NotNull ElementTypeConverter getElementTypeConverter() {
|
||||
return CONVERTER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
|
||||
public class AnnotationParserTest extends AbstractBasicAnnotationParserTest {
|
||||
public AnnotationParserTest() {
|
||||
@@ -25,6 +25,6 @@ public class AnnotationParserTest extends AbstractBasicAnnotationParserTest {
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getDeclarationParser().parseAnnotations(builder));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getDeclarationParser().parseAnnotations(builder));
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
|
||||
public class DeclarationParserTest extends AbstractBasicDeclarationParserTest {
|
||||
|
||||
@@ -12,6 +12,6 @@ public class DeclarationParserTest extends AbstractBasicDeclarationParserTest {
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text, boolean isAnnotation, boolean isEnum) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getDeclarationParser().parseClassBodyWithBraces(builder, isAnnotation, isEnum));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getDeclarationParser().parseClassBodyWithBraces(builder, isAnnotation, isEnum));
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
|
||||
public class ExpressionParserTest extends AbstractBasicExpressionParserTest {
|
||||
public ExpressionParserTest() {
|
||||
@@ -11,11 +11,11 @@ public class ExpressionParserTest extends AbstractBasicExpressionParserTest {
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getExpressionParser().parse(builder));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getExpressionParser().parse(builder));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doParserTest() {
|
||||
doParserTest(builder -> JavaParser.INSTANCE.getExpressionParser().parse(builder));
|
||||
doParserTest((builder, languageLevel) -> new JavaParser(languageLevel).getExpressionParser().parse(builder));
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
|
||||
public class FileParserTest extends AbstractBasicFileParserTest {
|
||||
public FileParserTest() {
|
||||
@@ -25,6 +25,6 @@ public class FileParserTest extends AbstractBasicFileParserTest {
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getFileParser().parse(builder));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getFileParser().parse(builder));
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
|
||||
public class ModuleParserTest extends AbstractBasicModuleParserTest {
|
||||
public ModuleParserTest() {
|
||||
@@ -25,6 +25,6 @@ public class ModuleParserTest extends AbstractBasicModuleParserTest {
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getFileParser().parse(builder));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getFileParser().parse(builder));
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.lang.java.parser.PatternParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.PatternParser;
|
||||
|
||||
public class PatternParserTest extends AbstractBasicPatternParserTest {
|
||||
public PatternParserTest() {
|
||||
@@ -12,8 +12,8 @@ public class PatternParserTest extends AbstractBasicPatternParserTest {
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text) {
|
||||
doParserTest(text, builder -> {
|
||||
PatternParser parser = JavaParser.INSTANCE.getPatternParser();
|
||||
doParserTest(text, (builder, languageLevel) -> {
|
||||
PatternParser parser = new JavaParser(languageLevel).getPatternParser();
|
||||
if (!parser.isPattern(builder)) {
|
||||
throw new IllegalArgumentException("Pattern is not expected");
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.BasicReferenceParser;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.ReferenceParser;
|
||||
|
||||
public class ReferenceParserTest extends AbstractBasicReferenceParserTest {
|
||||
public ReferenceParserTest() {
|
||||
@@ -12,17 +12,17 @@ public class ReferenceParserTest extends AbstractBasicReferenceParserTest {
|
||||
|
||||
@Override
|
||||
protected void doRefParserTest(String text, boolean incomplete) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getReferenceParser().parseJavaCodeReference(builder, incomplete, false, false, false));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getReferenceParser().parseJavaCodeReference(builder, incomplete, false, false, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doTypeParserTest(String text) {
|
||||
int flags = BasicReferenceParser.ELLIPSIS | BasicReferenceParser.DIAMONDS | BasicReferenceParser.DISJUNCTIONS;
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getReferenceParser().parseType(builder, flags));
|
||||
int flags = ReferenceParser.ELLIPSIS | ReferenceParser.DIAMONDS | ReferenceParser.DISJUNCTIONS;
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getReferenceParser().parseType(builder, flags));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doTypeParamsParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getReferenceParser().parseTypeParameters(builder));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getReferenceParser().parseTypeParameters(builder));
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestConfigurator;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.java.syntax.parser.JavaParser;
|
||||
|
||||
public class StatementParserTest extends AbstractBasicStatementParserTest {
|
||||
public StatementParserTest() {
|
||||
@@ -11,11 +11,11 @@ public class StatementParserTest extends AbstractBasicStatementParserTest {
|
||||
|
||||
@Override
|
||||
protected void doBlockParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getStatementParser().parseCodeBlockDeep(builder, true));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getStatementParser().parseCodeBlockDeep(builder, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doParserTest(String text) {
|
||||
doParserTest(text, builder -> JavaParser.INSTANCE.getStatementParser().parseStatements(builder));
|
||||
doParserTest(text, (builder, languageLevel) -> new JavaParser(languageLevel).getStatementParser().parseStatements(builder));
|
||||
}
|
||||
}
|
||||
@@ -46,6 +46,7 @@ import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import com.intellij.util.pico.DefaultPicoContainer;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.picocontainer.ComponentAdapter;
|
||||
|
||||
@@ -156,8 +157,13 @@ public abstract class ParsingTestCase extends UsefulTestCase {
|
||||
return definition;
|
||||
}
|
||||
});
|
||||
LanguageParserDefinitions.INSTANCE.clearCache(language);
|
||||
disposeOnTearDown(() -> LanguageParserDefinitions.INSTANCE.clearCache(language));
|
||||
clearCachesOfLanguageExtension(language, LanguageParserDefinitions.INSTANCE);
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final void clearCachesOfLanguageExtension(Language language, LanguageExtension<?> instance) {
|
||||
instance.clearCache(language);
|
||||
disposeOnTearDown(() -> instance.clearCache(language));
|
||||
}
|
||||
|
||||
public void configureFromParserDefinition(@NotNull ParserDefinition definition, String extension) {
|
||||
|
||||
Reference in New Issue
Block a user