Index: pkg/analysis_server/lib/src/operation/operation.dart |
diff --git a/pkg/analysis_server/lib/src/operation/operation.dart b/pkg/analysis_server/lib/src/operation/operation.dart |
index 6c5732d307f52baaea92d2fcb2eb3db2db732d5a..1a43a1889d4ea9611e2c5237ae0da3795b014077 100644 |
--- a/pkg/analysis_server/lib/src/operation/operation.dart |
+++ b/pkg/analysis_server/lib/src/operation/operation.dart |
@@ -9,6 +9,21 @@ import 'package:analyzer/src/generated/engine.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
/** |
+ * [MergeableOperation] can decide whether other operation can be merged into |
+ * it, so that it should not be added as a separate operation. |
+ */ |
+abstract class MergeableOperation extends ServerOperation { |
+ MergeableOperation(AnalysisContext context) : super(context); |
+ |
+ /** |
+ * Attempt to merge the given [other] operation into this one, return `true` |
+ * in case of success, so that [other] should not be added as a separate |
+ * operation. |
+ */ |
+ bool merge(ServerOperation other); |
+} |
+ |
+/** |
* The class [ServerOperation] defines the behavior of objects used to perform |
* operations on a [AnalysisServer]. |
*/ |