src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java
changeset 48054 702043a4cdeb
parent 47216 71c04702a3d5
child 49822 53aae0c219e6
equal deleted inserted replaced
48053:6dcbdc9f99fc 48054:702043a4cdeb
   424     protected Set<Pair<JavaFileObject, Integer>> recorded = new HashSet<>();
   424     protected Set<Pair<JavaFileObject, Integer>> recorded = new HashSet<>();
   425 
   425 
   426     /** A set of "not-supported-in-source-X" errors produced so far. This is used to only generate
   426     /** A set of "not-supported-in-source-X" errors produced so far. This is used to only generate
   427      *  one such error per file.
   427      *  one such error per file.
   428      */
   428      */
   429     protected Set<Pair<JavaFileObject, String>>  recordedSourceLevelErrors = new HashSet<>();
   429     protected Set<Pair<JavaFileObject, List<String>>>  recordedSourceLevelErrors = new HashSet<>();
   430 
   430 
   431     public boolean hasDiagnosticListener() {
   431     public boolean hasDiagnosticListener() {
   432         return diagListener != null;
   432         return diagListener != null;
   433     }
   433     }
   434 
   434 
   519             return false;
   519             return false;
   520 
   520 
   521         if (!d.isFlagSet(DiagnosticFlag.SOURCE_LEVEL))
   521         if (!d.isFlagSet(DiagnosticFlag.SOURCE_LEVEL))
   522             return true;
   522             return true;
   523 
   523 
   524         Pair<JavaFileObject, String> coords = new Pair<>(file, d.getCode());
   524         Pair<JavaFileObject, List<String>> coords = new Pair<>(file, getCode(d));
   525         boolean shouldReport = !recordedSourceLevelErrors.contains(coords);
   525         boolean shouldReport = !recordedSourceLevelErrors.contains(coords);
   526         if (shouldReport)
   526         if (shouldReport)
   527             recordedSourceLevelErrors.add(coords);
   527             recordedSourceLevelErrors.add(coords);
   528         return shouldReport;
   528         return shouldReport;
   529     }
   529     }
       
   530 
       
   531     //where
       
   532         private List<String> getCode(JCDiagnostic d) {
       
   533             ListBuffer<String> buf = new ListBuffer<>();
       
   534             getCodeRecursive(buf, d);
       
   535             return buf.toList();
       
   536         }
       
   537 
       
   538         private void getCodeRecursive(ListBuffer<String> buf, JCDiagnostic d) {
       
   539             buf.add(d.getCode());
       
   540             for (Object o : d.getArgs()) {
       
   541                 if (o instanceof JCDiagnostic) {
       
   542                     getCodeRecursive(buf, (JCDiagnostic)o);
       
   543                 }
       
   544             }
       
   545         }
   530 
   546 
   531     /** Prompt user after an error.
   547     /** Prompt user after an error.
   532      */
   548      */
   533     public void prompt() {
   549     public void prompt() {
   534         if (promptOnError) {
   550         if (promptOnError) {