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;
|