mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Optimize Imports shouldn't lead to stub/PSI mismatch on record keyword inside import list
GitOrigin-RevId: 9cffe8feec30d275f97c98c8d9bae290547bc1cd
This commit is contained in:
committed by
intellij-monorepo-bot
parent
143416a5e5
commit
d81527a685
@@ -408,7 +408,7 @@ public class DeclarationParser {
|
||||
return parseFieldOrLocalVariable(builder, declaration, declarationStart, context);
|
||||
}
|
||||
|
||||
private static boolean isRecordToken(PsiBuilder builder, IElementType tokenType) {
|
||||
static boolean isRecordToken(PsiBuilder builder, IElementType tokenType) {
|
||||
return tokenType == JavaTokenType.IDENTIFIER && PsiKeyword.RECORD.equals(builder.getTokenText()) &&
|
||||
builder.lookAhead(1) == JavaTokenType.IDENTIFIER &&
|
||||
getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_14_PREVIEW);
|
||||
|
||||
@@ -86,7 +86,7 @@ public class FileParser {
|
||||
|
||||
private static boolean stopImportListParsing(PsiBuilder b) {
|
||||
IElementType type = b.getTokenType();
|
||||
if (IMPORT_LIST_STOPPER_SET.contains(type)) return true;
|
||||
if (IMPORT_LIST_STOPPER_SET.contains(type) || DeclarationParser.isRecordToken(b, type)) return true;
|
||||
if (type == JavaTokenType.IDENTIFIER) {
|
||||
String text = b.getTokenText();
|
||||
if (PsiKeyword.OPEN.equals(text) || PsiKeyword.MODULE.equals(text)) return true;
|
||||
|
||||
@@ -27,7 +27,9 @@ import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.PackageEntry;
|
||||
import com.intellij.psi.codeStyle.PackageEntryTable;
|
||||
import com.intellij.psi.codeStyle.modifier.CodeStyleSettingsModifier;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import com.intellij.testFramework.ServiceContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class OptimizeImportsTest extends OptimizeImportsTestCase {
|
||||
static final String BASE_PATH = PathManagerEx.getTestDataPath() + "/psi/optimizeImports";
|
||||
@@ -91,6 +93,25 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase {
|
||||
myFixture.checkResult("class Foo {}");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NotNull LightProjectDescriptor getProjectDescriptor() {
|
||||
return JAVA_14;
|
||||
}
|
||||
|
||||
public void testNoStubPsiMismatchOnRecordInsideImportList() {
|
||||
myFixture.enableInspections(new UnusedImportInspection());
|
||||
myFixture.configureByText("a.java", "import java.ut<caret>il.List;\n" +
|
||||
"record foo.bar.Goo;\n" +
|
||||
"import java.util.Collection;\n\n" +
|
||||
"class Foo {}");
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Optimize imports"));
|
||||
|
||||
// whatever: main thing it didn't throw
|
||||
myFixture.checkResult("record foo.bar.Goo;\n" +
|
||||
"import java.util.Collection;\n\n" +
|
||||
"class Foo {}");
|
||||
}
|
||||
|
||||
public void testPerFileImportSettings() {
|
||||
CodeStyle.dropTemporarySettings(getProject());
|
||||
MockCodeStyleSettingsModifier modifier = new MockCodeStyleSettingsModifier(
|
||||
|
||||
Reference in New Issue
Block a user