src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java
changeset 53773 454d54d8af1c
parent 49822 53aae0c219e6
child 54332 9a8fe0bc38c3
equal deleted inserted replaced
53772:0eca4e6a0037 53773:454d54d8af1c
    31 import java.util.EnumSet;
    31 import java.util.EnumSet;
    32 import java.util.HashSet;
    32 import java.util.HashSet;
    33 import java.util.Map;
    33 import java.util.Map;
    34 import java.util.Queue;
    34 import java.util.Queue;
    35 import java.util.Set;
    35 import java.util.Set;
       
    36 import java.util.function.Predicate;
    36 
    37 
    37 import javax.tools.DiagnosticListener;
    38 import javax.tools.DiagnosticListener;
    38 import javax.tools.JavaFileObject;
    39 import javax.tools.JavaFileObject;
    39 
    40 
    40 import com.sun.tools.javac.api.DiagnosticFormatter;
    41 import com.sun.tools.javac.api.DiagnosticFormatter;
   156             return deferred;
   157             return deferred;
   157         }
   158         }
   158 
   159 
   159         /** Report all deferred diagnostics. */
   160         /** Report all deferred diagnostics. */
   160         public void reportDeferredDiagnostics() {
   161         public void reportDeferredDiagnostics() {
   161             reportDeferredDiagnostics(EnumSet.allOf(JCDiagnostic.Kind.class));
   162             reportDeferredDiagnostics(d -> true);
   162         }
   163         }
   163 
   164 
   164         /** Report selected deferred diagnostics. */
   165         /** Report selected deferred diagnostics. */
   165         public void reportDeferredDiagnostics(Set<JCDiagnostic.Kind> kinds) {
   166         public void reportDeferredDiagnostics(Predicate<JCDiagnostic> accepter) {
   166             JCDiagnostic d;
   167             JCDiagnostic d;
   167             while ((d = deferred.poll()) != null) {
   168             while ((d = deferred.poll()) != null) {
   168                 if (kinds.contains(d.getKind()))
   169                 if (accepter.test(d))
   169                     prev.report(d);
   170                     prev.report(d);
   170             }
   171             }
   171             deferred = null; // prevent accidental ongoing use
   172             deferred = null; // prevent accidental ongoing use
   172         }
   173         }
   173     }
   174     }
   711                 }
   712                 }
   712                 break;
   713                 break;
   713 
   714 
   714             case ERROR:
   715             case ERROR:
   715                 if (nerrors < MaxErrors &&
   716                 if (nerrors < MaxErrors &&
   716                     (diagnostic.isFlagSet(DiagnosticFlag.MULTIPLE) ||
   717                     (diagnostic.isFlagSet(DiagnosticFlag.API) ||
   717                      shouldReport(diagnostic))) {
   718                      shouldReport(diagnostic))) {
   718                     writeDiagnostic(diagnostic);
   719                     writeDiagnostic(diagnostic);
   719                     nerrors++;
   720                     nerrors++;
   720                 }
   721                 }
   721                 break;
   722                 break;