diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/META-INF/InspectionGadgets.xml b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/META-INF/InspectionGadgets.xml
index 0d4d64874793..97450393ccb4 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/META-INF/InspectionGadgets.xml
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/META-INF/InspectionGadgets.xml
@@ -319,7 +319,8 @@
-
diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
index 2c8619ccdca6..b2e1602fd511 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
@@ -130,8 +130,8 @@ non.short.circuit.boolean.expression.problem.descriptor=Non-short-circuit boolea
non.short.circuit.boolean.expression.replace.quickfix=Replace with short circuit expression
null.argument.to.var.arg.method.display.name=Confusing argument to varargs method
null.argument.to.var.arg.method.problem.descriptor=Confusing argument #ref, unclear if a varargs or non-varargs call is desired #loc
-primitive.array.argument.to.var.arg.method.display.name=Confusing primitive array argument to var-arg method
-primitive.array.argument.to.var.arg.method.problem.descriptor=Confusing primitive array argument to var-arg method #loc
+primitive.array.argument.to.var.arg.method.display.name=Confusing primitive array argument to varargs method
+primitive.array.argument.to.var.arg.method.problem.descriptor=Confusing primitive array argument to varargs method #loc
object.comparison.display.name=Object comparison using '==', instead of 'equals()'
object.comparison.enumerated.ignore.option=Ignore '==' between enumerated types
object.comparison.klass.ignore.option=Ignore '==' on 'java.lang.Class' objects
diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/PrimitiveArrayArgumentToVariableArgMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/PrimitiveArrayArgumentToVariableArgMethodInspection.java
index 9f4a952b51fc..4dc241c12896 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/PrimitiveArrayArgumentToVariableArgMethodInspection.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/PrimitiveArrayArgumentToVariableArgMethodInspection.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2014 Dave Griffith, Bas Leijdekkers
+ * Copyright 2006-2015 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,18 +16,34 @@
package com.siyeh.ig.bugs;
import com.intellij.codeInsight.AnnotationUtil;
+import com.intellij.codeInsight.daemon.impl.quickfix.AddTypeCastFix;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
+import com.siyeh.ig.DelegatingFix;
+import com.siyeh.ig.InspectionGadgetsFix;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
public class PrimitiveArrayArgumentToVariableArgMethodInspection extends BaseInspection {
+ @NotNull
+ @Override
+ public String getID() {
+ return "PrimitiveArrayArgumentToVarargsMethod";
+ }
+
+ @Nullable
+ @Override
+ public String getAlternativeID() {
+ return "PrimitiveArrayArgumentToVariableArgMethod"; // keep old suppression working
+ }
+
@Override
@NotNull
public String getDisplayName() {
@@ -50,6 +66,14 @@ public class PrimitiveArrayArgumentToVariableArgMethodInspection extends BaseIns
return PsiUtil.isLanguageLevel5OrHigher(file);
}
+ @Nullable
+ @Override
+ protected InspectionGadgetsFix buildFix(Object... infos) {
+ final PsiExpression argument = (PsiExpression)infos[0];
+ final PsiType type = (PsiType)infos[1];
+ return new DelegatingFix(new AddTypeCastFix(type, argument));
+ }
+
@Override
public BaseInspectionVisitor buildVisitor() {
return new PrimitiveArrayArgumentToVariableArgVisitor();
@@ -84,11 +108,11 @@ public class PrimitiveArrayArgumentToVariableArgMethodInspection extends BaseIns
if (!lastParameter.isVarArgs()) {
return;
}
- final PsiType parameterType = lastParameter.getType();
+ final PsiEllipsisType parameterType = (PsiEllipsisType)lastParameter.getType();
if (isDeepPrimitiveArrayType(parameterType, result.getSubstitutor())) {
return;
}
- registerError(lastArgument);
+ registerError(lastArgument, lastArgument, parameterType.getComponentType());
}
}
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/var_arg/PrimitiveArrayArgumentToVariableArgMethod.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/var_arg/PrimitiveArrayArgumentToVariableArgMethod.java
index 3c4ab826ef53..e56390324c55 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/var_arg/PrimitiveArrayArgumentToVariableArgMethod.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/var_arg/PrimitiveArrayArgumentToVariableArgMethod.java
@@ -6,7 +6,7 @@ public class PrimitiveArrayArgumentToVariableArgMethod
{
public static void main(String[] arg) throws Throwable
{
- methodVarArgObject(new byte[3]);
+ methodVarArgObject(new byte[3]);
methodVarArgByteArray(new byte[3]);
MethodHandle meh = null;
meh.invokeExact(new int[] { });
@@ -31,7 +31,7 @@ public class PrimitiveArrayArgumentToVariableArgMethod
}
void m() {
- String.format("%s", new int[]{1, 2, 3});
+ String.format("%s", new int[]{1, 2, 3});
}
static void bar1(java.lang.Object... objects) {
@@ -48,7 +48,7 @@ public class PrimitiveArrayArgumentToVariableArgMethod
public static void invoke() {
int[] ints = {1, 2, 3};
- bar1(ints); // warn here
+ bar1(ints); // warn here
bar2(ints); // no warning needed here
}
}
\ No newline at end of file