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<plugin.EditGetFixesResult> handleEditGetFixes(
    plugin.EditGetFixesParams parameters) async {
  try {
    final resolvedUnit = await getResolvedUnitResult(parameters.file);
    final analysisOptions = (_options[resolvedUnit.session] ??=
        _getAnalysisOptions(resolvedUnit.session.analysisContext));

    _logger.fine('handleEditGetFixes($parameters)');
    final fixes = _check(
      resolvedUnit.session.analysisContext.contextRoot.root.path,
      analysisOptions,
      resolvedUnit.path,
      resolvedUnit.unit,
      resolvedUnit,
    )
        .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();
    _logger.fine('result: $fixes');

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

    return plugin.EditGetFixesResult([]);
  }
}