public MethodParameterNullness onOverrideMethodInvocationParametersNullability()

in nullaway/src/main/java/com/uber/nullaway/handlers/RestrictiveAnnotationHandler.java [108:144]


  public MethodParameterNullness onOverrideMethodInvocationParametersNullability(
      Context context,
      Symbol.MethodSymbol methodSymbol,
      boolean isAnnotated,
      MethodParameterNullness argumentNullness) {
    if (isAnnotated) {
      // We ignore isAnnotated code here, since annotations in code considered isAnnotated are
      // already handled by NullAway's core algorithm.
      return argumentNullness;
    }
    for (int i = 0; i < methodSymbol.getParameters().size(); ++i) {
      boolean isVarargsParam =
          methodSymbol.isVarArgs() && i == methodSymbol.getParameters().size() - 1;
      Symbol.VarSymbol varargsParamSymbol =
          isVarargsParam ? methodSymbol.getParameters().get(i) : null;
      if (Nullness.paramHasNonNullAnnotation(methodSymbol, i, config)) {
        if (varargsParamSymbol != null) {
          // Special handling: ignore org.jetbrains.annotations.NotNull on varargs parameters
          // to handle kotlinc generated jars (see #720)
          boolean jetBrainsNotNullAnnotated =
              NullabilityUtil.hasJetBrainsNotNullDeclarationAnnotation(varargsParamSymbol);
          if (!jetBrainsNotNullAnnotated) {
            argumentNullness.setParameterNullness(i, Nullness.NONNULL);
          }
        } else {
          argumentNullness.setParameterNullness(i, Nullness.NONNULL);
        }
      } else if (Nullness.paramHasNullableAnnotation(methodSymbol, i, config)) {
        argumentNullness.setParameterNullness(i, Nullness.NULLABLE);
      }
      if (varargsParamSymbol != null
          && Nullness.varargsArrayIsNonNull(varargsParamSymbol, config)) {
        argumentNullness.setVarargsArrayNullness(Nullness.NONNULL);
      }
    }
    return argumentNullness;
  }