import static com.google.common.base.Verify.verifyNotNull;
import static java.util.Objects.requireNonNull;
+import com.google.common.base.MoreObjects;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
return qname == null ? resolveAsTarget() : resolveAsChild();
}
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this).omitNullValues()
+ .add("augment", augment)
+ .add("target", target)
+ .add("qname", qname)
+ .toString();
+ }
+
private @NonNull LinkageProgress resolveAsTarget() {
// Resolved requirement, if we also have original we end resolution here and now
final var original = target.tryOriginal();
break;
}
- verify(progress, "Failed to make progress on linking of original generators");
+ if (!progress) {
+ final var ex = new VerifyException("Failed to make progress on linking of original generators");
+ for (var augment : augments) {
+ ex.addSuppressed(new IllegalStateException(augment + " is incomplete"));
+ }
+ for (var module : unlinkedModules) {
+ ex.addSuppressed(new IllegalStateException(module + " remains unlinked"));
+ }
+ throw ex;
+ }
}
/*
final var it = items.iterator();
while (it.hasNext()) {
- final var tmp = function.apply(it.next());
- if (tmp != LinkageProgress.NONE) {
- progress = true;
+ final var item = it.next();
+ final var tmp = function.apply(item);
+ if (tmp == LinkageProgress.NONE) {
+ LOG.debug("No progress made linking {}", item);
+ continue;
}
+
+ progress = true;
if (tmp == LinkageProgress.DONE) {
+ LOG.debug("Finished linking {}", item);
it.remove();
+ } else {
+ LOG.debug("Progress made linking {}", item);
}
}