Index: pkg/analysis_server/lib/src/operation/operation_queue.dart |
diff --git a/pkg/analysis_server/lib/src/operation/operation_queue.dart b/pkg/analysis_server/lib/src/operation/operation_queue.dart |
index 7ea825759599e6e047531dc6ef25c9c6a66f3a3c..ced4a8c9e54f74c59d2c92e382f5b5fc6558d6b0 100644 |
--- a/pkg/analysis_server/lib/src/operation/operation_queue.dart |
+++ b/pkg/analysis_server/lib/src/operation/operation_queue.dart |
@@ -8,6 +8,7 @@ import 'dart:collection'; |
import 'package:analysis_server/src/analysis_server.dart'; |
import 'package:analysis_server/src/operation/operation.dart'; |
+import 'package:analyzer/src/generated/engine.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
/** |
@@ -51,6 +52,16 @@ class ServerOperationQueue { |
} |
/** |
+ * The given [context] has been removed, so all pending operations that refer |
+ * to it should be removed from the queue. |
+ */ |
+ void contextRemoved(AnalysisContext context) { |
+ for (Queue<ServerOperation> queue in _queues) { |
+ queue.removeWhere((operation) => operation.context == context); |
+ } |
+ } |
+ |
+ /** |
* Return the next operation to perform, or `null` if the queue is empty. |
* This method does not change the queue. |
*/ |