diff options
| author | bors <bors@rust-lang.org> | 2021-03-15 15:24:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-03-15 15:24:54 +0000 |
| commit | 2ccf06302c08d7d4911aad40e66a9a3ee731c6f9 (patch) | |
| tree | 407134d0127b6a7d759851a2a032f5b172ca845a /compiler/rustc_interface/src | |
| parent | 7a7bbdb3abfa72ca717ef54ffc4f307d0d44de67 (diff) | |
| parent | 2816c110e01846dd737207f19ba3db11a20b887d (diff) | |
| download | rust-2ccf06302c08d7d4911aad40e66a9a3ee731c6f9.tar.gz rust-2ccf06302c08d7d4911aad40e66a9a3ee731c6f9.zip | |
Auto merge of #83149 - Dylan-DPC:rollup-ov70c5v, r=Dylan-DPC
Rollup of 10 pull requests
Successful merges:
- #82989 (Custom error on literal names from other languages)
- #83054 (Validate rustc_layout_scalar_valid_range_{start,end} attributes)
- #83098 (Find more invalid doc attributes)
- #83108 (Remove unused `opt_local_def_id_to_hir_id` function)
- #83110 (Fix typos in `library/core/src/ptr/mod.rs` and `library/std/src/sys_common/thread_local_dtor.rs`)
- #83113 (Minor refactoring in try_index_step)
- #83127 (Introduce `proc_macro_back_compat` lint, and emit for `time-macros-impl`)
- #83132 (Don't encode file information for span with a dummy location)
- #83141 (:arrow_up: rust-analyzer)
- #83144 (Introduce `rustc_interface::interface::Config::parse_sess_created` callback)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/interface.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs index 502e7155c2e..a1090ee316d 100644 --- a/compiler/rustc_interface/src/interface.rs +++ b/compiler/rustc_interface/src/interface.rs @@ -142,6 +142,9 @@ pub struct Config { pub lint_caps: FxHashMap<lint::LintId, lint::Level>, + /// This is a callback from the driver that is called when [`ParseSess`] is created. + pub parse_sess_created: Option<Box<dyn FnOnce(&mut ParseSess) + Send>>, + /// This is a callback from the driver that is called when we're registering lints; /// it is called during plugin registration when we have the LintStore in a non-shared state. /// @@ -166,7 +169,7 @@ pub struct Config { pub fn create_compiler_and_run<R>(config: Config, f: impl FnOnce(&Compiler) -> R) -> R { let registry = &config.registry; - let (sess, codegen_backend) = util::create_session( + let (mut sess, codegen_backend) = util::create_session( config.opts, config.crate_cfg, config.diagnostic_output, @@ -177,6 +180,14 @@ pub fn create_compiler_and_run<R>(config: Config, f: impl FnOnce(&Compiler) -> R registry.clone(), ); + if let Some(parse_sess_created) = config.parse_sess_created { + parse_sess_created( + &mut Lrc::get_mut(&mut sess) + .expect("create_session() should never share the returned session") + .parse_sess, + ); + } + let compiler = Compiler { sess, codegen_backend, |
