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

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

Issue 2894403003: Convert quick fix support to use AnalysisDriver (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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 e59fde6da0302ba334aa6caef78ecbf177b259b5..b8ae6620579714e61d491f55ad9d423291c3b197 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -18,7 +18,6 @@ import 'package:analysis_server/src/protocol_server.dart' hide Element;
import 'package:analysis_server/src/services/completion/statement/statement_completion.dart';
import 'package:analysis_server/src/services/correction/assist.dart';
import 'package:analysis_server/src/services/correction/assist_internal.dart';
-import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analysis_server/src/services/correction/fix_internal.dart';
import 'package:analysis_server/src/services/correction/organize_directives.dart';
import 'package:analysis_server/src/services/correction/sort_members.dart';
@@ -227,95 +226,60 @@ class EditDomainHandler extends AbstractRequestHandler {
int offset = params.offset;
List<AnalysisErrorFixes> errorFixesList = <AnalysisErrorFixes>[];
- if (server.options.enableNewAnalysisDriver) {
- //
- // Allow plugins to start computing fixes.
- //
- Map<PluginInfo, Future<plugin.Response>> pluginFutures;
- plugin.EditGetFixesParams requestParams =
- new plugin.EditGetFixesParams(file, offset);
- AnalysisDriver driver = server.getAnalysisDriver(file);
- if (driver == null) {
- pluginFutures = <PluginInfo, Future<plugin.Response>>{};
- } else {
- pluginFutures = server.pluginManager
- .broadcastRequest(requestParams, contextRoot: driver.contextRoot);
- }
- //
- // Compute fixes associated with server-generated errors.
- //
- AnalysisResult result = await server.getAnalysisResult(file);
- if (result != null) {
- CompilationUnit unit = result.unit;
- LineInfo lineInfo = result.lineInfo;
- int requestLine = lineInfo.getLocation(offset).lineNumber;
- for (engine.AnalysisError error in result.errors) {
- int errorLine = lineInfo.getLocation(error.offset).lineNumber;
- if (errorLine == requestLine) {
- var context = new _DartFixContextImpl(
- server.resourceProvider,
- result.driver.getTopLevelNameDeclarations,
- resolutionMap.elementDeclaredByCompilationUnit(unit).context,
- server.getAstProvider(file),
- unit,
- error);
- List<Fix> fixes =
- await new DefaultFixContributor().internalComputeFixes(context);
- if (fixes.isNotEmpty) {
- fixes.sort(Fix.SORT_BY_RELEVANCE);
- AnalysisError serverError =
- newAnalysisError_fromEngine(lineInfo, error);
- AnalysisErrorFixes errorFixes =
- new AnalysisErrorFixes(serverError);
- errorFixesList.add(errorFixes);
- fixes.forEach((fix) {
- errorFixes.fixes.add(fix.change);
- });
- }
- }
- }
- }
- //
- // Add the fixes produced by plugins to the server-generated fixes.
- //
- List<plugin.Response> responses = await waitForResponses(pluginFutures,
- requestParameters: requestParams);
- ResultConverter converter = new ResultConverter();
- for (plugin.Response response in responses) {
- plugin.EditGetFixesResult result =
- new plugin.EditGetFixesResult.fromResponse(response);
- errorFixesList
- .addAll(result.fixes.map(converter.convertAnalysisErrorFixes));
- }
+ //
+ // Allow plugins to start computing fixes.
+ //
+ Map<PluginInfo, Future<plugin.Response>> pluginFutures;
+ plugin.EditGetFixesParams requestParams =
+ new plugin.EditGetFixesParams(file, offset);
+ AnalysisDriver driver = server.getAnalysisDriver(file);
+ if (driver == null) {
+ pluginFutures = <PluginInfo, Future<plugin.Response>>{};
} else {
- CompilationUnit unit = await server.getResolvedCompilationUnit(file);
- engine.AnalysisErrorInfo errorInfo = server.getErrors(file);
- LineInfo lineInfo = errorInfo?.lineInfo;
- if (unit != null && errorInfo != null && lineInfo != null) {
- int requestLine = lineInfo.getLocation(offset).lineNumber;
- for (engine.AnalysisError error in errorInfo.errors) {
- int errorLine = lineInfo.getLocation(error.offset).lineNumber;
- if (errorLine == requestLine) {
- List<Fix> fixes = await computeFixes(
- server.serverPlugin,
- server.resourceProvider,
- resolutionMap.elementDeclaredByCompilationUnit(unit).context,
- error);
- if (fixes.isNotEmpty) {
- AnalysisError serverError =
- newAnalysisError_fromEngine(lineInfo, error);
- AnalysisErrorFixes errorFixes =
- new AnalysisErrorFixes(serverError);
- errorFixesList.add(errorFixes);
- fixes.forEach((fix) {
- errorFixes.fixes.add(fix.change);
- });
- }
+ pluginFutures = server.pluginManager
+ .broadcastRequest(requestParams, contextRoot: driver.contextRoot);
+ }
+ //
+ // Compute fixes associated with server-generated errors.
+ //
+ AnalysisResult result = await server.getAnalysisResult(file);
+ if (result != null) {
+ CompilationUnit unit = result.unit;
+ LineInfo lineInfo = result.lineInfo;
+ int requestLine = lineInfo.getLocation(offset).lineNumber;
+ for (engine.AnalysisError error in result.errors) {
+ int errorLine = lineInfo.getLocation(error.offset).lineNumber;
+ if (errorLine == requestLine) {
+ var context = new _DartFixContextImpl(server.resourceProvider,
+ result.driver, server.getAstProvider(file), unit, error);
+ List<Fix> fixes =
+ await new DefaultFixContributor().internalComputeFixes(context);
+ if (fixes.isNotEmpty) {
+ fixes.sort(Fix.SORT_BY_RELEVANCE);
+ AnalysisError serverError =
+ newAnalysisError_fromEngine(lineInfo, error);
+ AnalysisErrorFixes errorFixes = new AnalysisErrorFixes(serverError);
+ errorFixesList.add(errorFixes);
+ fixes.forEach((fix) {
+ errorFixes.fixes.add(fix.change);
+ });
}
}
}
}
//
+ // Add the fixes produced by plugins to the server-generated fixes.
+ //
+ List<plugin.Response> responses =
+ await waitForResponses(pluginFutures, requestParameters: requestParams);
+ ResultConverter converter = new ResultConverter();
+ for (plugin.Response response in responses) {
+ plugin.EditGetFixesResult result =
+ new plugin.EditGetFixesResult.fromResponse(response);
+ errorFixesList
+ .addAll(result.fixes.map(converter.convertAnalysisErrorFixes));
+ }
+ //
// Send the response.
//
server.sendResponse(
@@ -611,10 +575,7 @@ class _DartFixContextImpl implements DartFixContext {
final ResourceProvider resourceProvider;
@override
- final GetTopLevelDeclarations getTopLevelDeclarations;
-
- @override
- final engine.AnalysisContext analysisContext;
+ final AnalysisDriver analysisDriver;
@override
final AstProvider astProvider;
@@ -625,8 +586,12 @@ class _DartFixContextImpl implements DartFixContext {
@override
final engine.AnalysisError error;
- _DartFixContextImpl(this.resourceProvider, this.getTopLevelDeclarations,
- this.analysisContext, this.astProvider, this.unit, this.error);
+ _DartFixContextImpl(this.resourceProvider, this.analysisDriver,
+ this.astProvider, this.unit, this.error);
+
+ @override
+ GetTopLevelDeclarations get getTopLevelDeclarations =>
+ analysisDriver.getTopLevelNameDeclarations;
}
/**

Powered by Google App Engine
This is Rietveld 408576698