Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: pkg/analysis_server/lib/src/plugin/result_collector.dart

Issue 2696853002: Extract object creation methods for use by a future test class (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/plugin/result_merger.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/plugin/result_collector.dart
diff --git a/pkg/analysis_server/lib/src/plugin/result_collector.dart b/pkg/analysis_server/lib/src/plugin/result_collector.dart
index 80c6dc738a5fe254510e5740110d6d50e2754d02..f89e5d3b38398a64ae898c3e1d634ab833511145 100644
--- a/pkg/analysis_server/lib/src/plugin/result_collector.dart
+++ b/pkg/analysis_server/lib/src/plugin/result_collector.dart
@@ -3,6 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
/**
+ * A function used to determine whether results should be collected for the
+ * file with the given [path].
+ */
+typedef bool ShouldCollectPredicate(String path);
+
+/**
* An object used to collect partial results (of type [E]) where the partial
* results are contributed by plugins.
*/
@@ -13,6 +19,12 @@ class ResultCollector<E> {
final String serverId;
/**
+ * A function used to determine whether results should be collected for the
+ * file whose path is passed in as an argument.
+ */
+ final ShouldCollectPredicate _shouldCollect;
+
+ /**
* A multi-keyed map, where the first key is the (normalized and absolute)
* path to the file associated with the results, and the second is the id of
* the plugin that provided the partial results. The value is the partial
@@ -23,7 +35,8 @@ class ResultCollector<E> {
/**
* Initialize a newly created result manager.
*/
- ResultCollector(this.serverId);
+ ResultCollector(this.serverId, {ShouldCollectPredicate predicate})
+ : _shouldCollect = predicate;
/**
* Clear any results that have been contributed for the file with the given
@@ -32,7 +45,7 @@ class ResultCollector<E> {
* because the content of the file has been modified.
*/
void clearResultsForFile(String filePath) {
- resultMap[filePath].clear();
+ resultMap[filePath]?.clear();
}
/**
@@ -69,7 +82,12 @@ class ResultCollector<E> {
* Return `true` if this collector is collecting results associated with the
* given [filePath].
*/
- bool isCollectingFor(String filePath) => resultMap.containsKey(filePath);
+ bool isCollectingFor(String filePath) {
+ if (_shouldCollect != null) {
+ return _shouldCollect(filePath);
+ }
+ return resultMap.containsKey(filePath);
+ }
/**
* Record the [partialResults] as having been contributed for the given
@@ -77,7 +95,11 @@ class ResultCollector<E> {
*/
void putResults(String filePath, String pluginId, E partialResults) {
Map<String, E> fileResults = resultMap[filePath];
- if (fileResults != null) {
+ if (fileResults == null) {
+ if (_shouldCollect != null && _shouldCollect(filePath)) {
+ resultMap[filePath] = <String, E>{pluginId: partialResults};
+ }
+ } else {
fileResults[pluginId] = partialResults;
}
}
« no previous file with comments | « no previous file | pkg/analysis_server/lib/src/plugin/result_merger.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698