rust/src
bors b869e84e58 Auto merge of #103042 - davidtwco:translation-distributed-ftl, r=oli-obk
errors: generate typed identifiers in each crate

Instead of loading the Fluent resources for every crate in `rustc_error_messages`, each crate generates typed identifiers for its own diagnostics and creates a static which are pulled together in the `rustc_driver` crate and provided to the diagnostic emitter.

There are advantages and disadvantages to this change..

#### Advantages
- Changing a diagnostic now only recompiles the crate for that diagnostic and those crates that depend on it, rather than `rustc_error_messages` and all crates thereafter.
- This approach can be used to support first-party crates that want to supply translatable diagnostics (e.g. `rust-lang/thorin` in https://github.com/rust-lang/rust/pull/102612#discussion_r985372582, cc `@JhonnyBillM)`
- We can extend this a little so that tools built using rustc internals (like clippy or rustdoc) can add their own diagnostic resources (much more easily than those resources needing to be available to `rustc_error_messages`)

#### Disadvantages
- Crates can only refer to the diagnostic messages defined in the current crate (or those from dependencies), rather than all diagnostic messages.
- `rustc_driver` (or some other crate we create for this purpose) has to directly depend on *everything* that has error messages.
  - It already transitively depended on all these crates.

#### Pending work
- [x] I don't know how to make `rustc_codegen_gcc`'s translated diagnostics work with this approach - because `rustc_driver` can't depend on that crate and so can't get its resources to provide to the diagnostic emission. I don't really know how the alternative codegen backends are actually wired up to the compiler at all.
- [x] Update `triagebot.toml` to track the moved FTL files.

r? `@compiler-errors`
cc #100717
2023-02-22 15:14:22 +00:00
..
bootstrap Rollup merge of #108264 - jchecahi:tool-testsuite-ignores-no-fail-fast, r=ozkanonur 2023-02-22 10:35:09 +01:00
ci Rollup merge of #107733 - Kobzol:opt-build-metrics, r=Mark-Simulacrum 2023-02-14 18:24:41 +01:00
doc Auto merge of #99679 - repnop:kernel-address-sanitizer, r=cuviper 2023-02-18 03:05:11 +00:00
etc Change src/etc/vscode_settings.json to always treat ./library as the sysroot source 2023-02-17 15:18:09 -06:00
librustdoc Auto merge of #103042 - davidtwco:translation-distributed-ftl, r=oli-obk 2023-02-22 15:14:22 +00:00
llvm-project@477e7285b1 Pull in more LLVM commits 2023-01-20 07:48:59 -08:00
rustdoc-json-types Rustdoc-Json: Report discriminant on all kinds of enum variant. 2023-01-01 19:48:26 +00:00
tools Auto merge of #103042 - davidtwco:translation-distributed-ftl, r=oli-obk 2023-02-22 15:14:22 +00:00
README.md Remove stale reference to the test suite location 2023-01-13 11:49:06 +00:00
stage0.json Download rustc component for rustfmt toolchain as well 2023-01-31 10:29:33 -05:00
version Bump to 1.69.0 2023-01-20 18:06:54 -05:00

This directory contains some source code for the Rust project, including:

  • The bootstrapping build system
  • Various submodules for tools, like cargo, tidy, etc.

For more information on how various parts of the compiler work, see the rustc dev guide.