public void report(DiagnosticPosition pos, String msg, Object... args) {
        JavaFileObject currentSource = log.currentSourceFile();

        if (verbose) {
            if (sourcesWithReportedWarnings == null)
                sourcesWithReportedWarnings = new HashSet<JavaFileObject>();

            if (log.nwarnings < log.MaxWarnings) {
                // generate message and remember the source file
                logMandatoryWarning(pos, msg, args);
                sourcesWithReportedWarnings.add(currentSource);
            } else if (deferredDiagnosticKind == null) {
                // set up deferred message
                if (sourcesWithReportedWarnings.contains(currentSource)) {
                    // more errors in a file that already has reported warnings
                    deferredDiagnosticKind = DeferredDiagnosticKind.ADDITIONAL_IN_FILE;
                } else {
                    // warnings in a new source file
                    deferredDiagnosticKind = DeferredDiagnosticKind.IN_FILE;
                }
                deferredDiagnosticSource = currentSource;
                deferredDiagnosticArg = currentSource;
            } else if ((deferredDiagnosticKind == DeferredDiagnosticKind.IN_FILE
                        || deferredDiagnosticKind == DeferredDiagnosticKind.ADDITIONAL_IN_FILE)
                       && !equal(deferredDiagnosticSource, currentSource)) {
                // additional errors in more than one source file
                deferredDiagnosticKind = DeferredDiagnosticKind.ADDITIONAL_IN_FILES;
                deferredDiagnosticArg = null;
            }
        } else {
            if (deferredDiagnosticKind == null) {
                // warnings in a single source
                deferredDiagnosticKind = DeferredDiagnosticKind.IN_FILE;
                deferredDiagnosticSource = currentSource;
                deferredDiagnosticArg = currentSource;
            }  else if (deferredDiagnosticKind == DeferredDiagnosticKind.IN_FILE &&
                        !equal(deferredDiagnosticSource, currentSource)) {
                // warnings in multiple source files
                deferredDiagnosticKind = DeferredDiagnosticKind.IN_FILES;
                deferredDiagnosticArg = null;
            }
        }
    }
public void report ( DiagnosticPosition pos , String msg , Object ... args ) { JavaFileObject currentSource = log . currentSourceFile ( ) ; if ( verbose ) { if ( sourcesWithReportedWarnings == null ) sourcesWithReportedWarnings = new HashSet < JavaFileObject > ( ) ; if ( log . nwarnings < log . MaxWarnings ) { logMandatoryWarning ( pos , msg , args ) ; sourcesWithReportedWarnings . add ( currentSource ) ; } else if ( deferredDiagnosticKind == null ) { if ( sourcesWithReportedWarnings . contains ( currentSource ) ) { deferredDiagnosticKind = DeferredDiagnosticKind . ADDITIONAL_IN_FILE ; } else { deferredDiagnosticKind = DeferredDiagnosticKind . IN_FILE ; } deferredDiagnosticSource = currentSource ; deferredDiagnosticArg = currentSource ; } else if ( ( deferredDiagnosticKind == DeferredDiagnosticKind . IN_FILE || deferredDiagnosticKind == DeferredDiagnosticKind . ADDITIONAL_IN_FILE ) && ! equal ( deferredDiagnosticSource , currentSource ) ) { deferredDiagnosticKind = DeferredDiagnosticKind . ADDITIONAL_IN_FILES ; deferredDiagnosticArg = null ; } } else { if ( deferredDiagnosticKind == null ) { deferredDiagnosticKind = DeferredDiagnosticKind . IN_FILE ; deferredDiagnosticSource = currentSource ; deferredDiagnosticArg = currentSource ; } else if ( deferredDiagnosticKind == DeferredDiagnosticKind . IN_FILE && ! equal ( deferredDiagnosticSource , currentSource ) ) { deferredDiagnosticKind = DeferredDiagnosticKind . IN_FILES ; deferredDiagnosticArg = null ; } } }
Report a mandatory warning.