equal
deleted
inserted
replaced
755 } |
755 } |
756 } |
756 } |
757 |
757 |
758 @Override |
758 @Override |
759 public void visitRequires(JCRequires tree) { |
759 public void visitRequires(JCRequires tree) { |
760 msym.directives = msym.directives.prepend(tree.directive); |
760 if (tree.directive != null) { |
|
761 msym.directives = msym.directives.prepend(tree.directive); |
|
762 } |
761 } |
763 } |
762 |
764 |
763 @Override |
765 @Override |
764 public void visitUses(JCUses tree) { |
766 public void visitUses(JCUses tree) { |
765 Type st = attr.attribType(tree.qualid, env, syms.objectType); |
767 Type st = attr.attribType(tree.qualid, env, syms.objectType); |
1212 } |
1214 } |
1213 } |
1215 } |
1214 |
1216 |
1215 private void checkCyclicDependencies(JCModuleDecl mod) { |
1217 private void checkCyclicDependencies(JCModuleDecl mod) { |
1216 for (JCDirective d : mod.directives) { |
1218 for (JCDirective d : mod.directives) { |
1217 if (!d.hasTag(Tag.REQUIRES)) |
1219 JCRequires rd; |
|
1220 if (!d.hasTag(Tag.REQUIRES) || (rd = (JCRequires) d).directive == null) |
1218 continue; |
1221 continue; |
1219 JCRequires rd = (JCRequires) d; |
|
1220 Set<ModuleSymbol> nonSyntheticDeps = new HashSet<>(); |
1222 Set<ModuleSymbol> nonSyntheticDeps = new HashSet<>(); |
1221 List<ModuleSymbol> queue = List.of(rd.directive.module); |
1223 List<ModuleSymbol> queue = List.of(rd.directive.module); |
1222 while (queue.nonEmpty()) { |
1224 while (queue.nonEmpty()) { |
1223 ModuleSymbol current = queue.head; |
1225 ModuleSymbol current = queue.head; |
1224 queue = queue.tail; |
1226 queue = queue.tail; |