diff options
| author | bors <bors@rust-lang.org> | 2021-09-27 18:21:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-09-27 18:21:14 +0000 |
| commit | 98c8619502093f34ca82f8f26ccf32e753924440 (patch) | |
| tree | b82a6ad2a09d4e6861de78dc9ed8c94aa07b529a /compiler/rustc_codegen_llvm/src | |
| parent | 2b6ed3b675475abc01ce7e68bb75b457f0c85684 (diff) | |
| parent | 1e15bbe55214e5b9c56fae5809d387a12c98fd6e (diff) | |
| download | rust-98c8619502093f34ca82f8f26ccf32e753924440.tar.gz rust-98c8619502093f34ca82f8f26ccf32e753924440.zip | |
Auto merge of #89214 - smoelius:register_tool, r=petrochenkov
Pass real crate-level attributes to `pre_expansion_lint` The PR concerns the unstable feature `register_tool` (#66079). The feature's implementation requires the attributes of the crate being compiled, so that when attributes like `allow(foo::bar)` are encountered, it can be verified that `register_tool(foo)` appears in the crate root. However, the crate's attributes are not readily available during early lint passes. Specifically, on this line, `krate.attrs` appears to be the attributes of the current source file, not the attributes of the whole crate: https://github.com/rust-lang/rust/blob/bf642323d621dcefeef1d8ab4711aae36e357615/compiler/rustc_lint/src/context.rs#L815 Consequently, "unknown tool" errors were being produced when `allow(foo::bar)` appeared in a submodule, even though `register_tool(foo)` appeared in the crate root. EDITED: The proposed fix is to obtain the real crate-level attributes in `configure_and_expand` and pass them to `pre_expansion_lint`. (See `@petrochenkov's` [comment](https://github.com/rust-lang/rust/pull/89214#issuecomment-926927072) below.) The original "prosed fix" text follows. --- The proposed fix is to add an `error_on_unknown_tool` flag to `LintLevelsBuilder`. The flag controls whether "unknown tool" errors are emitted. The flag is set during late passes, but not earlier. More specifically, this PR contains two commits: * The first adds a `known-tool-in-submodule` UI test that does not currently pass. * The second adds the `error_on_unknown_tool` flag. The new test passes with the addition of this flag. This change has the added benefit of eliminating some errors that were duplicated in existing tests. To the reviewer: please check that I implemented the UI test correctly.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions
