langtools/src/jdk.jshell/share/classes/jdk/jshell/TaskFactory.java
changeset 35000 952a7b4652f0
parent 34857 14d1224cfed3
child 36497 9c4840131512
equal deleted inserted replaced
34999:aacf94dab449 35000:952a7b4652f0
    31 import com.sun.tools.javac.api.JavacTaskImpl;
    31 import com.sun.tools.javac.api.JavacTaskImpl;
    32 import com.sun.tools.javac.api.JavacTool;
    32 import com.sun.tools.javac.api.JavacTool;
    33 import com.sun.tools.javac.util.Context;
    33 import com.sun.tools.javac.util.Context;
    34 import java.util.ArrayList;
    34 import java.util.ArrayList;
    35 import java.util.Arrays;
    35 import java.util.Arrays;
    36 import java.util.Iterator;
       
    37 import java.util.List;
    36 import java.util.List;
    38 import javax.tools.Diagnostic;
    37 import javax.tools.Diagnostic;
    39 import javax.tools.DiagnosticCollector;
    38 import javax.tools.DiagnosticCollector;
    40 import javax.tools.JavaCompiler;
    39 import javax.tools.JavaCompiler;
    41 import javax.tools.JavaFileManager;
    40 import javax.tools.JavaFileManager;
   393         DiagList getDiagnostics() {
   392         DiagList getDiagnostics() {
   394             if (diags == null) {
   393             if (diags == null) {
   395                 LinkedHashMap<String, Diag> diagMap = new LinkedHashMap<>();
   394                 LinkedHashMap<String, Diag> diagMap = new LinkedHashMap<>();
   396                 for (Diagnostic<? extends JavaFileObject> in : diagnostics.getDiagnostics()) {
   395                 for (Diagnostic<? extends JavaFileObject> in : diagnostics.getDiagnostics()) {
   397                     Diag d = diag(in);
   396                     Diag d = diag(in);
   398                     String uniqueKey = d.getCode() + ":" + d.getPosition() + ":" + d.getMessage(null);
   397                     String uniqueKey = d.getCode() + ":" + d.getPosition() + ":" + d.getMessage(PARSED_LOCALE);
   399                     diagMap.put(uniqueKey, d);
   398                     diagMap.put(uniqueKey, d);
   400                 }
   399                 }
   401                 diags = new DiagList(diagMap.values());
   400                 diags = new DiagList(diagMap.values());
   402             }
   401             }
   403             return diags;
   402             return diags;
   408         }
   407         }
   409 
   408 
   410         String shortErrorMessage() {
   409         String shortErrorMessage() {
   411             StringBuilder sb = new StringBuilder();
   410             StringBuilder sb = new StringBuilder();
   412             for (Diag diag : getDiagnostics()) {
   411             for (Diag diag : getDiagnostics()) {
   413                 for (String line : diag.getMessage(null).split("\\r?\\n")) {
   412                 for (String line : diag.getMessage(PARSED_LOCALE).split("\\r?\\n")) {
   414                     if (!line.trim().startsWith("location:")) {
   413                     if (!line.trim().startsWith("location:")) {
   415                         sb.append(line);
   414                         sb.append(line);
   416                     }
   415                     }
   417                 }
   416                 }
   418             }
   417             }
   420         }
   419         }
   421 
   420 
   422         void debugPrintDiagnostics(String src) {
   421         void debugPrintDiagnostics(String src) {
   423             for (Diag diag : getDiagnostics()) {
   422             for (Diag diag : getDiagnostics()) {
   424                 state.debug(DBG_GEN, "ERROR --\n");
   423                 state.debug(DBG_GEN, "ERROR --\n");
   425                 for (String line : diag.getMessage(null).split("\\r?\\n")) {
   424                 for (String line : diag.getMessage(PARSED_LOCALE).split("\\r?\\n")) {
   426                     if (!line.trim().startsWith("location:")) {
   425                     if (!line.trim().startsWith("location:")) {
   427                         state.debug(DBG_GEN, "%s\n", line);
   426                         state.debug(DBG_GEN, "%s\n", line);
   428                     }
   427                     }
   429                 }
   428                 }
   430                 int start = (int) diag.getStartPosition();
   429                 int start = (int) diag.getStartPosition();