--- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/SnippetMaps.java Tue Mar 22 13:14:12 2016 +0100
+++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/SnippetMaps.java Mon Apr 25 08:50:16 2016 -0700
@@ -38,8 +38,9 @@
import java.util.stream.Stream;
import static java.util.stream.Collectors.toList;
-import static jdk.internal.jshell.remote.RemoteCodes.prefixPattern;
+import static jdk.internal.jshell.remote.RemoteCodes.PREFIX_PATTERN;
import static jdk.internal.jshell.debug.InternalDebugControl.DBG_DEP;
+import static jdk.internal.jshell.remote.RemoteCodes.REPL_PACKAGE;
/**
* Maintain relationships between the significant entities: Snippets,
@@ -48,7 +49,6 @@
*/
final class SnippetMaps {
- private String packageName;
private final List<Snippet> keyIndexToSnippet = new ArrayList<>();
private final Set<Snippet> snippets = new LinkedHashSet<>();
private final Map<String, Set<Integer>> dependencies = new HashMap<>();
@@ -81,6 +81,13 @@
}
Snippet getSnippet(int ki) {
+ Snippet sn = getSnippetDeadOrAlive(ki);
+ return (sn != null && !sn.status().isActive)
+ ? null
+ : sn;
+ }
+
+ Snippet getSnippetDeadOrAlive(int ki) {
if (ki >= keyIndexToSnippet.size()) {
return null;
}
@@ -91,21 +98,9 @@
return new ArrayList<>(snippets);
}
- void setPackageName(String n) {
- packageName = n;
- }
-
- String packageName() {
- return packageName;
- }
-
- String classFullName(Snippet sn) {
- return packageName + "." + sn.className();
- }
-
String packageAndImportsExcept(Set<Key> except, Collection<Snippet> plus) {
StringBuilder sb = new StringBuilder();
- sb.append("package ").append(packageName()).append(";\n");
+ sb.append("package ").append(REPL_PACKAGE).append(";\n");
for (Snippet si : keyIndexToSnippet) {
if (si != null && si.status().isDefined && (except == null || !except.contains(si.key()))) {
sb.append(si.importLine(state));
@@ -137,7 +132,7 @@
}
List<Snippet> deps = new ArrayList<>();
for (Integer dss : depset) {
- Snippet dep = getSnippet(dss);
+ Snippet dep = getSnippetDeadOrAlive(dss);
if (dep != null) {
deps.add(dep);
state.debug(DBG_DEP, "Found dependency %s -> %s\n", snip.name(), dep.name());
@@ -161,7 +156,7 @@
}
String fullClassNameAndPackageToClass(String full, String pkg) {
- Matcher mat = prefixPattern.matcher(full);
+ Matcher mat = PREFIX_PATTERN.matcher(full);
if (mat.lookingAt()) {
return full.substring(mat.end());
}
@@ -195,6 +190,6 @@
private Stream<ImportSnippet> importSnippets() {
return state.keyMap.importKeys()
.map(key -> (ImportSnippet)getSnippet(key))
- .filter(sn -> state.status(sn).isDefined);
+ .filter(sn -> sn != null && state.status(sn).isDefined);
}
}