workaround for FlexCompletionTest.testBindingCompletion() (the actual problem is somewhere in injected<->host offset remapping in CompletionUtilCoreImpl.getOriginalElement())

This commit is contained in:
Dmitry Jemerov
2013-07-11 19:15:16 +02:00
parent 7e625e47cb
commit d1e2ded1ba
2 changed files with 19 additions and 19 deletions
@@ -455,4 +455,23 @@ public class PsiUtilCore {
throw new PsiInvalidElementAccessException(element);
}
}
/**
* @deprecated use CompletionUtil#getOriginalElement where appropriate instead
*/
@Nullable
public static <T extends PsiElement> T getOriginalElement(@NotNull T psiElement, final Class<? extends T> elementClass) {
final PsiFile psiFile = psiElement.getContainingFile();
final PsiFile originalFile = psiFile.getOriginalFile();
if (originalFile == psiFile) return psiElement;
final TextRange range = psiElement.getTextRange();
final PsiElement element = originalFile.findElementAt(range.getStartOffset());
final int maxLength = range.getLength();
T parent = PsiTreeUtil.getParentOfType(element, elementClass, false);
for (T next = parent ;
next != null && next.getTextLength() <= maxLength;
parent = next, next = PsiTreeUtil.getParentOfType(next, elementClass, true)) {
}
return parent;
}
}
@@ -116,25 +116,6 @@ public class PsiUtilBase extends PsiUtilCore {
return host != null && isUnderPsiRoot(root, host);
}
/**
* @deprecated use CompletionUtil#getOriginalElement where appropriate instead
*/
@Nullable
public static <T extends PsiElement> T getOriginalElement(@NotNull T psiElement, final Class<? extends T> elementClass) {
final PsiFile psiFile = psiElement.getContainingFile();
final PsiFile originalFile = psiFile.getOriginalFile();
if (originalFile == psiFile) return psiElement;
final TextRange range = psiElement.getTextRange();
final PsiElement element = originalFile.findElementAt(range.getStartOffset());
final int maxLength = range.getLength();
T parent = PsiTreeUtil.getParentOfType(element, elementClass, false);
for (T next = parent ;
next != null && next.getTextLength() <= maxLength;
parent = next, next = PsiTreeUtil.getParentOfType(next, elementClass, true)) {
}
return parent;
}
@Nullable
public static Language getLanguageInEditor(@NotNull final Editor editor, @NotNull final Project project) {
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());