in core/src/main/java/com/spotify/missinglink/ConflictChecker.java [208:243]
private List<Conflict> checkForBrokenFieldAccess(
CheckerState state, Artifact artifact, DeclaredClass clazz, DeclaredMethod method) {
List<Conflict> conflicts = new ArrayList<>();
for (AccessedField field : method.fieldAccesses()) {
final ClassTypeDescriptor owningClass = field.owner();
final DeclaredClass calledClass = state.knownClasses().get(owningClass);
DeclaredField declaredField =
new DeclaredFieldBuilder().descriptor(field.descriptor()).name(field.name()).build();
if (calledClass == null) {
conflicts.add(
conflict(
ConflictCategory.CLASS_NOT_FOUND,
"Class not found: " + owningClass,
dependency(clazz, method, field),
artifact.name(),
state.sourceMappings().get(owningClass)));
} else if (missingField(declaredField, calledClass, state.knownClasses())) {
conflicts.add(
conflict(
ConflictCategory.FIELD_NOT_FOUND,
"Field not found: " + field.name(),
dependency(clazz, method, field),
artifact.name(),
state.sourceMappings().get(owningClass)));
} else {
// Everything is ok!
}
}
return conflicts;
}