Skip to content

Tracking Issue for rustc's translatable diagnostics infrastructure #132181

Open
@jieyouxu

Description

@jieyouxu

This is a tracking issue for rustc's translatable diagnostics infrastructure, which is related to #100717 but reflects the current status.

Current status

Unfortunately, we have found that the current implementation of diagnostic translation infrastructure causes significant friction for compiler contributors when trying to work on diagnostics, including but not limited to:

  • Having to edit multiple files (fluent file, errors.rs and the emission site, etc.)
  • The diagnostics derive DSL is quite complex and exhibits some quirks
  • Fluent DSL also has its own quirks
  • Sometimes not sufficiently flexible to accommodate diagnostic needs, e.g. see rustc_const_eval or other not-migrated examples.

Important

Based on these friction points, we want to downgrade the internal lints untranslatable_diagnostic/diagnostic_outside_of_impl requiring usage of current translatable diagnostic infra from deny to allow.

If someone wants to continue the translatable diagnostics effort, then they will need to come up with a better redesign that causes less friction for compiler contributors.

Related discussions

Implementation steps

Relaxing the current restrictions

Come up with a redesign

Note: this is not currently being actively worked on AFAICT, please speak with wg-diagnostics and T-compiler if you wish to pursue this. See specifically https://rust-lang.zulipchat.com/#narrow/channel/336883-i18n/topic/.23100717.20diag.20translation/near/472701978.

  • A redesign of the translatable diagnostics infra will need to address the needs of both compiler contributors and translation teams. In particular, it cannot cause significant burden or friction for compiler contributors.

Further steps are presently unclear.

Unresolved questions

  • What do we do with the current diagnostic translation infrastructure?
    • It's a lot of work and churn to rip it out, as well.
  • What about the Pontoon infrastructure?
  • What about translation teams?

Implementation / experimentation history

This listing is moreso focused on diagnostic infra itself, not migration efforts. Please see the closed PRs for what concrete issues they have ran into.

More discussions


cc @rust-lang/wg-diagnostics

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-diagnosticsArea: Messages for errors, warnings, and lintsA-translationArea: Translation infrastructure, and migrating existing diagnostics to SessionDiagnosticC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCD-diagnostic-infraDiagnostics: Issues that affect all diagnostics, or relate to the diagnostic machinery itself.E-hardCall for participation: Hard difficulty. Experience needed to fix: A lot.E-needs-designThis issue needs exploration and design to see how and if we can fix/implement itS-tracking-needs-deep-researchStatus: This feature needs deep research to solve design or implementation issues.S-tracking-needs-design-proposalStatus: This needs a clear design proposal and then a meeting with the team.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.WG-diagnosticsWorking group: Diagnostics

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions