DAS plugins: Respond to real assist requests
Change-Id: I1f1afca0dc746948410a56e29cf13bebef234ed7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/419760
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analysis_server_plugin/lib/src/plugin_server.dart b/pkg/analysis_server_plugin/lib/src/plugin_server.dart
index 0a0da44..05acd40 100644
--- a/pkg/analysis_server_plugin/lib/src/plugin_server.dart
+++ b/pkg/analysis_server_plugin/lib/src/plugin_server.dart
@@ -453,7 +453,12 @@
result = await _handleAnalysisUpdateContent(params);
case protocol.COMPLETION_REQUEST_GET_SUGGESTIONS:
+ result = null;
+
case protocol.EDIT_REQUEST_GET_ASSISTS:
+ var params = protocol.EditGetAssistsParams.fromRequest(request);
+ result = await handleEditGetAssists(params);
+
case protocol.EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS:
result = null;
diff --git a/pkg/analysis_server_plugin/test/src/plugin_server_test.dart b/pkg/analysis_server_plugin/test/src/plugin_server_test.dart
index ce3b532..5b04ab8 100644
--- a/pkg/analysis_server_plugin/test/src/plugin_server_test.dart
+++ b/pkg/analysis_server_plugin/test/src/plugin_server_test.dart
@@ -105,6 +105,19 @@
expect(assist.change.edits, hasLength(1));
}
+ Future<void> test_handleEditGetAssists_viaSendRequest() async {
+ writeAnalysisOptionsWithPlugin();
+ newFile(filePath, 'bool b = false;');
+
+ await channel
+ .sendRequest(protocol.AnalysisSetContextRootsParams([contextRoot]));
+
+ var response = await channel.sendRequest(
+ protocol.EditGetAssistsParams(filePath, 'bool b = '.length, 1));
+ var result = protocol.EditGetAssistsResult.fromResponse(response);
+ expect(result.assists, hasLength(1));
+ }
+
Future<void> test_handleEditGetFixes() async {
writeAnalysisOptionsWithPlugin();
newFile(filePath, 'bool b = false;');
@@ -118,6 +131,19 @@
expect(fixes.fixes, hasLength(4));
}
+ Future<void> test_handleEditGetFixes_viaSendRequest() async {
+ writeAnalysisOptionsWithPlugin();
+ newFile(filePath, 'bool b = false;');
+
+ await channel
+ .sendRequest(protocol.AnalysisSetContextRootsParams([contextRoot]));
+
+ var response = await channel
+ .sendRequest(protocol.EditGetFixesParams(filePath, 'bool b = '.length));
+ var result = protocol.EditGetFixesResult.fromResponse(response);
+ expect(result.fixes.first.fixes, hasLength(4));
+ }
+
Future<void> test_lintDiagnosticsAreDisabledByDefault() async {
writeAnalysisOptionsWithPlugin();
newFile(filePath, 'double x = 3.14;');
@@ -258,6 +284,30 @@
}
}
+class _InvertBoolean extends ResolvedCorrectionProducer {
+ static const _invertBooleanKind =
+ AssistKind('dart.fix.invertBooelan', 50, 'Invert Boolean value');
+
+ _InvertBoolean({required super.context});
+
+ @override
+ CorrectionApplicability get applicability =>
+ CorrectionApplicability.singleLocation;
+
+ @override
+ AssistKind get assistKind => _invertBooleanKind;
+
+ @override
+ Future<void> compute(ChangeBuilder builder) async {
+ if (node case BooleanLiteral(:var value)) {
+ await builder.addDartFileEdit(file, (builder) {
+ var invertedValue = (!value).toString();
+ builder.addSimpleReplacement(range.node(node), invertedValue);
+ });
+ }
+ }
+}
+
class _NoLiteralsPlugin extends Plugin {
@override
void register(PluginRegistry registry) {
@@ -290,27 +340,3 @@
});
}
}
-
-class _InvertBoolean extends ResolvedCorrectionProducer {
- static const _invertBooleanKind =
- AssistKind('dart.fix.invertBooelan', 50, 'Invert Boolean value');
-
- _InvertBoolean({required super.context});
-
- @override
- CorrectionApplicability get applicability =>
- CorrectionApplicability.singleLocation;
-
- @override
- AssistKind get assistKind => _invertBooleanKind;
-
- @override
- Future<void> compute(ChangeBuilder builder) async {
- if (node case BooleanLiteral(:var value)) {
- await builder.addDartFileEdit(file, (builder) {
- var invertedValue = (!value).toString();
- builder.addSimpleReplacement(range.node(node), invertedValue);
- });
- }
- }
-}