[java, import-module] parsing import module construction (JEP-476) IDEA-355529

GitOrigin-RevId: 83c9e28007a731565809143b33b3dbd96a4a3ae5
This commit is contained in:
Aleksey Dobrynin
2024-07-01 17:43:18 +00:00
committed by intellij-monorepo-bot
parent a751d46eb2
commit 52a80caa73
16 changed files with 26 additions and 225 deletions
@@ -196,7 +196,12 @@ public class BasicFileParser {
IElementType type = getImportType(builder);
boolean isStatic = type == myJavaElementTypeContainer.IMPORT_STATIC_STATEMENT;
boolean isModule = type == myJavaElementTypeContainer.IMPORT_MODULE_STATEMENT;
boolean isOk = myParser.getReferenceParser().parseImportCodeReference(builder, isStatic, isModule);
final boolean isOk;
if (isModule) {
isOk = myParser.getModuleParser().parseName(builder) != null;
} else {
isOk = myParser.getReferenceParser().parseImportCodeReference(builder, isStatic);
}
if (isOk) semicolon(builder);
done(statement, type, myWhiteSpaceAndCommentSetHolder);
@@ -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;
@@ -94,7 +94,7 @@ public class BasicModuleParser {
return module;
}
private PsiBuilder.Marker parseName(PsiBuilder builder) {
public PsiBuilder.Marker parseName(PsiBuilder builder) {
PsiBuilder.Marker nameElement = builder.mark();
boolean empty = true;
@@ -112,7 +112,7 @@ public class BasicReferenceParser {
return typeInfo;
}
else if (tokenType == JavaTokenType.IDENTIFIER) {
parseJavaCodeReference(builder, isSet(flags, EAT_LAST_DOT), true, false, false, false, false, isSet(flags, DIAMONDS), typeInfo);
parseJavaCodeReference(builder, isSet(flags, EAT_LAST_DOT), true, false, false, false, isSet(flags, DIAMONDS), typeInfo);
}
else if (tokenType == JavaTokenType.VAR_KEYWORD) {
builder.advanceLexer();
@@ -195,18 +195,18 @@ public class BasicReferenceParser {
boolean parameterList,
boolean isNew,
boolean diamonds) {
return parseJavaCodeReference(builder, eatLastDot, parameterList, false, false, false, isNew, diamonds, new TypeInfo());
return parseJavaCodeReference(builder, eatLastDot, parameterList, false, false, isNew, diamonds, new TypeInfo());
}
public boolean parseImportCodeReference(PsiBuilder builder, boolean isStatic, boolean isModule) {
public boolean parseImportCodeReference(PsiBuilder builder, boolean isStatic) {
TypeInfo typeInfo = new TypeInfo();
parseJavaCodeReference(builder, true, false, true, isStatic, isModule, false, false, typeInfo);
parseJavaCodeReference(builder, true, false, true, isStatic, false, false, typeInfo);
return !typeInfo.hasErrors;
}
@Nullable
private PsiBuilder.Marker parseJavaCodeReference(PsiBuilder builder, boolean eatLastDot, boolean parameterList, boolean isImport,
boolean isStaticImport, boolean isModuleImport, boolean isNew, boolean diamonds,
boolean isStaticImport, boolean isNew, boolean diamonds,
TypeInfo typeInfo) {
PsiBuilder.Marker refElement = builder.mark();
@@ -224,7 +224,7 @@ public class BasicReferenceParser {
if (parameterList) {
typeInfo.isParameterized = parseReferenceParameterList(builder, true, diamonds);
}
else if (!isStaticImport && !isModuleImport) {
else if (!isStaticImport) {
emptyElement(builder, myJavaElementTypeContainer.REFERENCE_PARAMETER_LIST);
}
@@ -275,9 +275,6 @@ public class BasicReferenceParser {
if (isStaticImport) {
refElement.done(myJavaElementTypeContainer.IMPORT_STATIC_REFERENCE);
}
else if (isModuleImport) {
refElement.done(myJavaElementTypeContainer.IMPORT_MODULE_REFERENCE);
}
else {
refElement.done(myJavaElementTypeContainer.JAVA_CODE_REFERENCE);
}
@@ -87,8 +87,6 @@ public abstract class AbstractBasicJavaElementTypeFactory {
public final IElementType IMPORT_STATIC_REFERENCE;
public final IElementType IMPORT_MODULE_REFERENCE;
public final IElementType TYPE;
public final IElementType DIAMOND_TYPE;
@@ -274,7 +272,6 @@ public abstract class AbstractBasicJavaElementTypeFactory {
IElementType NAME_VALUE_PAIR,
IElementType LITERAL_EXPRESSION,
IElementType IMPORT_STATIC_REFERENCE,
IElementType IMPORT_MODULE_REFERENCE,
IElementType TYPE,
IElementType DIAMOND_TYPE,
IElementType REFERENCE_PARAMETER_LIST,
@@ -388,7 +385,6 @@ public abstract class AbstractBasicJavaElementTypeFactory {
this.NAME_VALUE_PAIR = NAME_VALUE_PAIR;
this.LITERAL_EXPRESSION = LITERAL_EXPRESSION;
this.IMPORT_STATIC_REFERENCE = IMPORT_STATIC_REFERENCE;
this.IMPORT_MODULE_REFERENCE = IMPORT_MODULE_REFERENCE;
this.TYPE = TYPE;
this.DIAMOND_TYPE = DIAMOND_TYPE;
this.REFERENCE_PARAMETER_LIST = REFERENCE_PARAMETER_LIST;
@@ -72,7 +72,6 @@ public interface BasicJavaElementType {
IElementType BASIC_PERMITS_LIST = new IJavaElementType("PERMITS_LIST", true);
IElementType BASIC_IMPORT_STATIC_REFERENCE = new IJavaElementType("IMPORT_STATIC_REFERENCE");
IElementType BASIC_IMPORT_MODULE_REFERENCE = new IJavaElementType("IMPORT_MODULE_REFERENCE");
IElementType BASIC_TYPE = new IJavaElementType("TYPE");
IElementType BASIC_DIAMOND_TYPE = new IJavaElementType("DIAMOND_TYPE");
IElementType BASIC_REFERENCE_PARAMETER_LIST = new IJavaElementType("REFERENCE_PARAMETER_LIST", true);