| 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 2369ad1c1b4c5abde1a0ffa4b4ced57d143378d3..6d3bec40b110acb68e0d86c9f200ce66c0b9e373 100644 | 
| --- a/pkg/analysis_server/lib/src/edit/edit_domain.dart | 
| +++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart | 
| @@ -9,6 +9,7 @@ import 'dart:async'; | 
| import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; | 
| import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; | 
| import 'package:analysis_server/plugin/edit/fix/fix_core.dart'; | 
| +import 'package:analysis_server/plugin/edit/fix/fix_dart.dart'; | 
| import 'package:analysis_server/src/analysis_server.dart'; | 
| import 'package:analysis_server/src/collections.dart'; | 
| import 'package:analysis_server/src/constants.dart'; | 
| @@ -16,6 +17,7 @@ import 'package:analysis_server/src/protocol_server.dart' hide Element; | 
| 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'; | 
| import 'package:analysis_server/src/services/correction/status.dart'; | 
| @@ -24,6 +26,7 @@ import 'package:analysis_server/src/services/search/search_engine.dart'; | 
| import 'package:analyzer/dart/ast/ast.dart'; | 
| import 'package:analyzer/dart/element/element.dart'; | 
| import 'package:analyzer/error/error.dart' as engine; | 
| +import 'package:analyzer/file_system/file_system.dart'; | 
| import 'package:analyzer/src/dart/analysis/driver.dart'; | 
| import 'package:analyzer/src/dart/scanner/scanner.dart' as engine; | 
| import 'package:analyzer/src/error/codes.dart' as engine; | 
| @@ -169,41 +172,63 @@ class EditDomainHandler implements RequestHandler { | 
| } | 
|  | 
| Future getFixes(Request request) async { | 
| -    if (server.options.enableNewAnalysisDriver) { | 
| -      // TODO(scheglov) implement for the new analysis driver | 
| -      return; | 
| -    } | 
| var params = new EditGetFixesParams.fromRequest(request); | 
| String file = params.file; | 
| int offset = params.offset; | 
| -    // add fixes | 
| + | 
| List<AnalysisErrorFixes> errorFixesList = <AnalysisErrorFixes>[]; | 
| -    List<CompilationUnit> units = server.getResolvedCompilationUnits(file); | 
| -    for (CompilationUnit unit in units) { | 
| -      engine.AnalysisErrorInfo errorInfo = server.getErrors(file); | 
| -      if (errorInfo != null) { | 
| -        LineInfo lineInfo = errorInfo.lineInfo; | 
| -        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, unit.element.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); | 
| -              }); | 
| +    if (server.options.enableNewAnalysisDriver) { | 
| +      AnalysisResult result = await server.getAnalysisResult(file); | 
| +      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, unit.element.context, unit, error); | 
| +          List<Fix> fixes = | 
| +              await new DefaultFixContributor().internalComputeFixes(context); | 
| +          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); | 
| +            }); | 
| +          } | 
| +        } | 
| +      } | 
| +    } else { | 
| +      List<CompilationUnit> units = server.getResolvedCompilationUnits(file); | 
| +      for (CompilationUnit unit in units) { | 
| +        engine.AnalysisErrorInfo errorInfo = server.getErrors(file); | 
| +        if (errorInfo != null) { | 
| +          LineInfo lineInfo = errorInfo.lineInfo; | 
| +          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, unit.element.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); | 
| +                }); | 
| +              } | 
| } | 
| } | 
| } | 
| } | 
| } | 
| -    // respond | 
| + | 
| +    // Send the response. | 
| server.sendResponse( | 
| new EditGetFixesResult(errorFixesList).toResponse(request.id)); | 
| } | 
| @@ -430,6 +455,26 @@ class _DartAssistContextForValues implements DartAssistContext { | 
| } | 
|  | 
| /** | 
| + * And implementation of [DartFixContext]. | 
| + */ | 
| +class _DartFixContextImpl implements DartFixContext { | 
| +  @override | 
| +  final ResourceProvider resourceProvider; | 
| + | 
| +  @override | 
| +  final engine.AnalysisContext analysisContext; | 
| + | 
| +  @override | 
| +  final CompilationUnit unit; | 
| + | 
| +  @override | 
| +  final engine.AnalysisError error; | 
| + | 
| +  _DartFixContextImpl( | 
| +      this.resourceProvider, this.analysisContext, this.unit, this.error); | 
| +} | 
| + | 
| +/** | 
| * An object managing a single [Refactoring] instance. | 
| * | 
| * The instance is identified by its kind, file, offset and length. | 
|  |