unchecked warnings: don't warn about generics array creation if arg of array type is found (IDEA-153122)

This commit is contained in:
Anna.Kozlova
2016-03-17 15:52:25 +01:00
parent ea26329614
commit cdc7349caa
2 changed files with 10 additions and 12 deletions

View File

@@ -101,18 +101,8 @@ public class JavaGenericsUtil {
final PsiExpression[] args = argumentList.getExpressions();
if (args.length == parametersCount) {
final PsiExpression lastArg = args[args.length - 1];
if (lastArg instanceof PsiReferenceExpression) {
final PsiElement lastArgsResolve = ((PsiReferenceExpression)lastArg).resolve();
if (lastArgsResolve instanceof PsiParameter) {
if (((PsiParameter)lastArgsResolve).getType() instanceof PsiArrayType) {
return false;
}
}
}
else if (lastArg instanceof PsiMethodCallExpression) {
if (lastArg.getType() instanceof PsiArrayType) {
return false;
}
if (lastArg.getType() instanceof PsiArrayType) {
return false;
}
}
for (int i = parametersCount - 1; i < args.length; i++) {

View File

@@ -29,6 +29,14 @@ class Test {
public static void main(String[] args) {
<warning descr="Unchecked generics array creation for varargs parameter">asList</warning>(new ArrayList<String>());
ArrayList<String>[] arrayOfStrings = null;
asList(arrayOfStrings);
asList((ArrayList<String>[])null);
//overload should be chosen before target type is known -> inference failure
<error descr="Incompatible types. Found: 'java.util.List<java.util.ArrayList<java.lang.String>>', required: 'java.util.List<java.util.ArrayList<java.lang.String>[]>'">List<ArrayList<String>[]> arraysList = asList(arrayOfStrings);</error>
System.out.println(arraysList);
asListSuppressed(new ArrayList<String>());
//noinspection unchecked