public DiagnosticResult WithLineOffset(int offset) { if (Spans.IsEmpty) { return(this); } var result = this; var spansBuilder = result.Spans.ToBuilder(); for (var i = 0; i < result.Spans.Length; i++) { var newStartLinePosition = new LinePosition(result.Spans[i].Span.StartLinePosition.Line + offset, result.Spans[i].Span.StartLinePosition.Character); var newEndLinePosition = new LinePosition(result.Spans[i].Span.EndLinePosition.Line + offset, result.Spans[i].Span.EndLinePosition.Character); spansBuilder[i] = new DiagnosticLocation(new FileLinePositionSpan(result.Spans[i].Span.Path, newStartLinePosition, newEndLinePosition), result.Spans[i].Options); } return(new DiagnosticResult( spansBuilder.MoveToImmutable(), _suppressMessage, _message, Severity, Id, MessageFormat, MessageArguments, SuppressedId)); }
public DiagnosticResult WithDefaultPath(string path) { if (Spans.IsEmpty) { return(this); } var spans = Spans.ToBuilder(); for (var i = 0; i < spans.Count; i++) { if (spans[i].Span.Path == string.Empty) { spans[i] = new DiagnosticLocation(new FileLinePositionSpan(path, spans[i].Span.Span), spans[i].Options); } } return(new DiagnosticResult( spans.MoveToImmutable(), _suppressMessage, _message, Severity, Id, MessageFormat, MessageArguments, SuppressedId)); }