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

Migrate rustdoc diagnostics to translatable diagnostics #112807

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

nicklimmm
Copy link
Contributor

Diagnostic translation tracking issue: #100717

@rustbot
Copy link
Collaborator

rustbot commented Jun 19, 2023

r? @jsha

(rustbot has picked a reviewer for you, use r? to override)

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. labels Jun 19, 2023
@nicklimmm
Copy link
Contributor Author

@rustbot label +A-translation

@rustbot rustbot added the A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic label Jun 19, 2023
@rust-log-analyzer

This comment has been minimized.

let reported = diag.struct_err(err).emit();
Err(reported)
}
Err(error) => Err(diag.emit_err(MainError { error })),
Copy link
Member

Choose a reason for hiding this comment

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

I don't think it makes sense to "translate" this -- it's not any better in this current state, IMO. Can you just add diagnostic_outside_of_impl for this function and remove MainError?

Ideally we'd change Result<(), String> into something that's like Result<(), T> where T: IntoDiagnostic or something...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

After some thought, realized that the error string that we got here comes from Result, which is in English.

If we would like to make this section translatable, then we need to support translations of Result::Err. Is this even feasible?

couldn't generate documentation: {$error}
.note = failed to create or modify "{$file}"

rustdoc_compilation_failed = Compilation failed, aborting rustdoc
Copy link
Member

Choose a reason for hiding this comment

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

I know this is pre-existing, but it's conventional for diagnostics to be lowercase. Not sure if rustdoc is special in this regard or if this was just an oversight.

Suggested change
rustdoc_compilation_failed = Compilation failed, aborting rustdoc
rustdoc_compilation_failed = compilation failed, aborting rustdoc

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Most of the diagnostics in rustdoc are in lowercase (around < 5 that are not).

