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

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: Address review comments 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 AnalysisResult result = await server.getAnalysisResult(params.file);
258 if (result != null) {
259 CompilationUnit unit = result.unit;
260 CompilationUnitElement unitElement =
261 resolutionMap.elementDeclaredByCompilationUnit(unit);
262 if (unitElement.context != null) {
263 StatementCompletionContext context = new StatementCompletionContext(
264 params.file,
265 result.lineInfo,
266 params.offset,
267 unit,
268 unitElement,
269 result.errors);
270 StatementCompletionProcessor processor =
271 new StatementCompletionProcessor(context);
272 StatementCompletion completion = await processor.compute();
273 change = completion.change;
274 }
275 }
276 if (change == null) {
277 change = new SourceChange("", edits: []);
278 }
279
280 Response response = new EditGetStatementCompletionResult(change, false)
281 .toResponse(request.id);
282 server.sendResponse(response);
283 }
284
252 @override 285 @override
253 Response handleRequest(Request request) { 286 Response handleRequest(Request request) {
254 try { 287 try {
255 String requestName = request.method; 288 String requestName = request.method;
256 if (requestName == EDIT_FORMAT) { 289 if (requestName == EDIT_FORMAT) {
257 return format(request); 290 return format(request);
258 } else if (requestName == EDIT_GET_ASSISTS) { 291 } else if (requestName == EDIT_GET_ASSISTS) {
259 getAssists(request); 292 getAssists(request);
260 return Response.DELAYED_RESPONSE; 293 return Response.DELAYED_RESPONSE;
261 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) { 294 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) {
262 return _getAvailableRefactorings(request); 295 return _getAvailableRefactorings(request);
263 } else if (requestName == EDIT_GET_FIXES) { 296 } else if (requestName == EDIT_GET_FIXES) {
264 getFixes(request); 297 getFixes(request);
265 return Response.DELAYED_RESPONSE; 298 return Response.DELAYED_RESPONSE;
266 } else if (requestName == EDIT_GET_REFACTORING) { 299 } else if (requestName == EDIT_GET_REFACTORING) {
267 return _getRefactoring(request); 300 return _getRefactoring(request);
268 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) { 301 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) {
269 organizeDirectives(request); 302 organizeDirectives(request);
270 return Response.DELAYED_RESPONSE; 303 return Response.DELAYED_RESPONSE;
271 } else if (requestName == EDIT_SORT_MEMBERS) { 304 } else if (requestName == EDIT_SORT_MEMBERS) {
272 sortMembers(request); 305 sortMembers(request);
273 return Response.DELAYED_RESPONSE; 306 return Response.DELAYED_RESPONSE;
307 } else if (requestName == EDIT_GET_STATEMENT_COMPLETION) {
308 getStatementCompletion(request);
309 return Response.DELAYED_RESPONSE;
274 } 310 }
275 } on RequestFailure catch (exception) { 311 } on RequestFailure catch (exception) {
276 return exception.response; 312 return exception.response;
277 } 313 }
278 return null; 314 return null;
279 } 315 }
280 316
281 Future<Null> organizeDirectives(Request request) async { 317 Future<Null> organizeDirectives(Request request) async {
282 var params = new EditOrganizeDirectivesParams.fromRequest(request); 318 var params = new EditOrganizeDirectivesParams.fromRequest(request);
283 // prepare file 319 // prepare file
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 } 1007 }
972 return new RefactoringStatus(); 1008 return new RefactoringStatus();
973 } 1009 }
974 } 1010 }
975 1011
976 /** 1012 /**
977 * [_RefactoringManager] throws instances of this class internally to stop 1013 * [_RefactoringManager] throws instances of this class internally to stop
978 * processing in a manager that was reset. 1014 * processing in a manager that was reset.
979 */ 1015 */
980 class _ResetError {} 1016 class _ResetError {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698