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

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

Issue 2917943002: Postfix completion (Closed)
Patch Set: typo Created 3 years, 5 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 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; 7 import 'package:analysis_server/plugin/edit/assist/assist_core.dart';
8 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; 8 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart';
9 import 'package:analysis_server/plugin/edit/fix/fix_core.dart'; 9 import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
10 import 'package:analysis_server/plugin/edit/fix/fix_dart.dart'; 10 import 'package:analysis_server/plugin/edit/fix/fix_dart.dart';
11 import 'package:analysis_server/src/analysis_server.dart'; 11 import 'package:analysis_server/src/analysis_server.dart';
12 import 'package:analysis_server/src/collections.dart'; 12 import 'package:analysis_server/src/collections.dart';
13 import 'package:analysis_server/src/constants.dart'; 13 import 'package:analysis_server/src/constants.dart';
14 import 'package:analysis_server/src/domain_abstract.dart'; 14 import 'package:analysis_server/src/domain_abstract.dart';
15 import 'package:analysis_server/src/plugin/plugin_manager.dart'; 15 import 'package:analysis_server/src/plugin/plugin_manager.dart';
16 import 'package:analysis_server/src/plugin/result_converter.dart'; 16 import 'package:analysis_server/src/plugin/result_converter.dart';
17 import 'package:analysis_server/src/protocol_server.dart' hide Element; 17 import 'package:analysis_server/src/protocol_server.dart' hide Element;
18 import 'package:analysis_server/src/services/completion/postfix/postfix_completi on.dart';
18 import 'package:analysis_server/src/services/completion/statement/statement_comp letion.dart'; 19 import 'package:analysis_server/src/services/completion/statement/statement_comp letion.dart';
19 import 'package:analysis_server/src/services/correction/assist_internal.dart'; 20 import 'package:analysis_server/src/services/correction/assist_internal.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';
27 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; 28 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 errorFixesList 261 errorFixesList
261 .addAll(result.fixes.map(converter.convertAnalysisErrorFixes)); 262 .addAll(result.fixes.map(converter.convertAnalysisErrorFixes));
262 } 263 }
263 // 264 //
264 // Send the response. 265 // Send the response.
265 // 266 //
266 server.sendResponse( 267 server.sendResponse(
267 new EditGetFixesResult(errorFixesList).toResponse(request.id)); 268 new EditGetFixesResult(errorFixesList).toResponse(request.id));
268 } 269 }
269 270
271 Future getPostfixCompletion(Request request) async {
272 var params = new EditGetPostfixCompletionParams.fromRequest(request);
273 SourceChange change;
274
275 AnalysisResult result = await server.getAnalysisResult(params.file);
276 if (result != null) {
277 CompilationUnit unit = result.unit;
278 CompilationUnitElement unitElement =
279 resolutionMap.elementDeclaredByCompilationUnit(unit);
280 if (unitElement.context != null) {
281 PostfixCompletionContext context = new PostfixCompletionContext(
282 params.file,
283 result.lineInfo,
284 params.offset,
285 params.key,
286 result.driver,
287 unit,
288 unitElement,
289 result.errors);
290 PostfixCompletionProcessor processor =
291 new PostfixCompletionProcessor(context);
292 PostfixCompletion completion = await processor.compute();
293 change = completion.change;
294 }
295 }
296 if (change == null) {
297 change = new SourceChange("", edits: []);
298 }
299
300 Response response =
301 new EditGetPostfixCompletionResult(change).toResponse(request.id);
302 server.sendResponse(response);
303 }
304
270 Future getStatementCompletion(Request request) async { 305 Future getStatementCompletion(Request request) async {
271 var params = new EditGetStatementCompletionParams.fromRequest(request); 306 var params = new EditGetStatementCompletionParams.fromRequest(request);
272 SourceChange change; 307 SourceChange change;
273 308
274 AnalysisResult result = await server.getAnalysisResult(params.file); 309 AnalysisResult result = await server.getAnalysisResult(params.file);
275 if (result != null) { 310 if (result != null) {
276 CompilationUnit unit = result.unit; 311 CompilationUnit unit = result.unit;
277 CompilationUnitElement unitElement = 312 CompilationUnitElement unitElement =
278 resolutionMap.elementDeclaredByCompilationUnit(unit); 313 resolutionMap.elementDeclaredByCompilationUnit(unit);
279 if (unitElement.context != null) { 314 if (unitElement.context != null) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 return _getRefactoring(request); 352 return _getRefactoring(request);
318 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) { 353 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) {
319 organizeDirectives(request); 354 organizeDirectives(request);
320 return Response.DELAYED_RESPONSE; 355 return Response.DELAYED_RESPONSE;
321 } else if (requestName == EDIT_SORT_MEMBERS) { 356 } else if (requestName == EDIT_SORT_MEMBERS) {
322 sortMembers(request); 357 sortMembers(request);
323 return Response.DELAYED_RESPONSE; 358 return Response.DELAYED_RESPONSE;
324 } else if (requestName == EDIT_GET_STATEMENT_COMPLETION) { 359 } else if (requestName == EDIT_GET_STATEMENT_COMPLETION) {
325 getStatementCompletion(request); 360 getStatementCompletion(request);
326 return Response.DELAYED_RESPONSE; 361 return Response.DELAYED_RESPONSE;
362 } else if (requestName == EDIT_IS_POSTFIX_COMPLETION_APPLICABLE) {
363 isPostfixCompletionApplicable(request);
364 return Response.DELAYED_RESPONSE;
365 } else if (requestName == EDIT_GET_POSTFIX_COMPLETION) {
366 getPostfixCompletion(request);
367 return Response.DELAYED_RESPONSE;
368 } else if (requestName == EDIT_LIST_POSTFIX_COMPLETION_TEMPLATES) {
369 listPostfixCompletionTemplates(request);
370 return Response.DELAYED_RESPONSE;
327 } 371 }
328 } on RequestFailure catch (exception) { 372 } on RequestFailure catch (exception) {
329 return exception.response; 373 return exception.response;
330 } 374 }
331 return null; 375 return null;
332 } 376 }
333 377
378 Future isPostfixCompletionApplicable(Request request) async {
379 var params = new EditGetPostfixCompletionParams.fromRequest(request);
380 bool value = false;
381
382 AnalysisResult result = await server.getAnalysisResult(params.file);
383 if (result != null) {
384 CompilationUnit unit = result.unit;
385 CompilationUnitElement unitElement =
386 resolutionMap.elementDeclaredByCompilationUnit(unit);
387 if (unitElement.context != null) {
388 PostfixCompletionContext context = new PostfixCompletionContext(
389 params.file,
390 result.lineInfo,
391 params.offset,
392 params.key,
393 result.driver,
394 unit,
395 unitElement,
396 result.errors);
397 PostfixCompletionProcessor processor =
398 new PostfixCompletionProcessor(context);
399 value = await processor.isApplicable();
400 }
401 }
402
403 Response response = new EditIsPostfixCompletionApplicableResult(value)
404 .toResponse(request.id);
405 server.sendResponse(response);
406 }
407
408 Future listPostfixCompletionTemplates(Request request) async {
409 var templates = DartPostfixCompletion.ALL_TEMPLATES
410 .map((pfc) =>
411 new PostfixTemplateDescriptor(pfc.name, pfc.key, pfc.example))
412 .toList();
413
414 Response response = new EditListPostfixCompletionTemplatesResult(templates)
415 .toResponse(request.id);
416 server.sendResponse(response);
417 }
418
334 Future<Null> organizeDirectives(Request request) async { 419 Future<Null> organizeDirectives(Request request) async {
335 var params = new EditOrganizeDirectivesParams.fromRequest(request); 420 var params = new EditOrganizeDirectivesParams.fromRequest(request);
336 // prepare file 421 // prepare file
337 String file = params.file; 422 String file = params.file;
338 if (!engine.AnalysisEngine.isDartFileName(file)) { 423 if (!engine.AnalysisEngine.isDartFileName(file)) {
339 server.sendResponse(new Response.fileNotAnalyzed(request, file)); 424 server.sendResponse(new Response.fileNotAnalyzed(request, file));
340 return; 425 return;
341 } 426 }
342 // Prepare the file information. 427 // Prepare the file information.
343 AnalysisResult result = await server.getAnalysisResult(file); 428 AnalysisResult result = await server.getAnalysisResult(file);
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 } 1022 }
938 return new RefactoringStatus(); 1023 return new RefactoringStatus();
939 } 1024 }
940 } 1025 }
941 1026
942 /** 1027 /**
943 * [_RefactoringManager] throws instances of this class internally to stop 1028 * [_RefactoringManager] throws instances of this class internally to stop
944 * processing in a manager that was reset. 1029 * processing in a manager that was reset.
945 */ 1030 */
946 class _ResetError {} 1031 class _ResetError {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698