mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
preserve smart pointers' forInjected when recreating injection shreds
This commit is contained in:
@@ -67,12 +67,13 @@ class ShredImpl implements PsiLanguageInjectionHost.Shred {
|
||||
@NotNull PsiLanguageInjectionHost newHost) {
|
||||
SmartPsiFileRange rangeMarker = relevantRangeInHost;
|
||||
Segment oldRangeInHostElementPSI = calcRangeInsideHostElement(false);
|
||||
SmartPointerManager pointerManager = SmartPointerManager.getInstance(rangeMarker.getProject());
|
||||
SmartPsiElementPointer<PsiLanguageInjectionHost> newHostPointer = pointerManager.createSmartPsiElementPointer(newHost);
|
||||
SmartPointerManagerImpl pointerManager = (SmartPointerManagerImpl)SmartPointerManager.getInstance(rangeMarker.getProject());
|
||||
SmartPsiElementPointer<PsiLanguageInjectionHost> newHostPointer = pointerManager.createSmartPsiElementPointer(newHost, newHost.getContainingFile(), true);
|
||||
|
||||
if (!rangeInHostElementPSI.equals(TextRange.create(oldRangeInHostElementPSI))) {
|
||||
Segment hostElementRange = newHostPointer.getRange();
|
||||
rangeMarker = ((SmartPointerManagerImpl)pointerManager).createSmartPsiFileRangePointer(rangeMarker.getContainingFile(), rangeInHostElementPSI.shiftRight(hostElementRange.getStartOffset()), true);
|
||||
rangeMarker = pointerManager
|
||||
.createSmartPsiFileRangePointer(rangeMarker.getContainingFile(), rangeInHostElementPSI.shiftRight(hostElementRange.getStartOffset()), true);
|
||||
}
|
||||
return new ShredImpl(rangeMarker, newHostPointer, prefix, suffix, rangeInDecodedPSI, usePsiRange, isOneLine);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user