handleEditGetFixes method

  1. @override
Future<EditGetFixesResult> handleEditGetFixes(
  1. EditGetFixesParams parameters
)
override

Handle an 'edit.getFixes' request.

Throw a RequestFailure if the request could not be handled.

Implementation

@override
Future<EditGetFixesResult> handleEditGetFixes(
  EditGetFixesParams parameters,
) async {
  try {
    final driver = driverForPath(parameters.file) as AnalysisDriver;
    final analysisResult = await driver.getResult2(parameters.file);

    if (analysisResult is! ResolvedUnitResult) {
      return EditGetFixesResult([]);
    }

    final fixes = _check(driver, analysisResult)
        .where((fix) =>
            fix.error.location.file == parameters.file &&
            fix.error.location.offset <= parameters.offset &&
            parameters.offset <=
                fix.error.location.offset + fix.error.location.length &&
            fix.fixes.isNotEmpty)
        .toList();

    return EditGetFixesResult(fixes);
  } on Exception catch (e, stackTrace) {
    channel.sendNotification(
      PluginErrorParams(false, e.toString(), stackTrace.toString())
          .toNotification(),
    );

    return EditGetFixesResult([]);
  }
}