| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'dart:async'; | 5 import 'dart:async'; |
| 6 | 6 |
| 7 import 'package:analyzer/dart/analysis/results.dart'; | 7 import 'package:analyzer/dart/analysis/results.dart'; |
| 8 import 'package:analyzer/error/error.dart'; | 8 import 'package:analyzer/error/error.dart'; |
| 9 import 'package:analyzer/src/dart/analysis/driver.dart'; | 9 import 'package:analyzer/src/dart/analysis/driver.dart'; |
| 10 import 'package:analyzer/src/generated/source.dart'; | 10 import 'package:analyzer/src/generated/source.dart'; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 * | 22 * |
| 23 * Clients may not extend or implement this class, but are allowed to use it as | 23 * Clients may not extend or implement this class, but are allowed to use it as |
| 24 * a mix-in when creating a subclass of [ServerPlugin] that also uses | 24 * a mix-in when creating a subclass of [ServerPlugin] that also uses |
| 25 * [FixesMixin] as a mix-in. | 25 * [FixesMixin] as a mix-in. |
| 26 */ | 26 */ |
| 27 abstract class DartFixesMixin implements FixesMixin { | 27 abstract class DartFixesMixin implements FixesMixin { |
| 28 @override | 28 @override |
| 29 Future<FixesRequest> getFixesRequest(EditGetFixesParams parameters) async { | 29 Future<FixesRequest> getFixesRequest(EditGetFixesParams parameters) async { |
| 30 String path = parameters.file; | 30 String path = parameters.file; |
| 31 int offset = parameters.offset; | 31 int offset = parameters.offset; |
| 32 AnalysisDriver driver = driverForPath(path); | 32 ResolveResult result = await getResolveResult(path); |
| 33 if (driver == null) { | |
| 34 // Return an error from the request. | |
| 35 throw new RequestFailure( | |
| 36 RequestErrorFactory.pluginError('Failed to analyze $path', null)); | |
| 37 } | |
| 38 ResolveResult result = await driver.getResult(path); | |
| 39 return new DartFixesRequestImpl( | 33 return new DartFixesRequestImpl( |
| 40 resourceProvider, offset, _getErrors(offset, result), result); | 34 resourceProvider, offset, _getErrors(offset, result), result); |
| 41 } | 35 } |
| 42 | 36 |
| 43 List<AnalysisError> _getErrors(int offset, ResolveResult result) { | 37 List<AnalysisError> _getErrors(int offset, ResolveResult result) { |
| 44 LineInfo lineInfo = result.lineInfo; | 38 LineInfo lineInfo = result.lineInfo; |
| 45 int offsetLine = lineInfo.getLocation(offset).lineNumber; | 39 int offsetLine = lineInfo.getLocation(offset).lineNumber; |
| 46 return result.errors.where((AnalysisError error) { | 40 return result.errors.where((AnalysisError error) { |
| 47 int errorLine = lineInfo.getLocation(error.offset).lineNumber; | 41 int errorLine = lineInfo.getLocation(error.offset).lineNumber; |
| 48 return errorLine == offsetLine; | 42 return errorLine == offsetLine; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 60 abstract class FixesMixin implements ServerPlugin { | 54 abstract class FixesMixin implements ServerPlugin { |
| 61 /** | 55 /** |
| 62 * Return a list containing the fix contributors that should be used to create | 56 * Return a list containing the fix contributors that should be used to create |
| 63 * fixes for the file with the given [path]. | 57 * fixes for the file with the given [path]. |
| 64 */ | 58 */ |
| 65 List<FixContributor> getFixContributors(String path); | 59 List<FixContributor> getFixContributors(String path); |
| 66 | 60 |
| 67 /** | 61 /** |
| 68 * Return the fixes request that should be passes to the contributors | 62 * Return the fixes request that should be passes to the contributors |
| 69 * returned from [getFixContributors]. | 63 * returned from [getFixContributors]. |
| 64 * |
| 65 * Throw a [RequestFailure] if the request could not be created. |
| 70 */ | 66 */ |
| 71 Future<FixesRequest> getFixesRequest(EditGetFixesParams parameters); | 67 Future<FixesRequest> getFixesRequest(EditGetFixesParams parameters); |
| 72 | 68 |
| 73 @override | 69 @override |
| 74 Future<EditGetFixesResult> handleEditGetFixes( | 70 Future<EditGetFixesResult> handleEditGetFixes( |
| 75 EditGetFixesParams parameters) async { | 71 EditGetFixesParams parameters) async { |
| 76 String path = parameters.file; | 72 String path = parameters.file; |
| 77 FixesRequest request = await getFixesRequest(parameters); | 73 FixesRequest request = await getFixesRequest(parameters); |
| 78 FixGenerator generator = new FixGenerator(getFixContributors(path)); | 74 FixGenerator generator = new FixGenerator(getFixContributors(path)); |
| 79 GeneratorResult result = await generator.generateFixesResponse(request); | 75 GeneratorResult result = await generator.generateFixesResponse(request); |
| 80 result.sendNotifications(channel); | 76 result.sendNotifications(channel); |
| 81 return result.result; | 77 return result.result; |
| 82 } | 78 } |
| 83 } | 79 } |
| OLD | NEW |