< prev index next >

src/jdk.jshell/share/classes/jdk/jshell/Unit.java

Print this page




  33 import java.util.Map;
  34 import java.util.Set;
  35 import java.util.stream.Stream;
  36 import com.sun.jdi.ReferenceType;
  37 import jdk.jshell.Snippet.Kind;
  38 import jdk.jshell.Snippet.Status;
  39 import jdk.jshell.Snippet.SubKind;
  40 import jdk.jshell.TaskFactory.AnalyzeTask;
  41 import jdk.jshell.ClassTracker.ClassInfo;
  42 import jdk.jshell.TaskFactory.CompileTask;
  43 import static java.util.stream.Collectors.toList;
  44 import static java.util.stream.Collectors.toMap;
  45 import static java.util.stream.Collectors.toSet;
  46 import static jdk.internal.jshell.debug.InternalDebugControl.DBG_EVNT;
  47 import static jdk.internal.jshell.debug.InternalDebugControl.DBG_GEN;
  48 import static jdk.jshell.Snippet.Status.OVERWRITTEN;
  49 import static jdk.jshell.Snippet.Status.RECOVERABLE_DEFINED;
  50 import static jdk.jshell.Snippet.Status.RECOVERABLE_NOT_DEFINED;
  51 import static jdk.jshell.Snippet.Status.REJECTED;
  52 import static jdk.jshell.Snippet.Status.VALID;

  53 import static jdk.jshell.Util.expunge;
  54 
  55 /**
  56  * Tracks the compilation and load of a new or updated snippet.
  57  * @author Robert Field
  58  */
  59 final class Unit {
  60 
  61     private final JShell state;
  62     private final Snippet si;
  63     private final Snippet siOld;
  64     private final boolean isDependency;
  65     private final boolean isNew;
  66     private final Snippet causalSnippet;
  67     private final DiagList generatedDiagnostics;
  68 
  69     private int seq;
  70     private int seqInitial;
  71     private Wrap activeGuts;
  72     private Status status;


 439     }
 440 
 441     /**
 442      * Separate out the unresolvedDependencies errors from both the other
 443      * corralling errors and the overall errors.
 444      */
 445     private static class UnresolvedExtractor {
 446 
 447         private static final String RESOLVE_ERROR_SYMBOL = "symbol:";
 448         private static final String RESOLVE_ERROR_LOCATION = "location:";
 449 
 450         //TODO extract from tree instead -- note: internationalization
 451         private final Set<String> unresolved = new LinkedHashSet<>();
 452         private final DiagList otherErrors = new DiagList();
 453         private final DiagList otherAll = new DiagList();
 454 
 455         UnresolvedExtractor(DiagList diags) {
 456             for (Diag diag : diags) {
 457                 if (diag.isError()) {
 458                     if (diag.isResolutionError()) {
 459                         String m = diag.getMessage(null);
 460                         int symPos = m.indexOf(RESOLVE_ERROR_SYMBOL);
 461                         if (symPos >= 0) {
 462                             m = m.substring(symPos + RESOLVE_ERROR_SYMBOL.length());
 463                             int symLoc = m.indexOf(RESOLVE_ERROR_LOCATION);
 464                             if (symLoc >= 0) {
 465                                 m = m.substring(0, symLoc);
 466                             }
 467                             m = m.trim();
 468                             unresolved.add(m);
 469                             continue;
 470                         }
 471                     }
 472                     otherErrors.add(diag);
 473                 }
 474                 otherAll.add(diag);
 475             }
 476         }
 477 
 478         DiagList otherCorralledErrors() {
 479             return otherErrors;


  33 import java.util.Map;
  34 import java.util.Set;
  35 import java.util.stream.Stream;
  36 import com.sun.jdi.ReferenceType;
  37 import jdk.jshell.Snippet.Kind;
  38 import jdk.jshell.Snippet.Status;
  39 import jdk.jshell.Snippet.SubKind;
  40 import jdk.jshell.TaskFactory.AnalyzeTask;
  41 import jdk.jshell.ClassTracker.ClassInfo;
  42 import jdk.jshell.TaskFactory.CompileTask;
  43 import static java.util.stream.Collectors.toList;
  44 import static java.util.stream.Collectors.toMap;
  45 import static java.util.stream.Collectors.toSet;
  46 import static jdk.internal.jshell.debug.InternalDebugControl.DBG_EVNT;
  47 import static jdk.internal.jshell.debug.InternalDebugControl.DBG_GEN;
  48 import static jdk.jshell.Snippet.Status.OVERWRITTEN;
  49 import static jdk.jshell.Snippet.Status.RECOVERABLE_DEFINED;
  50 import static jdk.jshell.Snippet.Status.RECOVERABLE_NOT_DEFINED;
  51 import static jdk.jshell.Snippet.Status.REJECTED;
  52 import static jdk.jshell.Snippet.Status.VALID;
  53 import static jdk.jshell.Util.PARSED_LOCALE;
  54 import static jdk.jshell.Util.expunge;
  55 
  56 /**
  57  * Tracks the compilation and load of a new or updated snippet.
  58  * @author Robert Field
  59  */
  60 final class Unit {
  61 
  62     private final JShell state;
  63     private final Snippet si;
  64     private final Snippet siOld;
  65     private final boolean isDependency;
  66     private final boolean isNew;
  67     private final Snippet causalSnippet;
  68     private final DiagList generatedDiagnostics;
  69 
  70     private int seq;
  71     private int seqInitial;
  72     private Wrap activeGuts;
  73     private Status status;


 440     }
 441 
 442     /**
 443      * Separate out the unresolvedDependencies errors from both the other
 444      * corralling errors and the overall errors.
 445      */
 446     private static class UnresolvedExtractor {
 447 
 448         private static final String RESOLVE_ERROR_SYMBOL = "symbol:";
 449         private static final String RESOLVE_ERROR_LOCATION = "location:";
 450 
 451         //TODO extract from tree instead -- note: internationalization
 452         private final Set<String> unresolved = new LinkedHashSet<>();
 453         private final DiagList otherErrors = new DiagList();
 454         private final DiagList otherAll = new DiagList();
 455 
 456         UnresolvedExtractor(DiagList diags) {
 457             for (Diag diag : diags) {
 458                 if (diag.isError()) {
 459                     if (diag.isResolutionError()) {
 460                         String m = diag.getMessage(PARSED_LOCALE);
 461                         int symPos = m.indexOf(RESOLVE_ERROR_SYMBOL);
 462                         if (symPos >= 0) {
 463                             m = m.substring(symPos + RESOLVE_ERROR_SYMBOL.length());
 464                             int symLoc = m.indexOf(RESOLVE_ERROR_LOCATION);
 465                             if (symLoc >= 0) {
 466                                 m = m.substring(0, symLoc);
 467                             }
 468                             m = m.trim();
 469                             unresolved.add(m);
 470                             continue;
 471                         }
 472                     }
 473                     otherErrors.add(diag);
 474                 }
 475                 otherAll.add(diag);
 476             }
 477         }
 478 
 479         DiagList otherCorralledErrors() {
 480             return otherErrors;
< prev index next >