mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
injections: reduce visibility of shred impl
GitOrigin-RevId: 59924f923bafc0a0638ed623a78a8e5f27edbba9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
375c849aa5
commit
de4903662c
@@ -85,13 +85,13 @@ class ShredManager {
|
||||
}
|
||||
|
||||
private static class ShredsIterator implements Iterator<ShredInfo> {
|
||||
private final List<PsiLanguageInjectionHost.Shred> myShreds;
|
||||
private final @NotNull List<? extends PsiLanguageInjectionHost.Shred> myShreds;
|
||||
|
||||
private int myShredIndex = -1;
|
||||
private String myShredText;
|
||||
private int mySymbolIndex = -1;
|
||||
|
||||
private ShredsIterator(@NotNull List<PsiLanguageInjectionHost.Shred> shreds) {
|
||||
private ShredsIterator(@NotNull List<? extends PsiLanguageInjectionHost.Shred> shreds) {
|
||||
myShreds = shreds;
|
||||
if (!shreds.isEmpty()) {
|
||||
myShredIndex = 0;
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.List;
|
||||
public class JavaInjectedFileChangesHandlerProvider implements InjectedFileChangesHandlerProvider {
|
||||
|
||||
@Override
|
||||
public InjectedFileChangesHandler createFileChangesHandler(List<PsiLanguageInjectionHost.Shred> shreds,
|
||||
public InjectedFileChangesHandler createFileChangesHandler(List<? extends PsiLanguageInjectionHost.Shred> shreds,
|
||||
Editor hostEditor,
|
||||
Document newDocument,
|
||||
PsiFile injectedFile) {
|
||||
@@ -43,14 +43,14 @@ public class JavaInjectedFileChangesHandlerProvider implements InjectedFileChang
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasSnippet(List<PsiLanguageInjectionHost.Shred> shreds) {
|
||||
private static boolean hasSnippet(List<? extends PsiLanguageInjectionHost.Shred> shreds) {
|
||||
for (PsiLanguageInjectionHost.Shred shred : shreds) {
|
||||
if (shred.getHost() instanceof PsiSnippetDocTag) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean hasBlockLiterals(List<PsiLanguageInjectionHost.Shred> shreds) {
|
||||
private static boolean hasBlockLiterals(List<? extends PsiLanguageInjectionHost.Shred> shreds) {
|
||||
for (PsiLanguageInjectionHost.Shred shred : shreds) {
|
||||
PsiLanguageInjectionHost host = shred.getHost();
|
||||
if (!(host instanceof PsiLiteralExpression)) continue;
|
||||
@@ -65,7 +65,7 @@ class OldJavaInjectedFileChangesHandler extends BaseInjectedFileChangesHandler {
|
||||
@NotNull
|
||||
private final RangeMarker myAltFullRange;
|
||||
|
||||
OldJavaInjectedFileChangesHandler(List<PsiLanguageInjectionHost.Shred> shreds, Editor editor,
|
||||
OldJavaInjectedFileChangesHandler(List<? extends PsiLanguageInjectionHost.Shred> shreds, Editor editor,
|
||||
Document newDocument,
|
||||
PsiFile injectedFile) {
|
||||
super(editor, newDocument, injectedFile);
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
*/
|
||||
public abstract class InjectedReferenceVisitor implements PsiLanguageInjectionHost.InjectedPsiVisitor {
|
||||
@Override
|
||||
public void visit(@NotNull PsiFile injectedPsi, @NotNull List<PsiLanguageInjectionHost.Shred> places) {}
|
||||
public void visit(@NotNull PsiFile injectedPsi, @NotNull List<? extends PsiLanguageInjectionHost.Shred> places) {}
|
||||
|
||||
public abstract void visitInjectedReference(@NotNull ReferenceInjector injector, @NotNull List<? extends PsiLanguageInjectionHost.Shred> places);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public class Place extends SmartList<PsiLanguageInjectionHost.Shred> {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public SmartPsiElementPointer<PsiLanguageInjectionHost> getHostPointer() {
|
||||
SmartPsiElementPointer<PsiLanguageInjectionHost> getHostPointer() {
|
||||
return ((ShredImpl)get(0)).getSmartPointer();
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ public abstract class InjectedLanguageBlockBuilder {
|
||||
Indent indent,
|
||||
int offset,
|
||||
TextRange injectedEditableRange,
|
||||
List<PsiLanguageInjectionHost.Shred> shreds) {
|
||||
List<? extends PsiLanguageInjectionHost.Shred> shreds) {
|
||||
addInjectedLanguageBlockWrapper(result, injectedFile.getNode(), indent, offset, injectedEditableRange);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public interface PsiLanguageInjectionHost extends PsiExternalReferenceHost {
|
||||
|
||||
@FunctionalInterface
|
||||
interface InjectedPsiVisitor {
|
||||
void visit(@NotNull PsiFile injectedPsi, @NotNull List<Shred> places);
|
||||
void visit(@NotNull PsiFile injectedPsi, @NotNull List<? extends Shred> places);
|
||||
}
|
||||
|
||||
interface Shred {
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -21,7 +20,7 @@ public interface InjectedFileChangesHandlerProvider {
|
||||
LanguageExtension<InjectedFileChangesHandlerProvider> EP =
|
||||
new LanguageExtension<>("com.intellij.editor.injectedFileChangesHandlerProvider");
|
||||
|
||||
InjectedFileChangesHandler createFileChangesHandler(List<PsiLanguageInjectionHost.Shred> shreds,
|
||||
InjectedFileChangesHandler createFileChangesHandler(List<? extends PsiLanguageInjectionHost.Shred> shreds,
|
||||
Editor hostEditor,
|
||||
Document newDocument,
|
||||
PsiFile injectedFile);
|
||||
|
||||
@@ -73,7 +73,7 @@ final class InjectedGeneralHighlightingPass extends GeneralHighlightingPass {
|
||||
|
||||
// all infos for the "injected fragment for the host which is inside" are indeed inside
|
||||
// but some infos for the "injected fragment for the host which is outside" can be still inside
|
||||
Set<PsiFile> injected = getInjectedPsiFiles(allInsideElements, allOutsideElements, progress);
|
||||
Set<PsiFile> injected = processInjectedPsiFiles(allInsideElements, allOutsideElements, progress);
|
||||
Set<HighlightInfo> injectedResult = Collections.synchronizedSet(new HashSet<>());
|
||||
if (!addInjectedPsiHighlights(injected, progress, injectedResult)) {
|
||||
throw new ProcessCanceledException();
|
||||
@@ -117,20 +117,19 @@ final class InjectedGeneralHighlightingPass extends GeneralHighlightingPass {
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Set<PsiFile> getInjectedPsiFiles(@NotNull List<? extends PsiElement> elements1,
|
||||
@NotNull List<? extends PsiElement> elements2,
|
||||
@NotNull ProgressIndicator progress) {
|
||||
private Set<PsiFile> processInjectedPsiFiles(@NotNull List<? extends PsiElement> elements1,
|
||||
@NotNull List<? extends PsiElement> elements2,
|
||||
@NotNull ProgressIndicator progress) {
|
||||
ApplicationManager.getApplication().assertReadAccessAllowed();
|
||||
|
||||
InjectedLanguageManagerImpl injectedLanguageManager = InjectedLanguageManagerImpl.getInstanceImpl(myProject);
|
||||
List<DocumentWindow> injected = injectedLanguageManager.getCachedInjectedDocumentsInRange(myFile, myFile.getTextRange());
|
||||
Collection<PsiElement> hosts = new HashSet<>(elements1.size() + elements2.size() + injected.size());
|
||||
List<DocumentWindow> cachedInjected = injectedLanguageManager.getCachedInjectedDocumentsInRange(myFile, myFile.getTextRange());
|
||||
Collection<PsiElement> hosts = new HashSet<>(elements1.size() + elements2.size() + cachedInjected.size());
|
||||
|
||||
PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(myProject);
|
||||
//rehighlight all injected PSI regardless the range,
|
||||
//since change in one place can lead to invalidation of injected PSI in (completely) other place.
|
||||
for (DocumentWindow documentRange : injected) {
|
||||
for (DocumentWindow documentRange : cachedInjected) {
|
||||
ProgressManager.checkCanceled();
|
||||
if (!documentRange.isValid()) continue;
|
||||
PsiFile file = psiDocumentManager.getPsiFile(documentRange);
|
||||
@@ -161,7 +160,7 @@ final class InjectedGeneralHighlightingPass extends GeneralHighlightingPass {
|
||||
injectedLanguageManager.processInjectableElements(elements2, collectInjectableProcessor);
|
||||
|
||||
Set<PsiFile> outInjected = new HashSet<>();
|
||||
PsiLanguageInjectionHost.InjectedPsiVisitor visitor = (injectedPsi, places) -> {
|
||||
PsiLanguageInjectionHost.InjectedPsiVisitor visitor = (injectedPsi, __) -> {
|
||||
synchronized (outInjected) {
|
||||
ProgressManager.checkCanceled();
|
||||
outInjected.add(injectedPsi);
|
||||
|
||||
Reference in New Issue
Block a user