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

Unified Diff: pkg/analysis_server/lib/src/edit/edit_domain.dart

Issue 2491953002: Support 'edit.organizeDirectives' with the new analysis driver. (Closed)
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analysis_server/test/edit/organize_directives_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/edit/edit_domain.dart
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
index 6d3bec40b110acb68e0d86c9f200ce66c0b9e373..3ab679a819150b9b8e80ddee270daad8a40e27e6 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -250,7 +250,8 @@ class EditDomainHandler implements RequestHandler {
} else if (requestName == EDIT_GET_REFACTORING) {
return _getRefactoring(request);
} else if (requestName == EDIT_ORGANIZE_DIRECTIVES) {
- return organizeDirectives(request);
+ organizeDirectives(request);
+ return Response.DELAYED_RESPONSE;
} else if (requestName == EDIT_SORT_MEMBERS) {
sortMembers(request);
return Response.DELAYED_RESPONSE;
@@ -261,36 +262,58 @@ class EditDomainHandler implements RequestHandler {
return null;
}
- Response organizeDirectives(Request request) {
+ Future<Null> organizeDirectives(Request request) async {
var params = new EditOrganizeDirectivesParams.fromRequest(request);
// prepare file
String file = params.file;
if (!engine.AnalysisEngine.isDartFileName(file)) {
- return new Response.fileNotAnalyzed(request, file);
- }
- // prepare resolved units
- List<CompilationUnit> units = server.getResolvedCompilationUnits(file);
- if (units.isEmpty) {
- return new Response.fileNotAnalyzed(request, file);
- }
- // prepare context
- CompilationUnit unit = units.first;
- engine.AnalysisContext context = unit.element.context;
- Source source = unit.element.source;
- List<engine.AnalysisError> errors = context.computeErrors(source);
+ server.sendResponse(new Response.fileNotAnalyzed(request, file));
+ return;
+ }
+ // Prepare the file information.
+ int fileStamp;
+ String code;
+ CompilationUnit unit;
+ List<engine.AnalysisError> errors;
+ if (server.options.enableNewAnalysisDriver) {
+ AnalysisResult result = await server.getAnalysisResult(file);
+ if (result == null) {
+ server.sendResponse(new Response.fileNotAnalyzed(request, file));
+ return;
+ }
+ fileStamp = -1;
+ code = result.content;
+ unit = result.unit;
+ errors = result.errors;
+ } else {
+ // prepare resolved units
+ List<CompilationUnit> units = server.getResolvedCompilationUnits(file);
+ if (units.isEmpty) {
+ server.sendResponse(new Response.fileNotAnalyzed(request, file));
+ return;
+ }
+ // prepare context
+ unit = units.first;
+ engine.AnalysisContext context = unit.element.context;
+ Source source = unit.element.source;
+ errors = context.computeErrors(source);
+ // prepare code
+ fileStamp = context.getModificationStamp(source);
+ code = context.getContents(source).data;
+ }
// check if there are scan/parse errors in the file
int numScanParseErrors = _getNumberOfScanParseErrors(errors);
if (numScanParseErrors != 0) {
- return new Response.organizeDirectivesError(
- request, 'File has $numScanParseErrors scan/parse errors.');
+ server.sendResponse(new Response.organizeDirectivesError(
+ request, 'File has $numScanParseErrors scan/parse errors.'));
+ return;
}
// do organize
- int fileStamp = context.getModificationStamp(source);
- String code = context.getContents(source).data;
DirectiveOrganizer sorter = new DirectiveOrganizer(code, unit, errors);
List<SourceEdit> edits = sorter.organize();
SourceFileEdit fileEdit = new SourceFileEdit(file, fileStamp, edits: edits);
- return new EditOrganizeDirectivesResult(fileEdit).toResponse(request.id);
+ server.sendResponse(
+ new EditOrganizeDirectivesResult(fileEdit).toResponse(request.id));
}
Future<Null> sortMembers(Request request) async {
@@ -299,6 +322,7 @@ class EditDomainHandler implements RequestHandler {
String file = params.file;
if (!engine.AnalysisEngine.isDartFileName(file)) {
server.sendResponse(new Response.sortMembersInvalidFile(request));
+ return;
}
// Prepare the file information.
int fileStamp;
@@ -308,6 +332,10 @@ class EditDomainHandler implements RequestHandler {
if (server.options.enableNewAnalysisDriver) {
AnalysisDriver driver = server.getAnalysisDriver(file);
ParseResult result = await driver.parseFile(file);
+ if (result == null) {
+ server.sendResponse(new Response.fileNotAnalyzed(request, file));
+ return;
+ }
fileStamp = -1;
code = result.content;
unit = result.unit;
« no previous file with comments | « no previous file | pkg/analysis_server/test/edit/organize_directives_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698