Index: pkg/analysis_server/lib/src/edit/edit_domain.dart |
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart |
index 9c66d24b8a034ca5e253a30d2556024e1270c437..2d94108ee0c91cba8af18011257fd50858a69169 100644 |
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart |
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart |
@@ -14,6 +14,7 @@ import 'package:analysis_server/src/analysis_server.dart'; |
import 'package:analysis_server/src/collections.dart'; |
import 'package:analysis_server/src/constants.dart'; |
import 'package:analysis_server/src/protocol_server.dart' hide Element; |
+import 'package:analysis_server/src/services/completion/statement/statement_completion.dart'; |
import 'package:analysis_server/src/services/correction/assist.dart'; |
import 'package:analysis_server/src/services/correction/assist_internal.dart'; |
import 'package:analysis_server/src/services/correction/fix.dart'; |
@@ -249,6 +250,38 @@ class EditDomainHandler implements RequestHandler { |
new EditGetFixesResult(errorFixesList).toResponse(request.id)); |
} |
+ Future getStatementCompletion(Request request) async { |
+ var params = new EditGetStatementCompletionParams.fromRequest(request); |
+ SourceChange change; |
+ |
+ AnalysisResult result = await server.getAnalysisResult(params.file); |
+ if (result != null) { |
+ CompilationUnit unit = result.unit; |
+ CompilationUnitElement unitElement = |
+ resolutionMap.elementDeclaredByCompilationUnit(unit); |
+ if (unitElement.context != null) { |
+ StatementCompletionContext context = new StatementCompletionContext( |
+ params.file, |
+ result.lineInfo, |
+ params.offset, |
+ unit, |
+ unitElement, |
+ result.errors); |
+ StatementCompletionProcessor processor = |
+ new StatementCompletionProcessor(context); |
+ StatementCompletion completion = await processor.compute(); |
+ change = completion.change; |
+ } |
+ } |
+ if (change == null) { |
+ change = new SourceChange("", edits: []); |
+ } |
+ |
+ Response response = new EditGetStatementCompletionResult(change, false) |
+ .toResponse(request.id); |
+ server.sendResponse(response); |
+ } |
+ |
@override |
Response handleRequest(Request request) { |
try { |
@@ -271,6 +304,9 @@ class EditDomainHandler implements RequestHandler { |
} else if (requestName == EDIT_SORT_MEMBERS) { |
sortMembers(request); |
return Response.DELAYED_RESPONSE; |
+ } else if (requestName == EDIT_GET_STATEMENT_COMPLETION) { |
+ getStatementCompletion(request); |
+ return Response.DELAYED_RESPONSE; |
} |
} on RequestFailure catch (exception) { |
return exception.response; |