Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improve DiagnosticBuilder docs #63488

Merged
merged 1 commit into from
Aug 14, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/librustc_errors/diagnostic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ impl Diagnostic {
}

/// Adds a span/label to be included in the resulting snippet.
/// This label will be shown together with the original span/label used when creating the
/// diagnostic, *not* a span added by one of the `span_*` methods.
///
/// This is pushed onto the `MultiSpan` that was created when the
/// diagnostic was first built. If you don't call this function at
/// all, and you just supplied a `Span` to create the diagnostic,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no idea what this second paragraph here means. I left it because maybe it helps someone else? But it seems to only be helpful for people that actually know the internals of how diagnostics work. Maybe it even says what I am now also saying in the new sentence I added? I couldn't tell.^^

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you called struct_span_err, for example, you end up with an error with an underline under that span with no label. If you use span_label on the DiagnosticBuilder you can either set the label of the primary span or add more spans to the diagnostic. I believe this is what the comment is trying to convey.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, that wasn't really clear to me as I never heard of MultiSpan. Now it says the same thing in two different ways then, maybe that helps...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MultiSpan is the only way of setting multiple primary spans, conceptually just Vec<Span>.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. I thought it would refer to how span_note also adds a new span to the message, but that seems to be a different kind of "multiple spans".

Expand Down Expand Up @@ -196,6 +199,7 @@ impl Diagnostic {
self
}

/// Prints the span with a note above it.
pub fn span_note<S: Into<MultiSpan>>(&mut self,
sp: S,
msg: &str)
Expand All @@ -209,6 +213,7 @@ impl Diagnostic {
self
}

/// Prints the span with a warn above it.
pub fn span_warn<S: Into<MultiSpan>>(&mut self,
sp: S,
msg: &str)
Expand All @@ -222,6 +227,7 @@ impl Diagnostic {
self
}

/// Prints the span with some help above it.
pub fn span_help<S: Into<MultiSpan>>(&mut self,
sp: S,
msg: &str)
Expand Down