Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: pkg/analysis_server/lib/src/edit/edit_domain.dart

Issue 2803313002: Statement completion framework with a few examples (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library edit.domain; 5 library edit.domain;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; 9 import 'package:analysis_server/plugin/edit/assist/assist_core.dart';
10 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; 10 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart';
11 import 'package:analysis_server/plugin/edit/fix/fix_core.dart'; 11 import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
12 import 'package:analysis_server/plugin/edit/fix/fix_dart.dart'; 12 import 'package:analysis_server/plugin/edit/fix/fix_dart.dart';
13 import 'package:analysis_server/src/analysis_server.dart'; 13 import 'package:analysis_server/src/analysis_server.dart';
14 import 'package:analysis_server/src/collections.dart'; 14 import 'package:analysis_server/src/collections.dart';
15 import 'package:analysis_server/src/constants.dart'; 15 import 'package:analysis_server/src/constants.dart';
16 import 'package:analysis_server/src/protocol_server.dart' hide Element; 16 import 'package:analysis_server/src/protocol_server.dart' hide Element;
17 import 'package:analysis_server/src/services/completion/statement/statement_comp letion.dart';
17 import 'package:analysis_server/src/services/correction/assist.dart'; 18 import 'package:analysis_server/src/services/correction/assist.dart';
18 import 'package:analysis_server/src/services/correction/assist_internal.dart'; 19 import 'package:analysis_server/src/services/correction/assist_internal.dart';
19 import 'package:analysis_server/src/services/correction/fix.dart'; 20 import 'package:analysis_server/src/services/correction/fix.dart';
20 import 'package:analysis_server/src/services/correction/fix_internal.dart'; 21 import 'package:analysis_server/src/services/correction/fix_internal.dart';
21 import 'package:analysis_server/src/services/correction/organize_directives.dart '; 22 import 'package:analysis_server/src/services/correction/organize_directives.dart ';
22 import 'package:analysis_server/src/services/correction/sort_members.dart'; 23 import 'package:analysis_server/src/services/correction/sort_members.dart';
23 import 'package:analysis_server/src/services/correction/status.dart'; 24 import 'package:analysis_server/src/services/correction/status.dart';
24 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; 25 import 'package:analysis_server/src/services/refactoring/refactoring.dart';
25 import 'package:analysis_server/src/services/search/search_engine.dart'; 26 import 'package:analysis_server/src/services/search/search_engine.dart';
26 import 'package:analyzer/dart/ast/ast.dart'; 27 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 } 243 }
243 } 244 }
244 } 245 }
245 } 246 }
246 247
247 // Send the response. 248 // Send the response.
248 server.sendResponse( 249 server.sendResponse(
249 new EditGetFixesResult(errorFixesList).toResponse(request.id)); 250 new EditGetFixesResult(errorFixesList).toResponse(request.id));
250 } 251 }
251 252
253 Future getStatementCompletion(Request request) async {
254 var params = new EditGetStatementCompletionParams.fromRequest(request);
255 SourceChange change;
256
257 server.contextManager.getContextFor(params.file);
258 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.
259 AnalysisResult result = await server.getAnalysisResult(params.file);
260 if (result != null) {
261 CompilationUnit unit = result.unit;
262 CompilationUnitElement unitElement =
263 resolutionMap.elementDeclaredByCompilationUnit(unit);
264 if (unitElement.context != null) {
265 StatementCompletionContext context = new StatementCompletionContext(
266 unitElement,
267 params.offset,
268 result.lineInfo,
269 result.errors,
270 params.file,
271 unit);
272 StatementCompletionProcessor processor =
273 new StatementCompletionProcessor(context);
274 StatementCompletion completion = await processor.compute();
275 change = completion.change;
276 }
277 }
278 if (change == null) {
279 change = new SourceChange("", edits: []);
Brian Wilkerson 2017/04/07 19:17:14 Consider using "??=".
280 }
281
282 Response response = new EditGetStatementCompletionResult(change, false)
283 .toResponse(request.id);
284 server.sendResponse(response);
285 }
286
252 @override 287 @override
253 Response handleRequest(Request request) { 288 Response handleRequest(Request request) {
254 try { 289 try {
255 String requestName = request.method; 290 String requestName = request.method;
256 if (requestName == EDIT_FORMAT) { 291 if (requestName == EDIT_FORMAT) {
257 return format(request); 292 return format(request);
258 } else if (requestName == EDIT_GET_ASSISTS) { 293 } else if (requestName == EDIT_GET_ASSISTS) {
259 getAssists(request); 294 getAssists(request);
260 return Response.DELAYED_RESPONSE; 295 return Response.DELAYED_RESPONSE;
261 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) { 296 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) {
262 return _getAvailableRefactorings(request); 297 return _getAvailableRefactorings(request);
263 } else if (requestName == EDIT_GET_FIXES) { 298 } else if (requestName == EDIT_GET_FIXES) {
264 getFixes(request); 299 getFixes(request);
265 return Response.DELAYED_RESPONSE; 300 return Response.DELAYED_RESPONSE;
266 } else if (requestName == EDIT_GET_REFACTORING) { 301 } else if (requestName == EDIT_GET_REFACTORING) {
267 return _getRefactoring(request); 302 return _getRefactoring(request);
268 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) { 303 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) {
269 organizeDirectives(request); 304 organizeDirectives(request);
270 return Response.DELAYED_RESPONSE; 305 return Response.DELAYED_RESPONSE;
271 } else if (requestName == EDIT_SORT_MEMBERS) { 306 } else if (requestName == EDIT_SORT_MEMBERS) {
272 sortMembers(request); 307 sortMembers(request);
273 return Response.DELAYED_RESPONSE; 308 return Response.DELAYED_RESPONSE;
309 } else if (requestName == EDIT_GET_STATEMENT_COMPLETION) {
310 getStatementCompletion(request);
311 return Response.DELAYED_RESPONSE;
274 } 312 }
275 } on RequestFailure catch (exception) { 313 } on RequestFailure catch (exception) {
276 return exception.response; 314 return exception.response;
277 } 315 }
278 return null; 316 return null;
279 } 317 }
280 318
281 Future<Null> organizeDirectives(Request request) async { 319 Future<Null> organizeDirectives(Request request) async {
282 var params = new EditOrganizeDirectivesParams.fromRequest(request); 320 var params = new EditOrganizeDirectivesParams.fromRequest(request);
283 // prepare file 321 // prepare file
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 } 1009 }
972 return new RefactoringStatus(); 1010 return new RefactoringStatus();
973 } 1011 }
974 } 1012 }
975 1013
976 /** 1014 /**
977 * [_RefactoringManager] throws instances of this class internally to stop 1015 * [_RefactoringManager] throws instances of this class internally to stop
978 * processing in a manager that was reset. 1016 * processing in a manager that was reset.
979 */ 1017 */
980 class _ResetError {} 1018 class _ResetError {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698