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

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…