normalizeTextDiagnostics function

List<TextDiagnosticRange> normalizeTextDiagnostics(
  1. Iterable<TextDiagnosticRange> diagnostics, {
  2. int? maxLength,
})

Implementation

List<TextDiagnosticRange> normalizeTextDiagnostics(
  Iterable<TextDiagnosticRange> diagnostics, {
  int? maxLength,
}) {
  final normalized =
      diagnostics
          .map((diagnostic) {
            final range = diagnostic.normalized();
            if (maxLength == null) {
              return range;
            }
            return TextDiagnosticRange(
              startOffset: range.startOffset.clamp(0, maxLength),
              endOffset: range.endOffset.clamp(0, maxLength),
              severity: range.severity,
              code: range.code,
              message: range.message,
              source: range.source,
            );
          })
          .toList(growable: false)
        ..sort((a, b) {
          final startComparison = a.startOffset.compareTo(b.startOffset);
          if (startComparison != 0) {
            return startComparison;
          }
          final endComparison = a.endOffset.compareTo(b.endOffset);
          if (endComparison != 0) {
            return endComparison;
          }
          return _diagnosticSeverityRank(
            b.severity,
          ).compareTo(_diagnosticSeverityRank(a.severity));
        });
  return List<TextDiagnosticRange>.unmodifiable(normalized);
}