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;
}