src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java
changeset 5955 f54cccaf6e6c
parent 5951 e1bdd2b27bfc
     1.1 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java	Mon May 22 20:31:55 2017 +0200
     1.2 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java	Mon Jul 31 11:07:41 2017 +0200
     1.3 @@ -94,10 +94,8 @@
     1.4  import com.sun.tools.javac.tree.JCTree.JCUses;
     1.5  import com.sun.tools.javac.tree.JCTree.Tag;
     1.6  import com.sun.tools.javac.tree.TreeInfo;
     1.7 -import com.sun.tools.javac.util.Abort;
     1.8  import com.sun.tools.javac.util.Assert;
     1.9  import com.sun.tools.javac.util.Context;
    1.10 -import com.sun.tools.javac.util.JCDiagnostic;
    1.11  import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
    1.12  import com.sun.tools.javac.util.List;
    1.13  import com.sun.tools.javac.util.ListBuffer;
    1.14 @@ -105,7 +103,6 @@
    1.15  import com.sun.tools.javac.util.Name;
    1.16  import com.sun.tools.javac.util.Names;
    1.17  import com.sun.tools.javac.util.Options;
    1.18 -import com.sun.tools.javac.util.Position;
    1.19  
    1.20  import static com.sun.tools.javac.code.Flags.ABSTRACT;
    1.21  import static com.sun.tools.javac.code.Flags.ENUM;
    1.22 @@ -293,8 +290,7 @@
    1.23                  msym.complete();
    1.24              }
    1.25          } catch (CompletionFailure ex) {
    1.26 -            log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, Position.NOPOS, "cant.access", ex.sym, ex.getDetailValue());
    1.27 -            if (ex instanceof ClassFinder.BadClassFile) throw new Abort();
    1.28 +            chk.completionError(null, ex);
    1.29          } finally {
    1.30              depth--;
    1.31          }
    1.32 @@ -1283,10 +1279,6 @@
    1.33          Predicate<ModuleSymbol> observablePred = sym ->
    1.34               (observable == null) ? (moduleFinder.findModule(sym).kind != ERR) : observable.contains(sym);
    1.35          Predicate<ModuleSymbol> systemModulePred = sym -> (sym.flags() & Flags.SYSTEM_MODULE) != 0;
    1.36 -        Predicate<ModuleSymbol> noIncubatorPred = sym -> {
    1.37 -            sym.complete();
    1.38 -            return !sym.resolutionFlags.contains(ModuleResolutionFlags.DO_NOT_RESOLVE_BY_DEFAULT);
    1.39 -        };
    1.40          Set<ModuleSymbol> enabledRoot = new LinkedHashSet<>();
    1.41  
    1.42          if (rootModules.contains(syms.unnamedModule)) {
    1.43 @@ -1304,9 +1296,18 @@
    1.44                  jdkModulePred = sym -> true;
    1.45              }
    1.46  
    1.47 +            Predicate<ModuleSymbol> noIncubatorPred = sym -> {
    1.48 +                sym.complete();
    1.49 +                return !sym.resolutionFlags.contains(ModuleResolutionFlags.DO_NOT_RESOLVE_BY_DEFAULT);
    1.50 +            };
    1.51 +
    1.52              for (ModuleSymbol sym : new HashSet<>(syms.getAllModules())) {
    1.53 -                if (systemModulePred.test(sym) && observablePred.test(sym) && jdkModulePred.test(sym) && noIncubatorPred.test(sym)) {
    1.54 -                    enabledRoot.add(sym);
    1.55 +                try {
    1.56 +                    if (systemModulePred.test(sym) && observablePred.test(sym) && jdkModulePred.test(sym) && noIncubatorPred.test(sym)) {
    1.57 +                        enabledRoot.add(sym);
    1.58 +                    }
    1.59 +                } catch (CompletionFailure ex) {
    1.60 +                    chk.completionError(null, ex);
    1.61                  }
    1.62              }
    1.63          }
    1.64 @@ -1398,32 +1399,36 @@
    1.65          result.add(syms.java_base);
    1.66  
    1.67          while (primaryTodo.nonEmpty() || secondaryTodo.nonEmpty()) {
    1.68 -            ModuleSymbol current;
    1.69 -            boolean isPrimaryTodo;
    1.70 -            if (primaryTodo.nonEmpty()) {
    1.71 -                current = primaryTodo.head;
    1.72 -                primaryTodo = primaryTodo.tail;
    1.73 -                isPrimaryTodo = true;
    1.74 -            } else {
    1.75 -                current = secondaryTodo.head;
    1.76 -                secondaryTodo = secondaryTodo.tail;
    1.77 -                isPrimaryTodo = false;
    1.78 -            }
    1.79 -            if (observable != null && !observable.contains(current))
    1.80 -                continue;
    1.81 -            if (!result.add(current) || current == syms.unnamedModule || ((current.flags_field & Flags.AUTOMATIC_MODULE) != 0))
    1.82 -                continue;
    1.83 -            current.complete();
    1.84 -            if (current.kind == ERR && isPrimaryTodo && warnedMissing.add(current)) {
    1.85 -                log.error(Errors.ModuleNotFound(current));
    1.86 -            }
    1.87 -            for (RequiresDirective rd : current.requires) {
    1.88 -                if (rd.module == syms.java_base) continue;
    1.89 -                if ((rd.isTransitive() && isPrimaryTodo) || base.contains(current)) {
    1.90 -                    primaryTodo = primaryTodo.prepend(rd.module);
    1.91 +            try {
    1.92 +                ModuleSymbol current;
    1.93 +                boolean isPrimaryTodo;
    1.94 +                if (primaryTodo.nonEmpty()) {
    1.95 +                    current = primaryTodo.head;
    1.96 +                    primaryTodo = primaryTodo.tail;
    1.97 +                    isPrimaryTodo = true;
    1.98                  } else {
    1.99 -                    secondaryTodo = secondaryTodo.prepend(rd.module);
   1.100 +                    current = secondaryTodo.head;
   1.101 +                    secondaryTodo = secondaryTodo.tail;
   1.102 +                    isPrimaryTodo = false;
   1.103                  }
   1.104 +                if (observable != null && !observable.contains(current))
   1.105 +                    continue;
   1.106 +                if (!result.add(current) || current == syms.unnamedModule || ((current.flags_field & Flags.AUTOMATIC_MODULE) != 0))
   1.107 +                    continue;
   1.108 +                current.complete();
   1.109 +                if (current.kind == ERR && isPrimaryTodo && warnedMissing.add(current)) {
   1.110 +                    log.error(Errors.ModuleNotFound(current));
   1.111 +                }
   1.112 +                for (RequiresDirective rd : current.requires) {
   1.113 +                    if (rd.module == syms.java_base) continue;
   1.114 +                    if ((rd.isTransitive() && isPrimaryTodo) || base.contains(current)) {
   1.115 +                        primaryTodo = primaryTodo.prepend(rd.module);
   1.116 +                    } else {
   1.117 +                        secondaryTodo = secondaryTodo.prepend(rd.module);
   1.118 +                    }
   1.119 +                }
   1.120 +            } catch (CompletionFailure ex) {
   1.121 +                chk.completionError(null, ex);
   1.122              }
   1.123          }
   1.124