disable surroundWith fix for var typed locals with non-denotable inferred types

IDEA-CR-33936
This commit is contained in:
Anna Kozlova
2018-06-25 16:28:59 +03:00
parent 64b2e21dba
commit 810a23812f
2 changed files with 17 additions and 1 deletions
@@ -0,0 +1,11 @@
// "Surround with try/catch" "false"
class Test {
public static void main(String[] args) {
var foo = new T<caret>est() {
int x = 2;
};
System.out.println(foo.x);
}
Test() throws Exception {}
}
@@ -20,6 +20,7 @@ import com.intellij.psi.controlFlow.*;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiTypesUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ObjectUtils;
@@ -948,7 +949,11 @@ public class ControlFlowUtils {
if(parent instanceof PsiLocalVariable) {
PsiElement grandParent = parent.getParent();
if(grandParent instanceof PsiDeclarationStatement && ((PsiDeclarationStatement)grandParent).getDeclaredElements().length == 1) {
return true;
PsiTypeElement typeElement = ((PsiLocalVariable)parent).getTypeElement();
if (!typeElement.isInferredType() ||
PsiTypesUtil.replaceWithExplicitType(((PsiLocalVariable)parent.copy()).getTypeElement()) != null) {
return true;
}
}
}
if (parent instanceof PsiField) {