public Description matchVariable()

in nullaway/src/main/java/com/uber/nullaway/NullAway.java [1538:1571]


  public Description matchVariable(VariableTree tree, VisitorState state) {
    if (!withinAnnotatedCode(state)) {
      return Description.NO_MATCH;
    }
    VarSymbol symbol = ASTHelpers.getSymbol(tree);
    if (tree.getInitializer() != null && config.isJSpecifyMode()) {
      genericsChecks.checkTypeParameterNullnessForAssignability(tree, this, state);
    }
    if (!config.isLegacyAnnotationLocation()) {
      checkNullableAnnotationPositionInType(
          tree.getModifiers().getAnnotations(), tree.getType(), state);
    }

    if (symbol.type.isPrimitive() && tree.getInitializer() != null) {
      doUnboxingCheck(state, tree.getInitializer());
    }
    if (!symbol.getKind().equals(ElementKind.FIELD)) {
      return Description.NO_MATCH;
    }
    ExpressionTree initializer = tree.getInitializer();
    if (initializer != null) {
      if (!symbol.type.isPrimitive() && !skipFieldInitializationCheckingDueToAnnotation(symbol)) {
        if (mayBeNullExpr(state, initializer)) {
          ErrorMessage errorMessage =
              new ErrorMessage(
                  MessageTypes.ASSIGN_FIELD_NULLABLE,
                  "assigning @Nullable expression to @NonNull field");
          return errorBuilder.createErrorDescriptionForNullAssignment(
              errorMessage, initializer, buildDescription(tree), state, symbol);
        }
      }
    }
    return Description.NO_MATCH;
  }