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

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

Issue 492563002: Make more use of generated classes in analysis server. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
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 'package:analysis_server/src/analysis_server.dart'; 7 import 'package:analysis_server/src/analysis_server.dart';
8 import 'package:analysis_server/src/computer/error.dart'; 8 import 'package:analysis_server/src/computer/error.dart';
9 import 'package:analysis_server/src/constants.dart'; 9 import 'package:analysis_server/src/constants.dart';
10 import 'package:analysis_server/src/edit/fix.dart'; 10 import 'package:analysis_server/src/edit/fix.dart';
11 import 'package:analysis_server/src/protocol.dart'; 11 import 'package:analysis_server/src/protocol.dart';
12 import 'package:analysis_server/src/protocol2.dart' show AnalysisError; 12 import 'package:analysis_server/src/protocol2.dart' show AnalysisError,
13 EditGetAssistsParams, EditGetAvailableRefactoringsParams,
14 EditGetFixesParams;
13 import 'package:analysis_server/src/services/correction/assist.dart'; 15 import 'package:analysis_server/src/services/correction/assist.dart';
14 import 'package:analysis_server/src/services/correction/change.dart'; 16 import 'package:analysis_server/src/services/correction/change.dart';
15 import 'package:analysis_server/src/services/correction/fix.dart'; 17 import 'package:analysis_server/src/services/correction/fix.dart';
16 import 'package:analysis_server/src/services/json.dart'; 18 import 'package:analysis_server/src/services/json.dart';
17 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; 19 import 'package:analysis_server/src/services/refactoring/refactoring.dart';
18 import 'package:analysis_server/src/services/search/search_engine.dart'; 20 import 'package:analysis_server/src/services/search/search_engine.dart';
19 import 'package:analyzer/src/generated/ast.dart'; 21 import 'package:analyzer/src/generated/ast.dart';
20 import 'package:analyzer/src/generated/element.dart'; 22 import 'package:analyzer/src/generated/element.dart';
21 import 'package:analyzer/src/generated/engine.dart' as engine; 23 import 'package:analyzer/src/generated/engine.dart' as engine;
22 import 'package:analyzer/src/generated/error.dart' as engine; 24 import 'package:analyzer/src/generated/error.dart' as engine;
(...skipping 15 matching lines...) Expand all
38 SearchEngine searchEngine; 40 SearchEngine searchEngine;
39 41
40 /** 42 /**
41 * Initialize a newly created handler to handle requests for the given [server ]. 43 * Initialize a newly created handler to handle requests for the given [server ].
42 */ 44 */
43 EditDomainHandler(this.server) { 45 EditDomainHandler(this.server) {
44 searchEngine = server.searchEngine; 46 searchEngine = server.searchEngine;
45 } 47 }
46 48
47 Response getAssists(Request request) { 49 Response getAssists(Request request) {
48 String file = request.getRequiredParameter(FILE).asString(); 50 var params = new EditGetAssistsParams.fromRequest(request);
49 int offset = request.getRequiredParameter(OFFSET).asInt();
50 int length = request.getRequiredParameter(LENGTH).asInt();
51 List<Change> changes = <Change>[]; 51 List<Change> changes = <Change>[];
52 List<CompilationUnit> units = server.getResolvedCompilationUnits(file); 52 List<CompilationUnit> units =
53 server.getResolvedCompilationUnits(params.file);
53 if (units.isNotEmpty) { 54 if (units.isNotEmpty) {
54 CompilationUnit unit = units[0]; 55 CompilationUnit unit = units[0];
55 List<Assist> assists = computeAssists(searchEngine, unit, offset, length); 56 List<Assist> assists = computeAssists(searchEngine, unit, params.offset,
57 params.length);
56 assists.forEach((Assist assist) { 58 assists.forEach((Assist assist) {
57 changes.add(assist.change); 59 changes.add(assist.change);
58 }); 60 });
59 } 61 }
60 // respond 62 // respond
61 Response response = new Response(request.id); 63 Response response = new Response(request.id);
62 response.setResult(ASSISTS, objectToJson(changes)); 64 response.setResult(ASSISTS, objectToJson(changes));
63 return response; 65 return response;
64 } 66 }
65 67
66 Response getAvailableRefactorings(Request request) { 68 Response getAvailableRefactorings(Request request) {
67 String file = request.getRequiredParameter(FILE).asString(); 69 var params = new EditGetAvailableRefactoringsParams.fromRequest(request);
68 int offset = request.getRequiredParameter(OFFSET).asInt(); 70 // TODO(paulberry): params.length isn't used. Is this a bug?
scheglov 2014/08/20 05:40:39 Rename refactoring does not need it. Extract refac
69 int length = request.getRequiredParameter(LENGTH).asInt();
70 List<String> kinds = <String>[]; 71 List<String> kinds = <String>[];
71 List<Element> elements = server.getElementsAtOffset(file, offset); 72 List<Element> elements = server.getElementsAtOffset(params.file,
73 params.offset);
72 if (elements.isNotEmpty) { 74 if (elements.isNotEmpty) {
73 Element element = elements[0]; 75 Element element = elements[0];
74 RenameRefactoring renameRefactoring = 76 RenameRefactoring renameRefactoring =
75 new RenameRefactoring(searchEngine, element); 77 new RenameRefactoring(searchEngine, element);
76 if (renameRefactoring != null) { 78 if (renameRefactoring != null) {
77 kinds.add(RefactoringKind.RENAME); 79 kinds.add(RefactoringKind.RENAME);
78 } 80 }
79 } 81 }
80 // respond 82 // respond
81 return new Response(request.id)..setResult(KINDS, kinds); 83 return new Response(request.id)..setResult(KINDS, kinds);
82 } 84 }
83 85
84 Response getFixes(Request request) { 86 Response getFixes(Request request) {
85 String file = request.getRequiredParameter(FILE).asString(); 87 var params = new EditGetFixesParams.fromRequest(request);
86 int offset = request.getRequiredParameter(OFFSET).asInt(); 88 // TODO(paulberry): params.offset isn't used. Is this a bug?
scheglov 2014/08/20 05:40:39 Yes, it is. Thanks!
87 List<ErrorFixes> errorFixesList = <ErrorFixes>[]; 89 List<ErrorFixes> errorFixesList = <ErrorFixes>[];
88 List<CompilationUnit> units = server.getResolvedCompilationUnits(file); 90 List<CompilationUnit> units = server.getResolvedCompilationUnits(params.file );
89 for (CompilationUnit unit in units) { 91 for (CompilationUnit unit in units) {
90 engine.AnalysisErrorInfo errorInfo = server.getErrors(file); 92 engine.AnalysisErrorInfo errorInfo = server.getErrors(params.file);
91 if (errorInfo != null) { 93 if (errorInfo != null) {
92 for (engine.AnalysisError error in errorInfo.errors) { 94 for (engine.AnalysisError error in errorInfo.errors) {
93 List<Fix> fixes = computeFixes(searchEngine, unit, error); 95 List<Fix> fixes = computeFixes(searchEngine, unit, error);
94 if (fixes.isNotEmpty) { 96 if (fixes.isNotEmpty) {
95 AnalysisError serverError = 97 AnalysisError serverError =
96 analysisErrorFromEngine(errorInfo.lineInfo, error); 98 analysisErrorFromEngine(errorInfo.lineInfo, error);
97 ErrorFixes errorFixes = new ErrorFixes(serverError); 99 ErrorFixes errorFixes = new ErrorFixes(serverError);
98 errorFixesList.add(errorFixes); 100 errorFixesList.add(errorFixes);
99 fixes.forEach((fix) { 101 fixes.forEach((fix) {
100 errorFixes.addFix(fix); 102 errorFixes.addFix(fix);
(...skipping 27 matching lines...) Expand all
128 130
129 class RefactoringKind { 131 class RefactoringKind {
130 static const String CONVERT_GETTER_TO_METHOD = 'CONVERT_GETTER_TO_METHOD'; 132 static const String CONVERT_GETTER_TO_METHOD = 'CONVERT_GETTER_TO_METHOD';
131 static const String CONVERT_METHOD_TO_GETTER = 'CONVERT_METHOD_TO_GETTER'; 133 static const String CONVERT_METHOD_TO_GETTER = 'CONVERT_METHOD_TO_GETTER';
132 static const String EXTRACT_LOCAL_VARIABLE = 'EXTRACT_LOCAL_VARIABLE'; 134 static const String EXTRACT_LOCAL_VARIABLE = 'EXTRACT_LOCAL_VARIABLE';
133 static const String EXTRACT_METHOD = 'EXTRACT_METHOD'; 135 static const String EXTRACT_METHOD = 'EXTRACT_METHOD';
134 static const String INLINE_LOCAL_VARIABLE = 'INLINE_LOCAL_VARIABLE'; 136 static const String INLINE_LOCAL_VARIABLE = 'INLINE_LOCAL_VARIABLE';
135 static const String INLINE_METHOD = 'INLINE_METHOD'; 137 static const String INLINE_METHOD = 'INLINE_METHOD';
136 static const String RENAME = 'RENAME'; 138 static const String RENAME = 'RENAME';
137 } 139 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/domain_completion.dart ('k') | pkg/analysis_server/lib/src/generated_protocol.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698