當前位置: 首頁>>代碼示例>>Java>>正文


Java Flags.ACYCLIC屬性代碼示例

本文整理匯總了Java中com.sun.tools.javac.code.Flags.ACYCLIC屬性的典型用法代碼示例。如果您正苦於以下問題:Java Flags.ACYCLIC屬性的具體用法?Java Flags.ACYCLIC怎麽用?Java Flags.ACYCLIC使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在com.sun.tools.javac.code.Flags的用法示例。


在下文中一共展示了Flags.ACYCLIC屬性的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: setupAutomaticModule

private void setupAutomaticModule(ModuleSymbol msym) throws CompletionFailure {
    try {
        ListBuffer<Directive> directives = new ListBuffer<>();
        ListBuffer<ExportsDirective> exports = new ListBuffer<>();
        Set<String> seenPackages = new HashSet<>();

        for (JavaFileObject clazz : fileManager.list(msym.classLocation, "", EnumSet.of(Kind.CLASS), true)) {
            String binName = fileManager.inferBinaryName(msym.classLocation, clazz);
            String pack = binName.lastIndexOf('.') != (-1) ? binName.substring(0, binName.lastIndexOf('.')) : ""; //unnamed package????
            if (seenPackages.add(pack)) {
                ExportsDirective d = new ExportsDirective(syms.enterPackage(msym, names.fromString(pack)), null);
                //TODO: opens?
                directives.add(d);
                exports.add(d);
            }
        }

        msym.exports = exports.toList();
        msym.provides = List.nil();
        msym.requires = List.nil();
        msym.uses = List.nil();
        msym.directives = directives.toList();
        msym.flags_field |= Flags.ACYCLIC;
    } catch (IOException ex) {
        throw new IllegalStateException(ex);
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:27,代碼來源:Modules.java

示例2: checkCyclicDependencies

private void checkCyclicDependencies(JCModuleDecl mod) {
    for (JCDirective d : mod.directives) {
        JCRequires rd;
        if (!d.hasTag(Tag.REQUIRES) || (rd = (JCRequires) d).directive == null)
            continue;
        Set<ModuleSymbol> nonSyntheticDeps = new HashSet<>();
        List<ModuleSymbol> queue = List.of(rd.directive.module);
        while (queue.nonEmpty()) {
            ModuleSymbol current = queue.head;
            queue = queue.tail;
            if (!nonSyntheticDeps.add(current))
                continue;
            current.complete();
            if ((current.flags() & Flags.ACYCLIC) != 0)
                continue;
            Assert.checkNonNull(current.requires, current::toString);
            for (RequiresDirective dep : current.requires) {
                if (!dep.flags.contains(RequiresFlag.EXTRA))
                    queue = queue.prepend(dep.module);
            }
        }
        if (nonSyntheticDeps.contains(mod.sym)) {
            log.error(rd.moduleName.pos(), Errors.CyclicRequires(rd.directive.module));
        }
        mod.sym.flags_field |= Flags.ACYCLIC;
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:27,代碼來源:Modules.java


注:本文中的com.sun.tools.javac.code.Flags.ACYCLIC屬性示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。