injections: reduce visibility of shred impl

GitOrigin-RevId: 59924f923bafc0a0638ed623a78a8e5f27edbba9
This commit is contained in:
Alexey Kudravtsev
2022-12-16 15:48:14 +01:00
committed by intellij-monorepo-bot
parent 375c849aa5
commit de4903662c
8 changed files with 19 additions and 21 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -26,7 +26,7 @@ public class Place extends SmartList<PsiLanguageInjectionHost.Shred> {
}
@NotNull
public SmartPsiElementPointer<PsiLanguageInjectionHost> getHostPointer() {
SmartPsiElementPointer<PsiLanguageInjectionHost> getHostPointer() {
return ((ShredImpl)get(0)).getSmartPointer();
}

View File

@@ -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);
}

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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);