surround with array fix: disable for non-denotable types (IDEA-173797)

This commit is contained in:
Anna Kozlova
2017-06-05 17:45:46 +03:00
parent 0d1b2368ed
commit 6423538939
2 changed files with 11 additions and 1 deletions
@@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiTypesUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.util.ArrayUtilRt;
@@ -92,7 +93,7 @@ public class SurroundWithArrayFix extends PsiElementBaseIntentionAction {
final PsiType paramType = psiParameters[idx].getType();
if (paramType instanceof PsiArrayType) {
final PsiType expressionType = TypeConversionUtil.erasure(expression.getType());
if (expressionType != null) {
if (expressionType != null && PsiTypesUtil.isDenotableType(expressionType) && expressionType != PsiType.NULL) {
final PsiType componentType = ((PsiArrayType)paramType).getComponentType();
if (TypeConversionUtil.isAssignable(componentType, expressionType)) {
return expression;
@@ -0,0 +1,9 @@
// "Surround with array initialization" "false"
class A {
void m1(String[] s,
String[] s2,
String[] s3) {}
{
m1( <caret>null, null);
}
}