mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix java stub-PSI mismatch when typing "class"
This commit is contained in:
+2
-7
@@ -23,17 +23,12 @@ import com.intellij.psi.impl.cache.RecordUtil;
|
||||
import com.intellij.psi.impl.java.stubs.impl.PsiModifierListStubImpl;
|
||||
import com.intellij.psi.impl.source.PsiModifierListImpl;
|
||||
import com.intellij.psi.impl.source.tree.java.ModifierListElement;
|
||||
import com.intellij.psi.stubs.IndexSink;
|
||||
import com.intellij.psi.stubs.StubElement;
|
||||
import com.intellij.psi.stubs.StubInputStream;
|
||||
import com.intellij.psi.stubs.StubOutputStream;
|
||||
import com.intellij.psi.stubs.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static com.intellij.psi.impl.source.tree.JavaElementType.*;
|
||||
|
||||
/**
|
||||
* @author max
|
||||
*/
|
||||
@@ -82,7 +77,7 @@ public class JavaModifierListElementType extends JavaStubElementType<PsiModifier
|
||||
}
|
||||
|
||||
private static boolean shouldCreateStub(IElementType parentType) {
|
||||
return parentType != null && parentType != LOCAL_VARIABLE && parentType != RESOURCE_VARIABLE && parentType != RESOURCE_LIST;
|
||||
return parentType instanceof IStubElementType;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.codeInspection.dataFlow.ControlFlowAnalyzer
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.ReadAction
|
||||
import com.intellij.openapi.command.WriteCommandAction
|
||||
import com.intellij.openapi.editor.Document
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.source.PsiClassImpl
|
||||
import com.intellij.psi.impl.source.PsiFileImpl
|
||||
@@ -29,7 +30,6 @@ import com.intellij.psi.search.searches.ClassInheritorsSearch
|
||||
import com.intellij.psi.util.PsiUtil
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||
import com.siyeh.ig.style.LambdaBodyCanBeCodeBlockInspection
|
||||
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
@@ -208,4 +208,17 @@ class Foo {
|
||||
PsiTestUtil.checkStubsMatchText(file)
|
||||
}
|
||||
}
|
||||
|
||||
void "test inserting class keyword"() {
|
||||
String text = "class Foo { void foo() { return; } }"
|
||||
PsiFile psiFile = myFixture.addFileToProject("a.java", text)
|
||||
Document document = psiFile.getViewProvider().getDocument()
|
||||
|
||||
WriteCommandAction.runWriteCommandAction(project) {
|
||||
document.insertString(text.indexOf("return"), "class ")
|
||||
}
|
||||
PsiDocumentManager.getInstance(getProject()).commitAllDocuments()
|
||||
PsiTestUtil.checkStubsMatchText(psiFile)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user