Chromium Code Reviews| 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..ce4c7a35252af0008c4293b31a8fefa6bf71bc63 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,40 @@ class EditDomainHandler implements RequestHandler { |
| new EditGetFixesResult(errorFixesList).toResponse(request.id)); |
| } |
| + Future getStatementCompletion(Request request) async { |
| + var params = new EditGetStatementCompletionParams.fromRequest(request); |
| + SourceChange change; |
| + |
| + server.contextManager.getContextFor(params.file); |
| + server.contextManager.getDriverFor(params.file); |
|
Brian Wilkerson
2017/04/07 19:17:14
Are the two lines above necessary because of a sid
scheglov
2017/04/07 19:36:07
I don't think these two statements are useful.
messick
2017/04/07 20:10:09
Done.
|
| + 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( |
| + unitElement, |
| + params.offset, |
| + result.lineInfo, |
| + result.errors, |
| + params.file, |
| + unit); |
| + StatementCompletionProcessor processor = |
| + new StatementCompletionProcessor(context); |
| + StatementCompletion completion = await processor.compute(); |
| + change = completion.change; |
| + } |
| + } |
| + if (change == null) { |
| + change = new SourceChange("", edits: []); |
|
Brian Wilkerson
2017/04/07 19:17:14
Consider using "??=".
|
| + } |
| + |
| + Response response = new EditGetStatementCompletionResult(change, false) |
| + .toResponse(request.id); |
| + server.sendResponse(response); |
| + } |
| + |
| @override |
| Response handleRequest(Request request) { |
| try { |
| @@ -271,6 +306,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; |