MethodCallInstruction: fix vararg handling when varargs are empty

This commit is contained in:
Tagir Valeev
2018-10-09 10:11:34 +07:00
parent 6f78dee57c
commit ebd8e1ed09
2 changed files with 6 additions and 2 deletions
@@ -149,7 +149,7 @@ public class MethodCallInstruction extends Instruction implements ExpressionPush
return EMPTY_NULLABILITY_ARRAY;
}
int checkedCount = Math.min(myArgCount, parameters.length) - (myVarArgCall ? 1 : 0);
int checkedCount = Math.min(myArgCount, parameters.length - (myVarArgCall ? 1 : 0));
Nullability[] nullabilities = new Nullability[myArgCount];
for (int i = 0; i < checkedCount; i++) {
@@ -3,8 +3,12 @@ import org.jetbrains.annotations.NotNull;
class Test {
public static void test(@NotNull Object... objects) { }
public static void test2(@NotNull Object first, @NotNull Object... rest) { }
public static void main(String[] args) {
Object o = null;
test(o);
if(Math.random() > 0.5) test(o);
if(Math.random() > 0.5) test2(<warning descr="Passing 'null' argument to parameter annotated as @NotNull">o</warning>);
if(Math.random() > 0.5) test2(<warning descr="Argument 'o' might be null">o</warning>, o);
}
}