private boolean missingField()

in core/src/main/java/com/spotify/missinglink/ConflictChecker.java [364:387]


  private boolean missingField(
      DeclaredField field,
      DeclaredClass calledClass,
      Map<ClassTypeDescriptor, DeclaredClass> classMap) {

    if (calledClass.fields().contains(field)) {
      // TODO: also validate return type
      return false;
    }

    // Might be defined in a super class
    for (ClassTypeDescriptor parentClass : calledClass.parents()) {
      final DeclaredClass declaredClass = classMap.get(parentClass);
      // TODO 6/2/15 mbrown -- treat properly, by flagging as a different type of Conflict
      if (declaredClass == null) {
        System.out.printf(
            "Warning: Cannot find parent %s of class %s%n", parentClass, calledClass.className());
      } else if (!missingField(field, declaredClass, classMap)) {
        return false;
      }
    }

    return true;
  }