IDEA-369465 [spring] Boot: Add support for 'optional:' prefix in autoconfiguration imports

IJ-MR-188597

GitOrigin-RevId: 2578d3addd473e1cc988137066bfba4dc1b916f0
This commit is contained in:
Daniil Tsarev
2026-02-26 13:18:36 +00:00
committed by intellij-monorepo-bot
parent 3a3e787b32
commit 7251d250b5
3 changed files with 16 additions and 17 deletions
@@ -8,13 +8,11 @@ import com.intellij.lang.PsiBuilder;
import com.intellij.lang.PsiParser;
import com.intellij.lang.spi.SPILanguage;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.JavaTokenType;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.tree.TokenSet;
@@ -26,10 +24,8 @@ import com.intellij.spi.psi.SPIPackageOrClassReferenceElement;
import org.jetbrains.annotations.NotNull;
public final class SPIParserDefinition implements ParserDefinition {
public static final IFileElementType SPI_FILE_ELEMENT_TYPE = new IFileElementType(SPILanguage.INSTANCE);
private static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE);
private static final Logger LOG = Logger.getInstance(SPIParserDefinition.class);
public static final IFileElementType SPI_FILE_ELEMENT_TYPE = new IFileElementType(SPILanguage.INSTANCE);
@Override
public @NotNull Lexer createLexer(Project project) {
@@ -40,7 +36,7 @@ public final class SPIParserDefinition implements ParserDefinition {
public @NotNull PsiParser createParser(Project project) {
return new PsiParser() {
@Override
public @NotNull ASTNode parse(IElementType root, PsiBuilder builder) {
public @NotNull ASTNode parse(@NotNull IElementType root, @NotNull PsiBuilder builder) {
final PsiBuilder.Marker rootMarker = builder.mark();
final PsiBuilder.Marker propertiesList = builder.mark();
while (!builder.eof()) {
@@ -58,11 +54,6 @@ public final class SPIParserDefinition implements ParserDefinition {
return SPI_FILE_ELEMENT_TYPE;
}
@Override
public @NotNull TokenSet getWhitespaceTokens() {
return WHITE_SPACES;
}
@Override
public @NotNull TokenSet getCommentTokens() {
return TokenSet.create(JavaTokenType.END_OF_LINE_COMMENT);
@@ -111,7 +102,7 @@ public final class SPIParserDefinition implements ParserDefinition {
}
}
private static void parseProviderChar(final PsiBuilder builder, PsiBuilder.Marker pack) {
public static void parseProviderChar(final PsiBuilder builder, PsiBuilder.Marker pack) {
builder.advanceLexer();
final IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.DOT || tokenType == SPITokenType.DOLLAR) {
@@ -2,6 +2,7 @@
package com.intellij.spi.psi;
import com.intellij.extapi.psi.PsiFileBase;
import com.intellij.lang.Language;
import com.intellij.lang.spi.SPILanguage;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.fileTypes.FileType;
@@ -26,8 +27,13 @@ import java.util.ArrayList;
import java.util.List;
public class SPIFile extends PsiFileBase {
protected SPIFile(@NotNull FileViewProvider viewProvider, Language language) {
super(viewProvider, language);
}
public SPIFile(@NotNull FileViewProvider viewProvider) {
super(viewProvider, SPILanguage.INSTANCE);
this(viewProvider, SPILanguage.INSTANCE);
}
@Override
@@ -19,10 +19,12 @@ import com.intellij.lang.Language;
public class SPILanguage extends Language {
public static final SPILanguage INSTANCE = new SPILanguage();
protected SPILanguage() {
super("SPI");
protected SPILanguage(String id) {
super(id);
}
protected SPILanguage() {
this("SPI");
}
}