mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
LVTI: ensure standalone context for vars
This commit is contained in:
+12
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.psi.impl.source.resolve.graphInference;
|
||||
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.infos.MethodCandidateInfo;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -138,10 +139,20 @@ public class PsiPolyExpressionUtil {
|
||||
return PsiUtil.isCondition(expr, context) ||
|
||||
context instanceof PsiReturnStatement ||
|
||||
context instanceof PsiAssignmentExpression && ((PsiAssignmentExpression)context).getOperationTokenType() == JavaTokenType.EQ ||
|
||||
context instanceof PsiVariable ||
|
||||
context instanceof PsiVariable && !isVarContext((PsiVariable)context) ||
|
||||
context instanceof PsiLambdaExpression;
|
||||
}
|
||||
|
||||
private static boolean isVarContext(PsiVariable variable) {
|
||||
if (PsiUtil.getLanguageLevel(variable).isAtLeast(LanguageLevel.JDK_X)) {
|
||||
PsiTypeElement typeElement = variable.getTypeElement();
|
||||
if (typeElement != null && typeElement.isInferredType()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isExpressionOfPrimitiveType(@Nullable PsiExpression arg) {
|
||||
if (arg != null && !isPolyExpression(arg)) {
|
||||
final PsiType type = arg.getType();
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
class Main {
|
||||
|
||||
{
|
||||
var v = true ? new ArrayList<String>()
|
||||
: new ArrayList<Integer>();
|
||||
}
|
||||
|
||||
}
|
||||
+1
@@ -37,6 +37,7 @@ public class LightAdvLVTIHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
|
||||
public void testSimpleAvailability() { doTest(); }
|
||||
public void testVarClassNameConflicts() { doTest(); }
|
||||
public void testStandaloneInVarContext() { doTest(); }
|
||||
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
|
||||
Reference in New Issue
Block a user