mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
(-JS) use explicit getInjectionHost() method instead of getContext(), since some injected files can override the latter
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user