package support; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * Concrete TarjanNode subclass for use in tests. * * Because GraphUtils.TarjanNode is an abstract class in an internal package * (com.sun.tools.javac.util), tests that exercise GraphUtils.tarjan() directly * must extend it. This class provides a minimal, concrete implementation. * * Usage (requires --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED): * * AbstractTestNode n = new AbstractTestNode("N0"); * n.addDep(other); * GraphUtils.tarjan(List.of(n)); */ public class AbstractTestNode extends com.sun.tools.javac.util.GraphUtils.TarjanNode { private final List deps = new ArrayList<>(); public AbstractTestNode(String label) { super(label); } public void addDep(AbstractTestNode dep) { deps.add(dep); } @Override public Iterable getAllDependencies() { return deps; } @Override public com.sun.tools.javac.util.GraphUtils.DependencyKind[] getSupportedDependencyKinds() { return new com.sun.tools.javac.util.GraphUtils.DependencyKind[0]; } @Override public Collection getDependenciesByKind( com.sun.tools.javac.util.GraphUtils.DependencyKind dk) { return List.of(); } @Override public String toString() { return data; } }