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

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

Issue 1461313004: Make FixContributor asynchronous. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: tweaks Created 5 years, 1 month 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/fix/fix_core.dart'; 10 import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 server.serverPlugin, context, source, params.offset, params.length); 141 server.serverPlugin, context, source, params.offset, params.length);
142 assists.forEach((Assist assist) { 142 assists.forEach((Assist assist) {
143 changes.add(assist.change); 143 changes.add(assist.change);
144 }); 144 });
145 } 145 }
146 Response response = 146 Response response =
147 new EditGetAssistsResult(changes).toResponse(request.id); 147 new EditGetAssistsResult(changes).toResponse(request.id);
148 server.sendResponse(response); 148 server.sendResponse(response);
149 } 149 }
150 150
151 Response getFixes(Request request) { 151 getFixes(Request request) async {
152 var params = new EditGetFixesParams.fromRequest(request); 152 var params = new EditGetFixesParams.fromRequest(request);
153 String file = params.file; 153 String file = params.file;
154 int offset = params.offset; 154 int offset = params.offset;
155 // add fixes 155 // add fixes
156 List<AnalysisErrorFixes> errorFixesList = <AnalysisErrorFixes>[]; 156 List<AnalysisErrorFixes> errorFixesList = <AnalysisErrorFixes>[];
157 List<CompilationUnit> units = server.getResolvedCompilationUnits(file); 157 List<CompilationUnit> units = server.getResolvedCompilationUnits(file);
158 for (CompilationUnit unit in units) { 158 for (CompilationUnit unit in units) {
159 engine.AnalysisErrorInfo errorInfo = server.getErrors(file); 159 engine.AnalysisErrorInfo errorInfo = server.getErrors(file);
160 if (errorInfo != null) { 160 if (errorInfo != null) {
161 LineInfo lineInfo = errorInfo.lineInfo; 161 LineInfo lineInfo = errorInfo.lineInfo;
162 int requestLine = lineInfo.getLocation(offset).lineNumber; 162 int requestLine = lineInfo.getLocation(offset).lineNumber;
163 for (engine.AnalysisError error in errorInfo.errors) { 163 for (engine.AnalysisError error in errorInfo.errors) {
164 int errorLine = lineInfo.getLocation(error.offset).lineNumber; 164 int errorLine = lineInfo.getLocation(error.offset).lineNumber;
165 if (errorLine == requestLine) { 165 if (errorLine == requestLine) {
166 List<Fix> fixes = computeFixes(server.serverPlugin, 166 List<Fix> fixes = await computeFixes(server.serverPlugin,
167 server.resourceProvider, unit.element.context, error); 167 server.resourceProvider, unit.element.context, error);
168 if (fixes.isNotEmpty) { 168 if (fixes.isNotEmpty) {
169 AnalysisError serverError = 169 AnalysisError serverError =
170 newAnalysisError_fromEngine(lineInfo, error); 170 newAnalysisError_fromEngine(lineInfo, error);
171 AnalysisErrorFixes errorFixes = 171 AnalysisErrorFixes errorFixes =
172 new AnalysisErrorFixes(serverError); 172 new AnalysisErrorFixes(serverError);
173 errorFixesList.add(errorFixes); 173 errorFixesList.add(errorFixes);
174 fixes.forEach((fix) { 174 fixes.forEach((fix) {
175 errorFixes.fixes.add(fix.change); 175 errorFixes.fixes.add(fix.change);
176 }); 176 });
177 } 177 }
178 } 178 }
179 } 179 }
180 } 180 }
181 } 181 }
182 // respond 182 // respond
183 return new EditGetFixesResult(errorFixesList).toResponse(request.id); 183 return server.sendResponse(
184 new EditGetFixesResult(errorFixesList).toResponse(request.id));
184 } 185 }
185 186
186 @override 187 @override
187 Response handleRequest(Request request) { 188 Response handleRequest(Request request) {
188 try { 189 try {
189 String requestName = request.method; 190 String requestName = request.method;
190 if (requestName == EDIT_FORMAT) { 191 if (requestName == EDIT_FORMAT) {
191 return format(request); 192 return format(request);
192 } else if (requestName == EDIT_GET_ASSISTS) { 193 } else if (requestName == EDIT_GET_ASSISTS) {
193 getAssists(request); 194 getAssists(request);
194 return Response.DELAYED_RESPONSE; 195 return Response.DELAYED_RESPONSE;
195 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) { 196 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) {
196 return _getAvailableRefactorings(request); 197 return _getAvailableRefactorings(request);
197 } else if (requestName == EDIT_GET_FIXES) { 198 } else if (requestName == EDIT_GET_FIXES) {
198 return getFixes(request); 199 getFixes(request);
200 return Response.DELAYED_RESPONSE;
199 } else if (requestName == EDIT_GET_REFACTORING) { 201 } else if (requestName == EDIT_GET_REFACTORING) {
200 return _getRefactoring(request); 202 return _getRefactoring(request);
201 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) { 203 } else if (requestName == EDIT_ORGANIZE_DIRECTIVES) {
202 return organizeDirectives(request); 204 return organizeDirectives(request);
203 } else if (requestName == EDIT_SORT_MEMBERS) { 205 } else if (requestName == EDIT_SORT_MEMBERS) {
204 return sortMembers(request); 206 return sortMembers(request);
205 } 207 }
206 } on RequestFailure catch (exception) { 208 } on RequestFailure catch (exception) {
207 return exception.response; 209 return exception.response;
208 } 210 }
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 } 741 }
740 return new RefactoringStatus(); 742 return new RefactoringStatus();
741 } 743 }
742 } 744 }
743 745
744 /** 746 /**
745 * [_RefactoringManager] throws instances of this class internally to stop 747 * [_RefactoringManager] throws instances of this class internally to stop
746 * processing in a manager that was reset. 748 * processing in a manager that was reset.
747 */ 749 */
748 class _ResetError {} 750 class _ResetError {}
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/plugin/edit/fix/fix_dart.dart ('k') | pkg/analysis_server/lib/src/services/correction/fix.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698