Index: pkg/analysis_server/lib/src/source/optimizing_pub_package_map_provider.dart |
diff --git a/pkg/analysis_server/lib/src/source/optimizing_pub_package_map_provider.dart b/pkg/analysis_server/lib/src/source/optimizing_pub_package_map_provider.dart |
deleted file mode 100644 |
index deeee77b1e5cf849303dc9e2922f36e72fb28ef3..0000000000000000000000000000000000000000 |
--- a/pkg/analysis_server/lib/src/source/optimizing_pub_package_map_provider.dart |
+++ /dev/null |
@@ -1,136 +0,0 @@ |
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library source.optimizing_pub_package_map_provider; |
- |
-import 'dart:core' hide Resource; |
- |
-import 'package:analyzer/file_system/file_system.dart'; |
-import 'package:analyzer/source/package_map_provider.dart'; |
-import 'package:analyzer/source/pub_package_map_provider.dart'; |
-import 'package:analyzer/src/generated/sdk_io.dart'; |
- |
-/** |
- * Extension of [PackageMapInfo] that tracks the modification timestamps of |
- * pub dependencies. This allows the analysis server to avoid making redundant |
- * calls to "pub list" when nothing has changed. |
- */ |
-class OptimizingPubPackageMapInfo extends PackageMapInfo { |
- /** |
- * Map from file path to the file's modification timestamp prior to running |
- * "pub list". Since the set of dependencies is not always known prior to |
- * running "pub list", some or all of the dependencies may be missing from |
- * this map. |
- */ |
- final Map<String, int> modificationTimes; |
- |
- OptimizingPubPackageMapInfo(Map<String, List<Folder>> packageMap, |
- Set<String> dependencies, this.modificationTimes) |
- : super(packageMap, dependencies); |
- |
- /** |
- * Return `true` if the given [path] is listed as a dependency, and we cannot |
- * prove using modification timestamps that it is unchanged. |
- * [resourceProvider] is used (if necessary) to read the [path]'s |
- * modification time. |
- */ |
- bool isChangedDependency(String path, ResourceProvider resourceProvider) { |
- if (!dependencies.contains(path)) { |
- // Path is not a dependency. |
- return false; |
- } |
- int lastModificationTime = modificationTimes[path]; |
- if (lastModificationTime != null) { |
- Resource resource = resourceProvider.getResource(path); |
- if (resource is File) { |
- try { |
- if (resource.modificationStamp == lastModificationTime) { |
- // Path is a dependency, but it hasn't changed since the last run |
- // of "pub list". |
- return false; |
- } |
- } on FileSystemException { |
- // Path is a dependency, but we can't read its timestamp. Assume |
- // it's changed to be safe. |
- } |
- } |
- } |
- // Path is a dependency, and we couldn't prove that it hadn't changed. |
- // Assume it's changed to be safe. |
- return true; |
- } |
-} |
- |
-/** |
- * Extension of [PubPackageMapProvider] that outputs additional information to |
- * allow the analysis server to avoid making redundant calls to "pub list" when |
- * nothing has changed. |
- */ |
-class OptimizingPubPackageMapProvider extends PubPackageMapProvider { |
- OptimizingPubPackageMapProvider( |
- ResourceProvider resourceProvider, DirectoryBasedDartSdk sdk, [RunPubList runPubList]) |
- : super(resourceProvider, sdk, runPubList); |
- |
- /** |
- * Compute a package map for the given folder by executing "pub list". If |
- * [previousInfo] is provided, it is used as a guess of which files the |
- * package map is likely to depend on; the modification times of those files |
- * are captured prior to executing "pub list" so that they can be used to |
- * avoid making redundant calls to "pub list" in the future. |
- * |
- * Also, in the case where dependencies can't be determined because of an |
- * error, the dependencies from [previousInfo] will be preserved. |
- */ |
- OptimizingPubPackageMapInfo computePackageMap(Folder folder, |
- [OptimizingPubPackageMapInfo previousInfo]) { |
- // Prior to running "pub list", read the modification timestamps of all of |
- // the old dependencies (if known). |
- Map<String, int> modificationTimes = <String, int>{}; |
- if (previousInfo != null) { |
- for (String path in previousInfo.dependencies) { |
- Resource resource = resourceProvider.getResource(path); |
- if (resource is File) { |
- try { |
- modificationTimes[path] = resource.modificationStamp; |
- } on FileSystemException { |
- // File no longer exists. Don't record a timestamp for it; this |
- // will ensure that if the file reappears, we will re-run "pub |
- // list" regardless of the timestamp it reappears with. |
- } |
- } |
- } |
- } |
- |
- // Try running "pub list". |
- PackageMapInfo info = super.computePackageMap(folder); |
- if (info == null) { |
- // Computing the package map resulted in an error. Merge the old |
- // dependencies with the new ones, if possible. |
- info = super.computePackageMapError(folder); |
- if (previousInfo != null) { |
- info.dependencies.addAll(previousInfo.dependencies); |
- } |
- } |
- |
- // Discard any elements of modificationTimes that are no longer |
- // dependencies. |
- if (previousInfo != null) { |
- for (String dependency |
- in previousInfo.dependencies.difference(info.dependencies)) { |
- modificationTimes.remove(dependency); |
- } |
- } |
- |
- // Bundle the modificationTimes with the other info. |
- return new OptimizingPubPackageMapInfo( |
- info.packageMap, info.dependencies, modificationTimes); |
- } |
- |
- @override |
- PackageMapInfo computePackageMapError(Folder folder) { |
- // Return null to indicate to our override of computePackageMap that there |
- // was an error, so it can compute dependencies correctly. |
- return null; |
- } |
-} |