コード例 #1
0
 @Override
 protected TypedAST doTransform(TypedAST transform) {
   List<List<SCCNode>> sccs =
       TarjansSCCCheck(
           new ImportGraphBuilder(
                   new ImportGraphBuilder.NodeFactory<SCCNode>() {
                     @Override
                     public SCCNode create(
                         String name, TypedAST ast, LinkedList<Node<SCCNode>> links) {
                       return new SCCNode(name, ast, links);
                     }
                   })
               .getGraph("entry", transform));
   if (sccs.size() > 0) {
     StringBuilder allSCCs = new StringBuilder(sccs.size());
     for (List<SCCNode> scc : sccs) {
       StringBuilder sccBuilder = new StringBuilder(scc.size() * 2 + 1);
       sccBuilder.append("\t");
       Iterator<SCCNode> iterator = scc.iterator();
       while (iterator.hasNext()) {
         SCCNode component = iterator.next();
         sccBuilder.append(component.getName());
         sccBuilder.append(" -> ");
       }
       sccBuilder.append(scc.get(0).getName() + "\n");
       allSCCs.append(sccBuilder.toString());
     }
     ToolError.reportError(ErrorMessage.IMPORT_CYCLE, allSCCs.toString(), transform);
   }
   return transform;
 }