Skip to content

Commit 2572591

Browse files
committed
lint: add bad opt access internal lint
Some command-line options accessible through `sess.opts` are best accessed through wrapper functions on `Session`, `TyCtxt` or otherwise, rather than through field access on the option struct in the `Session`. Adds a new lint which triggers on those options that should be accessed through a wrapper function so that this is prohibited. Options are annotated with a new attribute `rustc_lint_opt_deny_field_access` which can specify the error message (i.e. "use this other function instead") to be emitted. A simpler alternative would be to simply rename the options in the option type so that it is clear they should not be used, however this doesn't prevent uses, just discourages them. Another alternative would be to make the option fields private, and adding accessor functions on the option types, however the wrapper functions sometimes rely on additional state from `Session` or `TyCtxt` which wouldn't be available in an function on the option type, so the accessor would simply make the field available and its use would be discouraged too. Signed-off-by: David Wood <[email protected]>
1 parent 6654aab commit 2572591

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/driver.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ struct ClippyCallbacks {
9494
}
9595

9696
impl rustc_driver::Callbacks for ClippyCallbacks {
97+
// JUSTIFICATION: necessary in clippy driver to set `mir_opt_level`
98+
#[cfg_attr(not(bootstrap), allow(rustc::bad_opt_access))]
9799
fn config(&mut self, config: &mut interface::Config) {
98100
let previous = config.register_lints.take();
99101
let clippy_args_var = self.clippy_args_var.take();

0 commit comments

Comments
 (0)