(-JS) use explicit getInjectionHost() method instead of getContext(), since some injected files can override the latter

This commit is contained in:
Alexey Kudravtsev
2012-04-26 13:45:02 +04:00
parent ace29cd9a3
commit 9663d292ac
22 changed files with 51 additions and 28 deletions
@@ -15,6 +15,7 @@
*/
package com.intellij.usages.impl.rules;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.navigation.NavigationItemFileStatus;
import com.intellij.openapi.actionSystem.DataKey;
import com.intellij.openapi.actionSystem.DataSink;
@@ -52,7 +53,8 @@ public class ClassGroupingRule implements UsageGroupingRule {
if (!(topLevelFile instanceof PsiJavaFile) || topLevelFile instanceof JspFile) {
return null;
}
PsiElement containingClass = topLevelFile == containingFile ? psiElement : containingFile.getContext();
PsiElement containingClass = topLevelFile == containingFile ? psiElement : InjectedLanguageManager
.getInstance(containingFile.getProject()).getInjectionHost(containingFile);
do {
containingClass = PsiTreeUtil.getParentOfType(containingClass, PsiClass.class, true);
if (containingClass == null || ((PsiClass)containingClass).getQualifiedName() != null) break;
@@ -15,6 +15,7 @@
*/
package com.intellij.usages.impl.rules;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.navigation.NavigationItemFileStatus;
import com.intellij.openapi.actionSystem.DataKey;
import com.intellij.openapi.actionSystem.DataSink;
@@ -52,7 +53,8 @@ public class MethodGroupingRule implements UsageGroupingRule {
PsiFile containingFile = psiElement.getContainingFile();
PsiFile topLevelFile = InjectedLanguageUtil.getTopLevelFile(containingFile);
if (topLevelFile instanceof PsiJavaFile) {
PsiElement containingMethod = topLevelFile == containingFile ? psiElement : containingFile.getContext();
PsiElement containingMethod = topLevelFile == containingFile ? psiElement : InjectedLanguageManager
.getInstance(containingFile.getProject()).getInjectionHost(containingFile);
if (usage instanceof UsageInfo2UsageAdapter && topLevelFile == containingFile) {
int offset = ((UsageInfo2UsageAdapter)usage).getUsageInfo().getNavigationOffset();
containingMethod = containingFile.findElementAt(offset);