Index: pkg/analysis_server/lib/src/context_manager.dart |
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart |
index 68f85ca6154c444d1f117ce31476df823ddda3d2..c12453c131fb36493585150d86432f388be227da 100644 |
--- a/pkg/analysis_server/lib/src/context_manager.dart |
+++ b/pkg/analysis_server/lib/src/context_manager.dart |
@@ -715,6 +715,8 @@ class ContextManagerImpl implements ContextManager { |
_cancelDependencySubscriptions(info); |
if (info.packageRoot != null) { |
info.packageMapInfo = null; |
+ // TODO(paulberry): We shouldn't be using JavaFile here because it |
+ // makes the code untestable (see dartbug.com/23909). |
JavaFile packagesDir = new JavaFile(info.packageRoot); |
Map<String, List<Folder>> packageMap = new Map<String, List<Folder>>(); |
if (packagesDir.isDirectory()) { |
@@ -736,8 +738,12 @@ class ContextManagerImpl implements ContextManager { |
} |
return new PackageMapUriResolver(resourceProvider, packageMap); |
} |
- //TODO(danrubel) remove this if it will never be called |
- return new PackageUriResolver([packagesDir]); |
+ // The package root does not exist (or is not a folder). Since |
+ // [setRoots] ignores any package roots that don't exist (or aren't |
+ // folders), the only way we should be able to get here is due to a race |
+ // condition. In any case, the package root folder is gone, so we can't |
+ // resolve packages. |
+ return null; |
} else { |
callbacks.beginComputePackageMap(); |
if (packageResolverProvider != null) { |