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 db4f40dd6cf0e99aeefddebbda39b048591edc00..e5805ec422cc8ec252f4ce708700123cb0f9e634 100644 |
| --- a/pkg/analysis_server/lib/src/edit/edit_domain.dart |
| +++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart |
| @@ -15,6 +15,7 @@ import 'package:analysis_server/src/domain_abstract.dart'; |
| import 'package:analysis_server/src/plugin/plugin_manager.dart'; |
| import 'package:analysis_server/src/plugin/result_converter.dart'; |
| import 'package:analysis_server/src/protocol_server.dart' hide Element; |
| +import 'package:analysis_server/src/services/completion/postfix/postfix_completion.dart'; |
| import 'package:analysis_server/src/services/completion/statement/statement_completion.dart'; |
| import 'package:analysis_server/src/services/correction/assist_internal.dart'; |
| import 'package:analysis_server/src/services/correction/fix_internal.dart'; |
| @@ -267,6 +268,40 @@ class EditDomainHandler extends AbstractRequestHandler { |
| new EditGetFixesResult(errorFixesList).toResponse(request.id)); |
| } |
| + Future getPostfixCompletion(Request request) async { |
| + var params = new EditGetPostfixCompletionParams.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) { |
| + PostfixCompletionContext context = new PostfixCompletionContext( |
| + params.file, |
| + result.lineInfo, |
| + params.offset, |
| + params.key, |
| + result.driver, |
| + unit, |
| + unitElement, |
| + result.errors); |
| + PostfixCompletionProcessor processor = |
| + new PostfixCompletionProcessor(context); |
| + PostfixCompletion completion = await processor.compute(); |
| + change = completion.change; |
| + } |
| + } |
| + if (change == null) { |
| + change = new SourceChange("", edits: []); |
|
Brian Wilkerson
2017/06/22 14:54:40
If we are unable to generate a response we should
messick
2017/06/22 16:12:32
Acknowledged.
messick
2017/06/22 23:36:50
I'm not sure what you're asking for here. All the
|
| + } |
| + |
| + Response response = |
| + new EditGetPostfixCompletionResult(change).toResponse(request.id); |
| + server.sendResponse(response); |
| + } |
| + |
| Future getStatementCompletion(Request request) async { |
| var params = new EditGetStatementCompletionParams.fromRequest(request); |
| SourceChange change; |
| @@ -324,6 +359,15 @@ class EditDomainHandler extends AbstractRequestHandler { |
| } else if (requestName == EDIT_GET_STATEMENT_COMPLETION) { |
| getStatementCompletion(request); |
| return Response.DELAYED_RESPONSE; |
| + } else if (requestName == EDIT_IS_POSTFIX_COMPLETION_APPLICABLE) { |
| + isPostfixCompletionApplicable(request); |
| + return Response.DELAYED_RESPONSE; |
| + } else if (requestName == EDIT_GET_POSTFIX_COMPLETION) { |
| + getPostfixCompletion(request); |
| + return Response.DELAYED_RESPONSE; |
| + } else if (requestName == EDIT_LIST_POSTFIX_COMPLETION_TEMPLATES) { |
| + listPostfixCompletionTemplates(request); |
| + return Response.DELAYED_RESPONSE; |
| } |
| } on RequestFailure catch (exception) { |
| return exception.response; |
| @@ -331,6 +375,46 @@ class EditDomainHandler extends AbstractRequestHandler { |
| return null; |
| } |
| + Future isPostfixCompletionApplicable(Request request) async { |
| + var params = new EditGetPostfixCompletionParams.fromRequest(request); |
| + bool value; |
|
Brian Wilkerson
2017/06/22 14:54:40
Shouldn't this be initialized to a non-null value?
messick
2017/06/22 16:12:32
Done.
|
| + |
| + AnalysisResult result = await server.getAnalysisResult(params.file); |
| + if (result != null) { |
| + CompilationUnit unit = result.unit; |
| + CompilationUnitElement unitElement = |
| + resolutionMap.elementDeclaredByCompilationUnit(unit); |
| + if (unitElement.context != null) { |
| + PostfixCompletionContext context = new PostfixCompletionContext( |
| + params.file, |
| + result.lineInfo, |
| + params.offset, |
| + params.key, |
| + result.driver, |
| + unit, |
| + unitElement, |
| + result.errors); |
| + PostfixCompletionProcessor processor = |
| + new PostfixCompletionProcessor(context); |
| + value = await processor.isApplicable(); |
| + } |
| + } |
| + |
| + Response response = new EditIsPostfixCompletionApplicableResult(value) |
| + .toResponse(request.id); |
| + server.sendResponse(response); |
| + } |
| + |
| + Future listPostfixCompletionTemplates(Request request) async { |
| + var templates = DartPostfixCompletion.ALL_TEMPLATES |
| + .map((pfc) => [pfc.name, pfc.key, pfc.example]) |
| + .toList(); |
| + |
| + Response response = new EditListPostfixCompletionTemplatesResult(templates) |
| + .toResponse(request.id); |
| + server.sendResponse(response); |
| + } |
| + |
| Future<Null> organizeDirectives(Request request) async { |
| var params = new EditOrganizeDirectivesParams.fromRequest(request); |
| // prepare file |