From 3669d89e46e7d1a6d2b890ebf6314e4d18c7fd64 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 22 Apr 2011 18:48:25 +0400 Subject: [PATCH] IDEA-67711 --- .../impl/smartPointers/AnchorElementInfo.java | 4 +- .../src/com/intellij/usageView/UsageInfo.java | 8 - .../daemon/impl/LocalInspectionsPass.java | 29 +--- .../folding/impl/EditorFoldingInfo.java | 5 +- .../ex/ProblemDescriptorImpl.java | 8 - .../InjectedSelfElementInfo.java | 26 +-- .../impl/smartPointers/LazyPointerImpl.java | 159 ------------------ .../MultiRootSelfElementInfo.java | 5 +- .../impl/smartPointers/SelfElementInfo.java | 17 +- .../impl/smartPointers/SmartPointerEx.java | 4 +- .../SmartPointerManagerImpl.java | 18 +- .../SmartPsiElementPointerImpl.java | 8 +- .../SmartPsiFileRangePointerImpl.java | 2 +- .../usages/UsageInfo2UsageAdapter.java | 6 - .../intellij/usages/impl/UsageViewImpl.java | 5 - 15 files changed, 44 insertions(+), 260 deletions(-) delete mode 100644 platform/lang-impl/src/com/intellij/psi/impl/smartPointers/LazyPointerImpl.java diff --git a/java/java-impl/src/com/intellij/psi/impl/smartPointers/AnchorElementInfo.java b/java/java-impl/src/com/intellij/psi/impl/smartPointers/AnchorElementInfo.java index 02612fae3d7a..4c03154a9f0c 100644 --- a/java/java-impl/src/com/intellij/psi/impl/smartPointers/AnchorElementInfo.java +++ b/java/java-impl/src/com/intellij/psi/impl/smartPointers/AnchorElementInfo.java @@ -35,14 +35,14 @@ class AnchorElementInfo extends SelfElementInfo { private IStubElementType myStubElementType; AnchorElementInfo(@NotNull PsiElement anchor, @NotNull PsiFile containingFile) { - super(containingFile.getProject(), anchor.getTextRange(), anchor.getClass(), containingFile); + super(containingFile.getProject(), anchor.getTextRange(), anchor.getClass(), containingFile, anchor.getLanguage()); } // will restore by stub index until file tree get loaded AnchorElementInfo(@NotNull PsiElement anchor, @NotNull PsiFileWithStubSupport containingFile, int stubId, @NotNull IStubElementType stubElementType) { - super(containingFile.getProject(), new TextRange(0,0), anchor.getClass(), containingFile); + super(containingFile.getProject(), new TextRange(0,0), anchor.getClass(), containingFile, anchor.getLanguage()); this.stubId = stubId; myStubElementType = stubElementType; IElementType contentElementType = ((PsiFileImpl)containingFile).getContentElementType(); diff --git a/platform/lang-api/src/com/intellij/usageView/UsageInfo.java b/platform/lang-api/src/com/intellij/usageView/UsageInfo.java index 57c537bf990f..b6b4876cb8ed 100644 --- a/platform/lang-api/src/com/intellij/usageView/UsageInfo.java +++ b/platform/lang-api/src/com/intellij/usageView/UsageInfo.java @@ -15,7 +15,6 @@ */ package com.intellij.usageView; -import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; @@ -208,13 +207,6 @@ public class UsageInfo { return mySmartPointer.getVirtualFile(); } - public void dispose() { - ((Disposable)mySmartPointer).dispose(); - if (myPsiFileRange != null) { - ((Disposable)myPsiFileRange).dispose(); - } - } - public boolean isDynamicUsage() { return myDynamicUsage; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java index 60f5163c4ed3..a19f63ea12e8 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java @@ -138,13 +138,6 @@ public class LocalInspectionsPass extends ProgressableTextEditorHighlightingPass } private void disposeDescriptors() { - for (List list : result.values()) { - for (InspectionResult inspectionResult : list) { - for (ProblemDescriptor pd: inspectionResult.foundProblems) { - ((ProblemDescriptorImpl)pd).dispose(); - } - } - } result.clear(); } @@ -231,26 +224,8 @@ public class LocalInspectionsPass extends ProgressableTextEditorHighlightingPass final LocalInspectionToolSession session = new LocalInspectionToolSession(myFile, myStartOffset, myEndOffset); List> init = new ArrayList>(); - boolean finished = false; - try { - visitPriorityElementsAndInit(tools, iManager, isOnTheFly, indicator, inside, session, init); - visitRestElementsAndCleanup(tools,iManager,isOnTheFly, indicator, outside, session, init); - finished = true; - } - finally { - if (!finished) { - synchronized (init) { - for (Trinity trinity : init) { - List results = trinity.second.getResults(); - if (results != null) { - for (ProblemDescriptor pd : results) { - ((ProblemDescriptorImpl)pd).dispose(); - } - } - } - } - } - } + visitPriorityElementsAndInit(tools, iManager, isOnTheFly, indicator, inside, session, init); + visitRestElementsAndCleanup(tools,iManager,isOnTheFly, indicator, outside, session, init); indicator.checkCanceled(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java index c2dd8d88df53..40f23553bf47 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/EditorFoldingInfo.java @@ -26,7 +26,6 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.SmartPsiElementPointer; -import com.intellij.psi.impl.smartPointers.SmartPointerEx; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -86,9 +85,7 @@ public class EditorFoldingInfo { } public void dispose() { - for(FoldRegion region:myFoldRegionToSmartPointerMap.keySet()) { - SmartPsiElementPointer pointer = myFoldRegionToSmartPointerMap.get(region); - ((SmartPointerEx)pointer).dispose(); + for (FoldRegion region : myFoldRegionToSmartPointerMap.keySet()) { region.dispose(); } myFoldRegionToSmartPointerMap.clear(); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java index bfb416cdda95..d27fbe41e74f 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/ProblemDescriptorImpl.java @@ -26,7 +26,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.pom.Navigatable; import com.intellij.psi.*; -import com.intellij.psi.impl.smartPointers.SmartPointerEx; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; @@ -205,13 +204,6 @@ public class ProblemDescriptorImpl extends CommonProblemDescriptorImpl implement return myShowTooltip; } - public void dispose() { - QuickFix[] fixes = getFixes(); - if (fixes != null && fixes.length != 0) return; - ((SmartPointerEx)myStartSmartPointer).dispose(); - if (myEndSmartPointer != null) ((SmartPointerEx)myEndSmartPointer).dispose(); - } - @Override public String toString() { PsiElement element = getPsiElement(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java index 2535d73ebfa0..70d09ae91ebb 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/InjectedSelfElementInfo.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.impl.smartPointers; +import com.intellij.lang.Language; import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Ref; @@ -31,17 +32,17 @@ import java.util.List; * User: cdr */ class InjectedSelfElementInfo extends SelfElementInfo { - private final SmartPsiFileRange myPsiFileRangeInHostElement; - private final Class myClass; + private final SmartPsiFileRange myInjectedFileRangeInHostElement; + private final Class anchorClass; + private final Language anchorLanguage; - InjectedSelfElementInfo(@NotNull Project project, - @NotNull PsiElement anchor, - @NotNull PsiElement context) { + InjectedSelfElementInfo(@NotNull Project project, @NotNull PsiElement anchor, @NotNull PsiElement context) { super(project, context); SmartPointerManager smartPointerManager = SmartPointerManager.getInstance(project); - myPsiFileRangeInHostElement = smartPointerManager.createSmartPsiFileRangePointer(context.getContainingFile(), InjectedLanguageManager.getInstance( - project).injectedToHost(anchor, anchor.getTextRange())); - myClass = anchor.getClass(); + TextRange range = InjectedLanguageManager.getInstance(project).injectedToHost(anchor, anchor.getTextRange()); + myInjectedFileRangeInHostElement = smartPointerManager.createSmartPsiFileRangePointer(context.getContainingFile(), range); + anchorClass = anchor.getClass(); + anchorLanguage = anchor.getLanguage(); } @Override @@ -56,7 +57,7 @@ class InjectedSelfElementInfo extends SelfElementInfo { PsiElement host = super.restoreElement(); if (host == null) return null; - Segment segment = myPsiFileRangeInHostElement.getRange(); + Segment segment = myInjectedFileRangeInHostElement.getRange(); if (segment == null) return null; final TextRange rangeInHostElement = TextRange.create(segment); final Ref result = new Ref(); @@ -69,7 +70,8 @@ class InjectedSelfElementInfo extends SelfElementInfo { InjectedLanguageManager.getInstance(getProject()).injectedToHost(injectedPsi, new TextRange(0, injectedPsi.getTextLength())); if (hostRange.contains(rangeInHostElement)) { TextRange rangeInside = rangeInHostElement.shiftRight(-hostRange.getStartOffset()); - PsiElement element = findElementInside(injectedPsi, rangeInside.getStartOffset(), rangeInside.getEndOffset(), myClass); + PsiElement element = findElementInside(injectedPsi, rangeInside.getStartOffset(), rangeInside.getEndOffset(), anchorClass, + anchorLanguage); result.set(element); } } @@ -82,8 +84,8 @@ class InjectedSelfElementInfo extends SelfElementInfo { public boolean pointsToTheSameElementAs(@NotNull SmartPointerElementInfo other) { if (getClass() != other.getClass()) return false; if (!super.pointsToTheSameElementAs(other)) return false; - SmartPointerElementInfo myElementInfo = ((SmartPsiElementPointerImpl)myPsiFileRangeInHostElement).getElementInfo(); - SmartPointerElementInfo oElementInfo = ((SmartPsiElementPointerImpl)((InjectedSelfElementInfo)other).myPsiFileRangeInHostElement).getElementInfo(); + SmartPointerElementInfo myElementInfo = ((SmartPsiElementPointerImpl)myInjectedFileRangeInHostElement).getElementInfo(); + SmartPointerElementInfo oElementInfo = ((SmartPsiElementPointerImpl)((InjectedSelfElementInfo)other).myInjectedFileRangeInHostElement).getElementInfo(); return myElementInfo.pointsToTheSameElementAs(oElementInfo); } } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/LazyPointerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/LazyPointerImpl.java deleted file mode 100644 index f38c9b1d4466..000000000000 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/LazyPointerImpl.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.psi.impl.smartPointers; - -import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Segment; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; -import com.intellij.util.ReflectionCache; -import org.jetbrains.annotations.NotNull; - -public class LazyPointerImpl implements SmartPointerEx { - private E myElement = null; - private PsiAnchor myAnchor = null; - private SmartPsiElementPointer myPointer = null; - private final Class myElementClass; - private final Project myProject; - - LazyPointerImpl(@NotNull E element) { - myElementClass = element.getClass(); - if (element instanceof PsiCompiledElement) { - myElement = element; - } - else { - myAnchor = PsiAnchor.create(element); - } - myProject = element.getProject(); - } - - public boolean pointsToTheSameElementAs(LazyPointerImpl pointer) { - if (myElementClass != pointer.myElementClass) return false; - if (myElement != null) return pointer.myElement == myElement; - if (myAnchor != null && pointer.myAnchor != null) { - return myAnchor.pointsToTheSameElementAs(pointer.myAnchor); - } - if (myPointer != null && pointer.myPointer != null) { - return SmartPointerManager.getInstance(myProject).pointToTheSameElement(myPointer, pointer.myPointer); - } - return Comparing.equal(getElement(), pointer.getElement()); - } - - private static SmartPsiElementPointer setupPointer(PsiElement element) { - return SmartPointerManager.getInstance(element.getProject()).createSmartPsiElementPointer(element); - } - - public void fastenBelt(int offset) { - if (myAnchor != null) { - final PsiElement element = myAnchor.retrieve(); - if (element != null) { - myPointer = setupPointer(element); - //((SmartPointerEx)myPointer).fastenBelt(offset); - myAnchor = null; - } - } - } - @Override - public void unfastenBelt(int offset) { - } - - public void documentAndPsiInSync() { - } - - public boolean equals(final Object o) { - if (this == o) return true; - if (!(o instanceof LazyPointerImpl)) return false; - final LazyPointerImpl that = (LazyPointerImpl)o; - return pointsToTheSameElementAs(that); - } - - public int hashCode() { - int result = myElement != null ? myElement.hashCode() : 0; - result = 31 * result + (myAnchor != null ? myAnchor.hashCode() : 0); - result = 31 * result + (myPointer != null ? myPointer.hashCode() : 0); - result = 31 * result + (myElementClass != null ? myElementClass.hashCode() : 0); - return result; - } - - @NotNull - public Project getProject() { - return myProject; - } - - @Override - public VirtualFile getVirtualFile() { - PsiFile psiFile = getContainingFile(); - return psiFile == null ? null : psiFile.getVirtualFile(); - } - - public E getElement() { - E element = myElement; - if (element != null) return element.isValid() ? element : null; - SmartPsiElementPointer pointer = myPointer; - if (pointer != null) return (E) pointer.getElement(); - PsiAnchor anchor = myAnchor; - if (anchor != null) { - final PsiElement psiElement = anchor.retrieve(); - if (psiElement != null) { - return ReflectionCache.isAssignable(myElementClass, psiElement.getClass()) ? (E) psiElement : null; - } - } - - return null; - } - - public PsiFile getContainingFile() { - E element = myElement; - if (element != null) { - return element.getContainingFile(); - } - - PsiAnchor anchor = myAnchor; - if (anchor != null) { - return anchor.getFile(); - } - - SmartPsiElementPointer pointer = myPointer; - if (pointer != null) { - return pointer.getContainingFile(); - } - - return null; - } - - @Override - public void dispose() { - if (myPointer != null) ((SmartPointerEx)myPointer).dispose(); - } - - @Override - public Segment getRange() { - E element = myElement; - if (element != null && element.isValid()) return element.getTextRange(); - SmartPsiElementPointer pointer = myPointer; - if (pointer != null) return pointer.getRange(); - PsiAnchor anchor = myAnchor; - if (anchor != null) { - final PsiElement psiElement = anchor.retrieve(); - if (psiElement != null) { - return psiElement.getTextRange(); - } - } - - return null; - } -} diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/MultiRootSelfElementInfo.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/MultiRootSelfElementInfo.java index 77a650a565f8..548f3a7ecc50 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/MultiRootSelfElementInfo.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/MultiRootSelfElementInfo.java @@ -25,15 +25,12 @@ import org.jetbrains.annotations.NotNull; * User: cdr */ public class MultiRootSelfElementInfo extends SelfElementInfo { - private final Language myLanguage; - public MultiRootSelfElementInfo(@NotNull Project project, @NotNull TextRange anchor, @NotNull Class anchorClass, @NotNull PsiFile containingFile, @NotNull Language language) { - super(project, anchor, anchorClass, containingFile); - myLanguage = language; + super(project, anchor, anchorClass, containingFile, language); } @Override diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java index 9013539c18a2..d05b4ec6162e 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SelfElementInfo.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.impl.smartPointers; +import com.intellij.lang.Language; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.RangeMarker; @@ -45,11 +46,17 @@ public class SelfElementInfo implements SmartPointerElementInfo { protected final Project myProject; @SuppressWarnings({"UnusedDeclaration"}) private RangeMarker myRangeMarker; //maintain hard reference during modification + protected final Language myLanguage; protected SelfElementInfo(@NotNull Project project, @NotNull PsiElement anchor) { - this(project, anchor.getTextRange(), anchor.getClass(), anchor.getContainingFile()); + this(project, anchor.getTextRange(), anchor.getClass(), anchor.getContainingFile(), anchor.getLanguage()); } - public SelfElementInfo(@NotNull Project project, @NotNull TextRange anchor, @NotNull Class anchorClass, @NotNull PsiFile containingFile) { + public SelfElementInfo(@NotNull Project project, + @NotNull TextRange anchor, + @NotNull Class anchorClass, + @NotNull PsiFile containingFile, + @NotNull Language language) { + myLanguage = language; myVirtualFile = containingFile.getVirtualFile(); myType = anchorClass; @@ -159,15 +166,15 @@ public class SelfElementInfo implements SmartPointerElementInfo { final int syncStartOffset = getSyncStartOffset(); final int syncEndOffset = getSyncEndOffset(); - return findElementInside(file, syncStartOffset, syncEndOffset, myType); + return findElementInside(file, syncStartOffset, syncEndOffset, myType, myLanguage); } protected PsiFile restoreFile() { return restoreFileFromVirtual(myVirtualFile, myProject); } - protected static PsiElement findElementInside(PsiFile file, int syncStartOffset, int syncEndOffset, Class type) { - PsiElement anchor = file.getViewProvider().findElementAt(syncStartOffset, file.getLanguage()); + protected static PsiElement findElementInside(@NotNull PsiFile file, int syncStartOffset, int syncEndOffset, @NotNull Class type, @NotNull Language language) { + PsiElement anchor = file.getViewProvider().findElementAt(syncStartOffset, language); if (anchor == null) return null; TextRange range = anchor.getTextRange(); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerEx.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerEx.java index c04ba391837d..6435c317f7e8 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerEx.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerEx.java @@ -15,14 +15,12 @@ */ package com.intellij.psi.impl.smartPointers; -import com.intellij.openapi.Disposable; import com.intellij.psi.PsiElement; import com.intellij.psi.SmartPsiElementPointer; -public interface SmartPointerEx extends SmartPsiElementPointer, Disposable { +public interface SmartPointerEx extends SmartPsiElementPointer { void fastenBelt(int offset); void documentAndPsiInSync(); - void dispose(); void unfastenBelt(int offset); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index 62d6375086c6..0dafac6fff80 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -74,7 +74,6 @@ public class SmartPointerManagerImpl extends SmartPointerManager { for (int i = size - 1; i >= index; i--) { pointers.remove(i); } - int i = 0; } } @@ -148,15 +147,21 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } } + //private static final Key CACHED_SMART_POINTER_KEY = Key.create("CACHED_SMART_POINTER_KEY"); @NotNull public SmartPsiElementPointer createSmartPsiElementPointer(@NotNull E element) { if (!element.isValid()) { LOG.error("Invalid element:" + element); } + //final SmartPsiElementPointer cachedPointer = element.getUserData(CACHED_SMART_POINTER_KEY); + //if (cachedPointer != null) { + // return cachedPointer; + //} + PsiFile containingFile = element.getContainingFile(); SmartPointerEx pointer = new SmartPsiElementPointerImpl(myProject, element, containingFile); initPointer(pointer, containingFile); - + //element.putUserData(CACHED_SMART_POINTER_KEY, pointer); return pointer; } @@ -173,7 +178,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { return pointer; } - private void initPointer(SmartPointerEx pointer, PsiFile containingFile) { + private static void initPointer(SmartPointerEx pointer, PsiFile containingFile) { if (containingFile == null) return; synchronized (containingFile) { //Document document = PsiDocumentManager.getInstance(myProject).getCachedDocument(containingFile); @@ -210,11 +215,9 @@ public class SmartPointerManagerImpl extends SmartPointerManager { @NotNull + @Deprecated public SmartPsiElementPointer createLazyPointer(@NotNull E element) { return createSmartPsiElementPointer(element); - //LazyPointerImpl pointer = new LazyPointerImpl(element); - //initPointer(element, pointer, element.getContainingFile()); - //return pointer; } @Override @@ -224,9 +227,6 @@ public class SmartPointerManagerImpl extends SmartPointerManager { SmartPointerElementInfo elementInfo2 = ((SmartPsiElementPointerImpl)pointer2).getElementInfo(); return elementInfo1.pointsToTheSameElementAs(elementInfo2); } - if (pointer1 instanceof LazyPointerImpl && pointer2 instanceof LazyPointerImpl) { - return ((LazyPointerImpl)pointer1).pointsToTheSameElementAs((LazyPointerImpl)pointer2); - } return Comparing.equal(pointer1.getElement(), pointer2.getElement()); } } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java index e69048a2630e..88d04f8cdbf6 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java @@ -179,19 +179,13 @@ class SmartPsiElementPointerImpl implements SmartPointerEx if (isMultiRoot && !isElementInMainRoot) { return new MultiRootSelfElementInfo(project, element.getTextRange(), element.getClass(), containingFile, containingFile.getLanguage()); } - return new SelfElementInfo(project, element.getTextRange(), element.getClass(), containingFile); + return new SelfElementInfo(project, element.getTextRange(), element.getClass(), containingFile, element.getLanguage()); } public void documentAndPsiInSync() { myElementInfo.documentAndPsiInSync(); } - @Override - public void dispose() { - //myElementInfo.dispose(); - //myElement = null; - } - @Override public void unfastenBelt(int offset) { myElementInfo.unfastenBelt(offset); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiFileRangePointerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiFileRangePointerImpl.java index a1b929d06c6a..9337b7368f6d 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiFileRangePointerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiFileRangePointerImpl.java @@ -30,7 +30,7 @@ public class SmartPsiFileRangePointerImpl extends SmartPsiElementPointerImpl