}
return loadType;
}
private void computeLoadType(ReferenceType fieldType) {
ReferenceType leastSupertype = null;
for (Iterator<String> i = signatureIterator(); i.hasNext();) {
try {
String signature = i.next();
Type type = Type.getType(signature);
if (!(type instanceof ReferenceType)) {
continue;
}
// FIXME: this will mangle interface types, since
// getFirstCommonSuperclass() ignores interfaces.
/*
* leastSupertype = (leastSupertype == null) ? (ReferenceType)
* type :
* leastSupertype.getFirstCommonSuperclass((ReferenceType)
* type);
*/
if (leastSupertype == null) {
leastSupertype = (ReferenceType) type;
} else {
if (Subtypes2.ENABLE_SUBTYPES2_FOR_COMMON_SUPERCLASS_QUERIES) {
leastSupertype = AnalysisContext.currentAnalysisContext().getSubtypes2()
.getFirstCommonSuperclass(leastSupertype, (ReferenceType) type);
} else {
leastSupertype = leastSupertype.getFirstCommonSuperclass((ReferenceType) type);
}
}
} catch (ClassFormatException e) {
// Bad signature: ignore