| 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 42411f0bb8abc92cbf241ed9753e004850e4747c..145c942d1b3d9639e07153ae405e2544cb43b9b0 100644
|
| --- a/pkg/analysis_server/lib/src/context_manager.dart
|
| +++ b/pkg/analysis_server/lib/src/context_manager.dart
|
| @@ -786,14 +786,15 @@ class ContextManagerImpl implements ContextManager {
|
| packageMap[file.getName()] = <Folder>[res];
|
| }
|
| }
|
| - return new PackageMapDisposition(packageMap);
|
| + return new PackageMapDisposition(packageMap,
|
| + packageRoot: info.packageRoot);
|
| }
|
| // 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 new NoPackageFolderDisposition();
|
| + return new NoPackageFolderDisposition(packageRoot: info.packageRoot);
|
| } else {
|
| callbacks.beginComputePackageMap();
|
| if (packageResolverProvider != null) {
|
| @@ -1269,6 +1270,9 @@ class CustomPackageResolverDisposition extends FolderDisposition {
|
| CustomPackageResolverDisposition(this.resolver);
|
|
|
| @override
|
| + String get packageRoot => null;
|
| +
|
| + @override
|
| Packages get packages => null;
|
|
|
| @override
|
| @@ -1293,6 +1297,12 @@ class CustomPackageResolverDisposition extends FolderDisposition {
|
| */
|
| abstract class FolderDisposition {
|
| /**
|
| + * If this [FolderDisposition] was created based on a package root
|
| + * folder, the absolute path to that folder. Otherwise `null`.
|
| + */
|
| + String get packageRoot;
|
| +
|
| + /**
|
| * If contexts governed by this [FolderDisposition] should resolve packages
|
| * using the ".packages" file mechanism (DEP 5), retrieve the [Packages]
|
| * object that resulted from parsing the ".packages" file.
|
| @@ -1313,12 +1323,14 @@ abstract class FolderDisposition {
|
| /**
|
| * Concrete [FolderDisposition] object indicating that the context for a given
|
| * folder should not resolve "package:" URIs at all.
|
| - *
|
| - * TODO(paulberry): consider making this a singleton object (which would cause
|
| - * all folders that don't resolve "package:" URIs to share the same context).
|
| */
|
| class NoPackageFolderDisposition extends FolderDisposition {
|
| @override
|
| + final String packageRoot;
|
| +
|
| + NoPackageFolderDisposition({this.packageRoot});
|
| +
|
| + @override
|
| Packages get packages => null;
|
|
|
| @override
|
| @@ -1333,7 +1345,10 @@ class NoPackageFolderDisposition extends FolderDisposition {
|
| class PackageMapDisposition extends FolderDisposition {
|
| final Map<String, List<Folder>> packageMap;
|
|
|
| - PackageMapDisposition(this.packageMap);
|
| + @override
|
| + final String packageRoot;
|
| +
|
| + PackageMapDisposition(this.packageMap, {this.packageRoot});
|
|
|
| @override
|
| Packages get packages => null;
|
| @@ -1355,6 +1370,9 @@ class PackagesFileDisposition extends FolderDisposition {
|
| PackagesFileDisposition(this.packages) {}
|
|
|
| @override
|
| + String get packageRoot => null;
|
| +
|
| + @override
|
| Iterable<UriResolver> createPackageUriResolvers(
|
| ResourceProvider resourceProvider) => const <UriResolver>[];
|
| }
|
|
|