formatOutgoingCallsResult function

String formatOutgoingCallsResult(
  1. List<LspOutgoingCall>? calls, {
  2. String? cwd,
})

Format outgoingCalls result.

Implementation

String formatOutgoingCallsResult(List<LspOutgoingCall>? calls, {String? cwd}) {
  if (calls == null || calls.isEmpty) {
    return 'No outgoing calls found (this function calls nothing)';
  }

  final plural = calls.length == 1 ? 'call' : 'calls';
  final lines = <String>['Found ${calls.length} outgoing $plural:'];

  final byFile = groupByFile(calls, (c) => c.to.uri, cwd: cwd);
  for (final entry in byFile.entries) {
    lines.add('\n${entry.key}:');
    for (final call in entry.value) {
      final kind = symbolKindToString(call.to.kind);
      final line = call.to.range.start.line + 1;
      var callLine = '  ${call.to.name} ($kind) - Line $line';
      if (call.fromRanges.isNotEmpty) {
        final callSites = call.fromRanges
            .map((r) => '${r.start.line + 1}:${r.start.character + 1}')
            .join(', ');
        callLine += ' [called from: $callSites]';
      }
      lines.add(callLine);
    }
  }

  return lines.join('\n');
}