mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
completion copy: don't set original file when it's already set (e.g. after reuse (EA-209911)
GitOrigin-RevId: 2e54eb22e556538120adfad992fb899014bfe51b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0777432ed2
commit
14b1ef024f
+12
-1
@@ -24,6 +24,7 @@ import com.intellij.psi.impl.PsiFileEx;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.reference.SoftReference;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -140,7 +141,7 @@ public class CompletionInitializationUtil {
|
||||
if (originalFile != injected &&
|
||||
injected instanceof PsiFileImpl &&
|
||||
InjectedLanguageManager.getInstance(originalFile.getProject()).isInjectedFragment(originalFile)) {
|
||||
((PsiFileImpl)injected).setOriginalFile(originalFile);
|
||||
setOriginalFile((PsiFileImpl)injected, originalFile);
|
||||
}
|
||||
VirtualFile virtualFile = injected.getVirtualFile();
|
||||
DocumentWindow documentWindow = null;
|
||||
@@ -157,6 +158,16 @@ public class CompletionInitializationUtil {
|
||||
return hostCopyOffsets;
|
||||
}
|
||||
|
||||
private static void setOriginalFile(PsiFileImpl copy, PsiFile origin) {
|
||||
PsiFile currentOrigin = copy.getOriginalFile();
|
||||
if (currentOrigin == copy) {
|
||||
copy.setOriginalFile(origin);
|
||||
} else {
|
||||
PsiUtilCore.ensureValid(currentOrigin);
|
||||
LOG.assertTrue(currentOrigin == origin);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static PsiElement findCompletionPositionLeaf(OffsetsInFile offsets, int offset, PsiFile originalFile) {
|
||||
PsiElement insertedElement = offsets.getFile().findElementAt(offset);
|
||||
|
||||
Reference in New Issue
Block a user