From b9eb20d5d681350fed7a0636e01cf7ce12e553b6 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 16 Jul 2014 17:59:41 +0400 Subject: [PATCH] EA-57720 - PIEAE: LeafPsiElement.a --- .../documentation/DocumentationManager.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index df55cbad9346..c27ce400049e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -54,13 +54,17 @@ import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.psi.*; import com.intellij.psi.presentation.java.SymbolPresentationUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.ui.ListScrollingUtil; import com.intellij.ui.content.Content; import com.intellij.ui.popup.AbstractPopup; import com.intellij.ui.popup.NotLookupOrSearchCondition; import com.intellij.ui.popup.PopupPositionManager; import com.intellij.ui.popup.PopupUpdateProcessor; -import com.intellij.util.*; +import com.intellij.util.Alarm; +import com.intellij.util.BooleanFunction; +import com.intellij.util.Consumer; +import com.intellij.util.Processor; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -572,7 +576,7 @@ public class DocumentationManager extends DockablePopupManager 0 && offset == editor.getDocument().getTextLength()) offset--; - final PsiElement contextElement = file == null? null : file.findElementAt(offset); - final PsiReference ref = TargetElementUtilBase.findReference(editor, offset); + PsiReference ref = TargetElementUtilBase.findReference(editor, offset); + PsiElement contextElement = file == null? null : file.findElementAt(offset); + PsiElement targetElement = ref != null ? ref.getElement() : contextElement; + if (targetElement != null) { + PsiUtilCore.ensureValid(targetElement); + } - final DocumentationProvider documentationProvider = getProviderFromElement(file); + DocumentationProvider documentationProvider = getProviderFromElement(file); - return documentationProvider.getDocumentationElementForLookupItem( - PsiManager.getInstance(myProject), - item.getObject(), - ref != null ? ref.getElement():contextElement - ); + PsiManager psiManager = PsiManager.getInstance(myProject); + return documentationProvider.getDocumentationElementForLookupItem(psiManager, item.getObject(), targetElement); } } return null;