INNER CODE UNIT · Java
hardMissing
anggrayudi/android-hidden-api · cli/ClosureVerify.java:119
public static List<String> hardMissing(Map<String, ClassNode> all) {
ClassLoader jdk = ClassLoader.getSystemClassLoader();
Map<String, Boolean> jdkCache = new HashMap<>();
List<String> hard = new ArrayList<>();
for (ClassNode cn : all.values()) {
for (String r : supers(cn)) {
if (all.containsKey(r) || jdkLoadable(r, jdk, jdkCache)) continue;
if (isHardNs(r) && hard.size() < 50) hard.add(cn.name + " -> " + r);
}
}
return hard;
}
/**
* Well-foundedness fixpoint: the set of internal class names to remove because their supertype
* chain is not resolvable. Only superclass/interface edges are followed (never method/field
* references) — those are the only edges the compiler must resolve to load a type. Call only
* after {@link #hardMissing} is empty, so every removal is rooted in an intentionally-dropped