mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
lvti: goto declaration on var (IDEA-188739)
This commit is contained in:
+8
-5
@@ -2,10 +2,8 @@
|
||||
package com.intellij.codeInsight.navigation.actions;
|
||||
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiIdentifier;
|
||||
import com.intellij.psi.PsiTypeElement;
|
||||
import com.intellij.psi.PsiVariable;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class GotoVarTypeHandler extends GotoDeclarationHandlerBase {
|
||||
@@ -21,7 +19,12 @@ public class GotoVarTypeHandler extends GotoDeclarationHandlerBase {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (elementAt instanceof PsiKeyword && PsiKeyword.VAR.equals(elementAt.getText())) {
|
||||
PsiElement parent = elementAt.getParent();
|
||||
if (parent instanceof PsiTypeElement && ((PsiTypeElement)parent).isInferredType()) {
|
||||
return PsiUtil.resolveClassInClassTypeOnly(((PsiTypeElement)parent).getType());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class WithVar {
|
||||
{
|
||||
v<caret>ar a = "";
|
||||
}
|
||||
}
|
||||
+15
@@ -2,10 +2,14 @@
|
||||
package com.intellij.java.codeInsight.daemon;
|
||||
|
||||
import com.intellij.codeInsight.daemon.LightDaemonAnalyzerTestCase;
|
||||
import com.intellij.codeInsight.navigation.actions.GotoDeclarationAction;
|
||||
import com.intellij.codeInspection.AnonymousCanBeLambdaInspection;
|
||||
import com.intellij.openapi.projectRoots.JavaSdkVersion;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.CommonClassNames;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.testFramework.IdeaTestUtil;
|
||||
|
||||
public class LightAdvLVTIHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
@@ -38,6 +42,17 @@ public class LightAdvLVTIHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testGotoDeclarationOnVar() {
|
||||
configureByFile(BASE_PATH + "/" + getTestName(false) + ".java");
|
||||
final int offset = getEditor().getCaretModel().getOffset();
|
||||
final PsiElement[] elements =
|
||||
GotoDeclarationAction.findAllTargetElements(getProject(), getEditor(), offset);
|
||||
assertSize(1, elements);
|
||||
PsiElement element = elements[0];
|
||||
assertInstanceOf(element, PsiClass.class);
|
||||
assertEquals(CommonClassNames.JAVA_LANG_STRING, ((PsiClass)element).getQualifiedName());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
return IdeaTestUtil.getMockJdk9();
|
||||
|
||||
Reference in New Issue
Block a user