Shall we set all them to lowercase? @jsha

}
Err(e) => Err(tcx.sess.emit_err(CouldntGenerateDocumentation {
error: e.error,
file: e.file.display().to_string(),
Copy link
Member

@compiler-errors compiler-errors Jun 19, 2023

Choose a reason for hiding this comment

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

Is file ever actually empty in practice? If so, I think it may be better to represent this as Option<String> so you can just annotate it with #[note] instead of having a custom impl IntoDiagnostic<'_> for CouldntGenerateDocumentation.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is another alternative that I found, it requires adding another struct for a Subdiagnostic note.

#[derive(Diagnostic)]
#[diag(rustdoc_couldnt_generate_documentation)]
pub(crate) struct CouldntGenerateDocumentation {
    pub(crate) error: String,
    #[subdiagnostic]
    pub(crate) file: Option<FailedToCreateOrModifyFile>,
}

#[derive(Subdiagnostic)]
#[note(rustdoc_failed_to_create_or_modify_file)]
pub(crate) struct FailedToCreateOrModifyFile {
    pub(crate) file: String,
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Having Option<String> for the file field (in the version specified in this review comment) and adding #[note] to the struct causes compilation failures.

This is because Option<String> doesn't implement IntoDiagnosticArgs. Implementing IntoDiagnosticArgs for Option<String> is also not allowed due to the orphan rules. Creating a new (wrapped) type for Option<String>, and then implementing the trait wouldn't work because the Option is "gone" from the struct field.

CMIIW here :)

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@nicklimmm nicklimmm force-pushed the rustdoc-translatable-diagnostics-migration branch from 05b2de3 to d0cf772 Compare June 26, 2023 16:24
@rust-log-analyzer

This comment has been minimized.

@nicklimmm nicklimmm force-pushed the rustdoc-translatable-diagnostics-migration branch from d0cf772 to b5be644 Compare June 27, 2023 13:05
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer
Copy link
Collaborator

The job mingw-check failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
GITHUB_ACTION=__run_7
GITHUB_ACTIONS=true
GITHUB_ACTION_REF=
GITHUB_ACTION_REPOSITORY=
GITHUB_ACTOR=nicklimmm
GITHUB_API_URL=https://api.github.com
GITHUB_BASE_REF=master
GITHUB_ENV=/home/runner/work/_temp/_runner_file_commands/set_env_05f3f51c-c4de-495b-8613-5a94a7fdff1a
GITHUB_EVENT_NAME=pull_request
---
GITHUB_SERVER_URL=https://github.com
GITHUB_SHA=5de87398801d04b3f303b167fb2d38c244046795
GITHUB_STATE=/home/runner/work/_temp/_runner_file_commands/save_state_05f3f51c-c4de-495b-8613-5a94a7fdff1a
GITHUB_STEP_SUMMARY=/home/runner/work/_temp/_runner_file_commands/step_summary_05f3f51c-c4de-495b-8613-5a94a7fdff1a
GITHUB_TRIGGERING_ACTOR=nicklimmm
GITHUB_WORKFLOW_REF=rust-lang/rust/.github/workflows/ci.yml@refs/pull/112807/merge
GITHUB_WORKFLOW_SHA=5de87398801d04b3f303b167fb2d38c244046795
GITHUB_WORKSPACE=/home/runner/work/rust/rust
GOROOT_1_18_X64=/opt/hostedtoolcache/go/1.18.10/x64
---
    Checking rustdoc v0.0.0 (/checkout/src/librustdoc)
error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> src/librustdoc/clean/types.rs:987:42
    |
987 | ...                   sess.span_err(e.span, e.msg);
    |
note: the lint level is defined here
   --> src/librustdoc/lib.rs:23:9
    |
    |
23  | #![deny(rustc::diagnostic_outside_of_impl)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: diagnostics should be created using translatable messages
   --> src/librustdoc/clean/types.rs:987:42
    |
987 | ...                   sess.span_err(e.span, e.msg);
    |
note: the lint level is defined here
   --> src/librustdoc/lib.rs:22:9
    |
    |
22  | #![deny(rustc::untranslatable_diagnostic)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> /checkout/compiler/rustc_errors/src/diagnostic_builder.rs:787:18
     |
785  |   macro_rules! struct_span_err {
     |   ---------------------------- in this expansion of `rustc_errors::struct_span_err!`
786  |       ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
787  |           $session.struct_span_err_with_code(
     |
    ::: src/librustdoc/clean/mod.rs:2842:9
     |
2842 | /         rustc_errors::struct_span_err!(
2842 | /         rustc_errors::struct_span_err!(
2843 | |             cx.tcx.sess,
2844 | |             inline.span(),
2845 | |             E0780,
2846 | |             "anonymous imports cannot be inlined"
     | |_________- in this macro invocation

error: diagnostics should be created using translatable messages
    --> /checkout/compiler/rustc_errors/src/diagnostic_builder.rs:787:18
    --> /checkout/compiler/rustc_errors/src/diagnostic_builder.rs:787:18
     |
785  |   macro_rules! struct_span_err {
     |   ---------------------------- in this expansion of `rustc_errors::struct_span_err!`
786  |       ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
787  |           $session.struct_span_err_with_code(
     |
    ::: src/librustdoc/clean/mod.rs:2842:9
     |
2842 | /         rustc_errors::struct_span_err!(
2842 | /         rustc_errors::struct_span_err!(
2843 | |             cx.tcx.sess,
2844 | |             inline.span(),
2845 | |             E0780,
2846 | |             "anonymous imports cannot be inlined"
     | |_________- in this macro invocation

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> /checkout/compiler/rustc_errors/src/diagnostic_builder.rs:787:18
   --> /checkout/compiler/rustc_errors/src/diagnostic_builder.rs:787:18
    |
785 |   macro_rules! struct_span_err {
    |   ---------------------------- in this expansion of `rustc_errors::struct_span_err!`
786 |       ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
787 |           $session.struct_span_err_with_code(
    |
   ::: src/librustdoc/core.rs:488:27
    |
488 |               let mut err = rustc_errors::struct_span_err!(
---

error: diagnostics should be created using translatable messages
   --> /checkout/compiler/rustc_errors/src/diagnostic_builder.rs:787:18
    |
785 |   macro_rules! struct_span_err {
    |   ---------------------------- in this expansion of `rustc_errors::struct_span_err!`
786 |       ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
787 |           $session.struct_span_err_with_code(
    |
   ::: src/librustdoc/core.rs:488:27
    |
488 |               let mut err = rustc_errors::struct_span_err!(
---

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> src/librustdoc/html/markdown.rs:789:22
    |
789 |             self.tcx.struct_span_lint_hir(

error: diagnostics should be created using translatable messages
   --> src/librustdoc/html/markdown.rs:789:22
    |
    |
789 |             self.tcx.struct_span_lint_hir(

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> src/librustdoc/html/render/context.rs:763:65
    |
    |
763 |             self.shared.errors.iter().map(|err| self.tcx().sess.struct_err(err).emit()).count();

error: diagnostics should be created using translatable messages
   --> src/librustdoc/html/render/context.rs:763:65
    |
    |
763 |             self.shared.errors.iter().map(|err| self.tcx().sess.struct_err(err).emit()).count();

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/html/render/mod.rs:2280:26
     |
     |
2280 |                 tcx.sess.span_err(span, format!("failed to read file {}: {err}", path.display()));

error: diagnostics should be created using translatable messages
    --> src/librustdoc/html/render/mod.rs:2280:26
     |
     |
2280 |                 tcx.sess.span_err(span, format!("failed to read file {}: {err}", path.display()));

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> src/librustdoc/html/sources.rs:146:45
    |
    |
146 |                     self.cx.shared.tcx.sess.span_err(

error: diagnostics should be created using translatable messages
   --> src/librustdoc/html/sources.rs:146:45
    |
    |
146 |                     self.cx.shared.tcx.sess.span_err(

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1187:22
     |
     |
1187 |                 diag.span_label(sp, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1187:22
     |
     |
1187 |                 diag.span_label(sp, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1189:22
     |
     |
1189 |                 diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1189:22
     |
     |
1189 |                 diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1627:9
     |
     |
1627 |     tcx.struct_span_lint_hir(lint, hir_id, sp, msg, |lint| {

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1627:9
     |
     |
1627 |     tcx.struct_span_lint_hir(lint, hir_id, sp, msg, |lint| {

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1780:34
     |
     |
1780 | ...                   diag.span_label(span, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1780:34
     |
     |
1780 | ...                   diag.span_label(span, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1782:34
     |
     |
1782 | ...                   diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1782:34
     |
     |
1782 | ...                   diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1795:38
     |
---

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1837:42
     |
1837 | ...                   diag.span_label(span, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1837:42
     |
     |
1837 | ...                   diag.span_label(span, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1839:42
     |
     |
1839 | ...                   diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1839:42
     |
     |
1839 | ...                   diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1862:42
     |
     |
1862 | ...                   diag.span_label(span, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1862:42
     |
     |
1862 | ...                   diag.span_label(span, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1864:42
     |
     |
1864 | ...                   diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1864:42
     |
     |
1864 | ...                   diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1884:30
     |
     |
1884 |                         diag.span_label(span, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1884:30
     |
     |
1884 |                         diag.span_label(span, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1886:30
     |
     |
1886 |                         diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1886:30
     |
     |
1886 |                         diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1911:26
     |
     |
1911 |                     diag.span_label(span, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1911:26
     |
     |
1911 |                     diag.span_label(span, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1913:26
     |
     |
1913 |                     diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1913:26
     |
     |
1913 |                     diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1945:18
     |
     |
1945 |             diag.span_label(sp, "invalid anchor");

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1945:18
     |
     |
1945 |             diag.span_label(sp, "invalid anchor");

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1963:14
     |
---

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1993:22
     |
1993 |                 diag.span_label(span, note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1993:22
     |
     |
1993 |                 diag.span_label(span, note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1995:22
     |
     |
1995 |                 diag.note(note);

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1995:22
     |
     |
1995 |                 diag.note(note);

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2053:18
     |
     |
2053 |             diag.span_label(sp, "ambiguous link");

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2053:18
     |
     |
2053 |             diag.span_label(sp, "ambiguous link");

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2055:18
     |
     |
2055 |             diag.note("ambiguous link");

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2055:18
     |
     |
2055 |             diag.note("ambiguous link");

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2092:14
     |
     |
2092 |         diag.help(format!("{}: {}", help, suggestion.as_help(path_str)));

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2092:14
     |
     |
2092 |         diag.help(format!("{}: {}", help, suggestion.as_help(path_str)));

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2111:18
     |
     |
2111 |             diag.span_label(sp, "this item is private");

error: diagnostics should be created using translatable messages
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2111:18
     |
     |
2111 |             diag.span_label(sp, "this item is private");

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2119:14
     |
---

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> src/librustdoc/passes/check_doc_test_visibility.rs:122:20
    |
122 |             cx.tcx.struct_span_lint_hir(

error: diagnostics should be created using translatable messages
   --> src/librustdoc/passes/check_doc_test_visibility.rs:122:20
    |
    |
122 |             cx.tcx.struct_span_lint_hir(

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
   --> src/librustdoc/passes/check_doc_test_visibility.rs:133:16
    |
    |
133 |         cx.tcx.struct_span_lint_hir(

error: diagnostics should be created using translatable messages
   --> src/librustdoc/passes/check_doc_test_visibility.rs:133:16
    |
    |
133 |         cx.tcx.struct_span_lint_hir(

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
  --> src/librustdoc/passes/lint/bare_urls.rs:26:24
   |
   |
26 |                 cx.tcx.struct_span_lint_hir(crate::lint::BARE_URLS, hir_id, sp, msg, |lint| {

error: diagnostics should be created using translatable messages
  --> src/librustdoc/passes/lint/bare_urls.rs:26:24
   |
   |
26 |                 cx.tcx.struct_span_lint_hir(crate::lint::BARE_URLS, hir_id, sp, msg, |lint| {

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
  --> src/librustdoc/passes/lint/check_code_block_syntax.rs:96:12
   |
   |
96 |     cx.tcx.struct_span_lint_hir(crate::lint::INVALID_RUST_CODEBLOCKS, hir_id, sp, msg, |lint| {

error: diagnostics should be created using translatable messages
  --> src/librustdoc/passes/lint/check_code_block_syntax.rs:96:12
   |
   |
96 |     cx.tcx.struct_span_lint_hir(crate::lint::INVALID_RUST_CODEBLOCKS, hir_id, sp, msg, |lint| {

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
  --> src/librustdoc/passes/lint/html_tags.rs:27:17
   |
---

error: diagnostics should only be created in `IntoDiagnostic`/`AddToDiagnostic` impls
  --> src/librustdoc/passes/lint/unescaped_backticks.rs:59:21
   |
59 |                 tcx.struct_span_lint_hir(crate::lint::UNESCAPED_BACKTICKS, hir_id, span, "unescaped backtick", |lint| {

error: diagnostics should be created using translatable messages
  --> src/librustdoc/passes/lint/unescaped_backticks.rs:59:21
   |
   |
59 |                 tcx.struct_span_lint_hir(crate::lint::UNESCAPED_BACKTICKS, hir_id, span, "unescaped backtick", |lint| {

error: could not compile `rustdoc` (lib) due to 76 previous errors
Build completed unsuccessfully in 0:01:15
##[group]Clock drift check

@bors
Copy link
Contributor

bors commented Aug 16, 2023

☔ The latest upstream changes (presumably #114905) made this pull request unmergeable. Please resolve the merge conflicts.

@Dylan-DPC
Copy link
Member

@nicklimmm this is waiting on you to resolve the conflicts and the CI error. Let me know if you have any updates

@nicklimmm
Copy link
Contributor Author

@nicklimmm this is waiting on you to resolve the conflicts and the CI error. Let me know if you have any updates

Will catch up on this soon, currently packed with other stuff.

@Dylan-DPC
Copy link
Member

@nicklimmm any updates on this? thanks

@fmease fmease added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants